Latest files
This commit is contained in:
66
docker-compose.yml
Normal file
66
docker-compose.yml
Normal file
@ -0,0 +1,66 @@
|
|||||||
|
services:
|
||||||
|
uptime-kuma:
|
||||||
|
image: louislam/uptime-kuma:1
|
||||||
|
container_name: uptime-kuma
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- uptime-kuma-data:/app/data
|
||||||
|
ports:
|
||||||
|
- "3001:3001"
|
||||||
|
|
||||||
|
prometheus:
|
||||||
|
image: prom/prometheus:latest
|
||||||
|
container_name: prometheus
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- ./prometheus:/etc/prometheus
|
||||||
|
- prometheus-data:/prometheus
|
||||||
|
command:
|
||||||
|
- "--config.file=/etc/prometheus/prometheus.yml"
|
||||||
|
- "--storage.tsdb.retention.time=15d"
|
||||||
|
ports:
|
||||||
|
- "9090:9090"
|
||||||
|
|
||||||
|
grafana:
|
||||||
|
image: grafana/grafana:latest
|
||||||
|
container_name: grafana
|
||||||
|
restart: unless-stopped
|
||||||
|
environment:
|
||||||
|
- GF_SECURITY_ADMIN_USER=admin
|
||||||
|
- GF_SECURITY_ADMIN_PASSWORD=admin # change immediately
|
||||||
|
volumes:
|
||||||
|
- grafana-data:/var/lib/grafana
|
||||||
|
# ports:
|
||||||
|
# - "3000:3000"
|
||||||
|
labels:
|
||||||
|
- "traefik.enable=true"
|
||||||
|
- "traefik.http.routers.grafana.rule=Host(`grafana.vpn.savant.io`)"
|
||||||
|
- "traefik.http.routers.grafana.entrypoints=websecure"
|
||||||
|
- "traefik.http.routers.grafana.tls=true"
|
||||||
|
- "traefik.http.routers.grafana.tls.certresolver=cloudflare"
|
||||||
|
- "traefik.http.services.grafana.loadbalancer.server.port=3000"
|
||||||
|
networks:
|
||||||
|
- frontend
|
||||||
|
- default
|
||||||
|
|
||||||
|
|
||||||
|
node-exporter:
|
||||||
|
image: quay.io/prometheus/node-exporter:latest
|
||||||
|
container_name: node-exporter
|
||||||
|
command:
|
||||||
|
- '--path.rootfs=/host'
|
||||||
|
network_mode: host
|
||||||
|
pid: host
|
||||||
|
restart: unless-stopped
|
||||||
|
volumes:
|
||||||
|
- '/:/host:ro,rslave'
|
||||||
|
|
||||||
|
volumes:
|
||||||
|
uptime-kuma-data:
|
||||||
|
prometheus-data:
|
||||||
|
grafana-data:
|
||||||
|
|
||||||
|
networks:
|
||||||
|
frontend:
|
||||||
|
external: true
|
||||||
|
|
||||||
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
|
||||||
|
|
||||||
12
prometheus/prometheus.yml
Normal file
12
prometheus/prometheus.yml
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
global:
|
||||||
|
scrape_interval: 15s
|
||||||
|
|
||||||
|
scrape_configs:
|
||||||
|
- job_name: "prometheus"
|
||||||
|
static_configs:
|
||||||
|
- targets: ["localhost:9090"]
|
||||||
|
|
||||||
|
- job_name: "node-exporter"
|
||||||
|
static_configs:
|
||||||
|
- targets: ["10.77.20.6:9100"]
|
||||||
|
|
||||||
Reference in New Issue
Block a user