Files
raspi/docker-compose.yml
T
git eaa27462a1 modified: docker-compose.yml
modified:   traefik/dynamic.yml
	modified:   traefik/traefik.yml
2026-04-14 11:35:05 +10:00

188 lines
4.8 KiB
YAML

version: "3.9"
services:
traefik:
profiles: ["all"]
image: traefik:3
container_name: traefik
restart: always
depends_on:
- docker-socket-proxy
# environment:
# TRAEFIK_PROVIDERS_DOCKER_ENDPOINT: ${DOCKER_SOCKET_PROXY_HOST}
ports:
- "80:80"
- "443:443"
- "8080:8080"
volumes:
# - /var/run/docker.sock:/var/run/docker.sock:ro
- ${PROJECT_ROOT}/traefik/letsencrypt:/letsencrypt
- ${PROJECT_ROOT}/traefik/traefik.yml:/etc/traefik/traefik.yml:ro
- ${PROJECT_ROOT}/traefik/dynamic.yml:/etc/traefik/dynamic.yml:ro
- ${PROJECT_ROOT}/traefik/certs:/etc/traefik/certs:ro
healthcheck:
test: traefik healthcheck --ping
networks:
- proxy
uptime-kuma:
profiles: ["all"]
image: louislam/uptime-kuma
container_name: uptime-kuma
restart: always
depends_on:
- traefik
- docker-socket-proxy
environment:
DOCKER_HOST: ${DOCKER_SOCKET_PROXY_HOST}
volumes:
- ${PROJECT_ROOT}/uptime-kuma:/app/data
# - /var/run/docker.sock:/var/run/docker.sock
networks:
- proxy
labels:
- traefik.enable=true
# Router
- traefik.http.routers.kuma.rule=Host(`kuma.lan.ddnsgeek.com`)
- traefik.http.routers.kuma.entrypoints=websecure
- traefik.http.routers.kuma.tls=true
- traefik.http.routers.kuma.tls.certresolver=le
- traefik.http.routers.kuma.tls.options=mtls-private-admin@file
# Service -> container port
- traefik.http.services.kuma.loadbalancer.server.port=3001
# - traefik.http.routers.kuma.middlewares=default-chain@file
# ports:
# - 8080:3001
portainer-agent:
profiles: ["all"]
image: portainer/agent
restart: always
depends_on:
- docker-socket-proxy
ports:
- 9001:9001
container_name: portainer-agent
environment:
DOCKER_HOST: ${DOCKER_SOCKET_PROXY_HOST}
volumes:
# - /var/run/docker.sock:/var/run/docker.sock
- /var/lib/docker/volumes:/var/lib/docker/volumes
- /:/host
networks:
- proxy
crowdsec:
profiles: ["all"]
image: crowdsecurity/crowdsec:latest
# build: ./crowdsec
container_name: crowdsec
restart: always
environment:
- COLLECTIONS=${CROWDSEC_COLLECTIONS}
volumes:
- ${PROJECT_ROOT}/data/logs:/logs:ro
- ${PROJECT_ROOT}/crowdsec/data:/var/lib/crowdsec/data
- ${PROJECT_ROOT}/crowdsec/config:/etc/crowdsec
networks:
- proxy
docker-update-exporter:
profiles: ["all"]
build: ${REMOTE_PROJECT_ROOT}/docker-exporter
container_name: docker-update-exporter
volumes:
# - /var/run/docker.sock:/var/run/docker.sock
- ${PROJECT_ROOT}:/compose:ro
# - ${PROJECT_ROOT}/docker-compose.yml:/compose/docker-compose.yml:ro
- ${REMOTE_PROJECT_ROOT}/docker-exporter/data:/data:rw
- ${PROJECT_ROOT}/.docker/config.json:/root/.docker/config.json:ro
environment:
LOG_LEVEL: ${DOCKER_EXPORTER_LOG_LEVEL}
DOCKER_HOST: ${DOCKER_SOCKET_PROXY_HOST}
ports:
- "9105:9105"
restart: unless-stopped
depends_on:
- docker-socket-proxy
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
networks:
- proxy
healthcheck:
test: ["CMD", "python", "-c", "import urllib.request; urllib.request.urlopen('http://localhost:9105/metrics')"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
telegraf:
profiles: ["monitoring","all","prometheus"]
image: telegraf:latest
# group_add:
# - "123"
# privileged: true
container_name: telegraf
restart: unless-stopped
depends_on:
- docker-socket-proxy
# cap_drop:
# - ALL
security_opt:
- no-new-privileges:true
volumes:
# - /var/run/docker.sock:/var/run/docker.sock:ro
- ${PROJECT_ROOT}/telegraf.conf:/etc/telegraf/telegraf.conf:ro
networks:
# - edge
- proxy
ports:
- 9273:9273
healthcheck:
test: ["CMD-SHELL", "curl -f http://localhost:9273/metrics || exit 1"]
interval: 30s
timeout: 5s
retries: 3
start_period: 10s
docker-socket-proxy:
profiles: ["monitoring","all","prometheus","prometheus-exporters"]
image: tecnativa/docker-socket-proxy:latest
container_name: docker-socket-proxy
restart: unless-stopped
environment:
LOG_LEVEL: ${DOCKER_SOCKET_PROXY_LOG_LEVEL}
DISTRIBUTION: 1
CONTAINERS: 1
EVENTS: 1
IMAGES: 1
INFO: 1
NETWORKS: 1
PING: 1
POST: 1
SERVICES: 1
TASKS: 1
VERSION: 1
VOLUMES: 1
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
networks:
- proxy
networks:
proxy:
name: proxy
driver: bridge
ipam:
config:
- subnet: 172.21.0.0/16