Latest files
This commit is contained in:
0
infra/Makefile
Normal file
0
infra/Makefile
Normal file
63
infra/docker/monitoring/docker-compose.yml
Normal file
63
infra/docker/monitoring/docker-compose.yml
Normal file
@ -0,0 +1,63 @@
|
||||
services:
|
||||
uptime-kuma:
|
||||
image: louislam/uptime-kuma:${UPTIME_KUMA_VERSION}
|
||||
container_name: uptime-kuma
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- uptime-kuma-data:/app/data
|
||||
ports:
|
||||
- "${UPTIME_KUMA_PORT}:3001"
|
||||
|
||||
prometheus:
|
||||
image: prom/prometheus:${PROMETHEUS_VERSION}
|
||||
container_name: prometheus
|
||||
restart: unless-stopped
|
||||
volumes:
|
||||
- ./prometheus.yml:/etc/prometheus/prometheus.yml:ro
|
||||
- prometheus-data:/prometheus
|
||||
command:
|
||||
- "--config.file=/etc/prometheus/prometheus.yml"
|
||||
- "--storage.tsdb.retention.time=${PROM_RETENTION}"
|
||||
ports:
|
||||
- "${PROMETHEUS_PORT}:9090"
|
||||
|
||||
grafana:
|
||||
image: grafana/grafana:${GRAFANA_VERSION}
|
||||
container_name: grafana
|
||||
restart: unless-stopped
|
||||
environment:
|
||||
- GF_SECURITY_ADMIN_USER=${GRAFANA_USER}
|
||||
- GF_SECURITY_ADMIN_PASSWORD=${GRAFANA_PASSWORD}
|
||||
volumes:
|
||||
- grafana-data:/var/lib/grafana
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.routers.grafana.rule=Host(`${GRAFANA_HOST}`)"
|
||||
- "traefik.http.routers.grafana.entrypoints=${TRAEFIK_ENTRYPOINT}"
|
||||
- "traefik.http.routers.grafana.tls=true"
|
||||
- "traefik.http.routers.grafana.tls.certresolver=${TRAEFIK_RESOLVER}"
|
||||
- "traefik.http.services.grafana.loadbalancer.server.port=3000"
|
||||
networks:
|
||||
- frontend
|
||||
- default
|
||||
|
||||
node-exporter:
|
||||
image: quay.io/prometheus/node-exporter:${NODE_EXPORTER_VERSION}
|
||||
container_name: node-exporter
|
||||
restart: unless-stopped
|
||||
network_mode: host
|
||||
pid: host
|
||||
command:
|
||||
- '--path.rootfs=/host'
|
||||
volumes:
|
||||
- '/:/host:ro,rslave'
|
||||
|
||||
volumes:
|
||||
uptime-kuma-data:
|
||||
prometheus-data:
|
||||
grafana-data:
|
||||
|
||||
networks:
|
||||
frontend:
|
||||
external: true
|
||||
|
||||
38
infra/docker/traefik/docker-compose.yml
Normal file
38
infra/docker/traefik/docker-compose.yml
Normal file
@ -0,0 +1,38 @@
|
||||
services:
|
||||
traefik:
|
||||
image: traefik:${TRAEFIK_VERSION}
|
||||
container_name: traefik
|
||||
restart: unless-stopped
|
||||
security_opt:
|
||||
- no-new-privileges:true
|
||||
cap_drop:
|
||||
- ALL
|
||||
environment:
|
||||
- TZ=${TZ}
|
||||
- CF_DNS_API_TOKEN=${CF_DNS_API_TOKEN}
|
||||
labels:
|
||||
- "traefik.enable=true"
|
||||
- "traefik.http.middlewares.auth.basicauth.users=${BASIC_AUTH}"
|
||||
- "traefik.http.routers.traefik.rule=Host(`${TRAEFIK_HOST}`)"
|
||||
- "traefik.http.routers.traefik.entrypoints=${TRAEFIK_ENTRYPOINT}"
|
||||
- "traefik.http.routers.traefik.middlewares=auth"
|
||||
- "traefik.http.routers.traefik.tls=true"
|
||||
- "traefik.http.routers.traefik.tls.certresolver=${TRAEFIK_RESOLVER}"
|
||||
- "traefik.http.services.traefik.loadbalancer.server.port=8080"
|
||||
networks:
|
||||
- frontend
|
||||
ports:
|
||||
- "${HTTP_PORT}:80"
|
||||
- "${HTTPS_PORT}:443"
|
||||
- "${TRAEFIK_DASHBOARD_BIND}:8080"
|
||||
volumes:
|
||||
- /var/run/docker.sock:/var/run/docker.sock:ro
|
||||
- ${TRAEFIK_CONFIG}:/etc/traefik/traefik.yml:ro
|
||||
- ${TRAEFIK_MIDDLEWARES}:/middlewares.yml:ro
|
||||
- ${ACME_FILE}:/acme.json
|
||||
- ${LETSENCRYPT_DIR}:/letsencrypt
|
||||
|
||||
networks:
|
||||
frontend:
|
||||
external: true
|
||||
|
||||
35
infra/env/example.env
vendored
Normal file
35
infra/env/example.env
vendored
Normal file
@ -0,0 +1,35 @@
|
||||
TZ=America/New_York
|
||||
|
||||
# Versions
|
||||
TRAEFIK_VERSION=v3.6
|
||||
GRAFANA_VERSION=latest
|
||||
PROMETHEUS_VERSION=latest
|
||||
UPTIME_KUMA_VERSION=1
|
||||
NODE_EXPORTER_VERSION=latest
|
||||
|
||||
# Ports
|
||||
HTTP_PORT=80
|
||||
HTTPS_PORT=443
|
||||
TRAEFIK_DASHBOARD_BIND=10.77.20.6:8080
|
||||
PROMETHEUS_PORT=9090
|
||||
UPTIME_KUMA_PORT=3001
|
||||
|
||||
# Domains
|
||||
TRAEFIK_HOST=traefik.vpn.savant.io
|
||||
GRAFANA_HOST=grafana.vpn.savant.io
|
||||
|
||||
# Auth
|
||||
BASIC_AUTH=user:hashedpassword
|
||||
GRAFANA_USER=admin
|
||||
GRAFANA_PASSWORD=change_me
|
||||
|
||||
# Traefik
|
||||
TRAEFIK_ENTRYPOINT=websecure
|
||||
TRAEFIK_RESOLVER=cloudflare
|
||||
|
||||
# Paths
|
||||
TRAEFIK_CONFIG=/opt/traefik/traefik.yml
|
||||
TRAEFIK_MIDDLEWARES=/opt/traefik/middlewares.yml
|
||||
ACME_FILE=/opt/traefik/acme.json
|
||||
LETSENCRYPT_DIR=/opt/traefik/letsencrypt
|
||||
|
||||
Reference in New Issue
Block a user