This repository has been archived on 2026-07-30. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
raspi/docker-compose.yml
T
2026-07-13 15:13:17 +10:00

230 lines
6.1 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
- ${DATA_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:
- ${DATA_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:
- ${DATA_ROOT}/crowdsec/logs:/logs:ro
- ${DATA_ROOT}/crowdsec/data:/var/lib/crowdsec/data
# - ${PROJECT_ROOT}/crowdsec/config:/etc/crowdsec
- ${DATA_ROOT}/crowdsec/acquis.d:/etc/crowdsec/acquis.d
- ${PROJECT_ROOT}/crowdsec/profiles.yaml:/etc/crowdsec/profiles.yaml
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
AUTH: 1
EXEC: 1
SYSTEM: 1
SERVICES: 1
SWARM: 1
NODES: 1
SECRETS: 1
TASKS: 1
VERSION: 1
VOLUMES: 1
ALLOW_START: 1 # for better security, set to 0
ALLOW_STOP: 1 # for better security, set to 0
ALLOW_RESTARTS: 1 # for better security, set to 0
BUILD: 0
COMMIT: 0
CONFIGS: 0
DELETE: 1
DISABLE_IPV6: 0
PLUGINS: 0
SESSION: 0
volumes:
- /var/run/docker.sock:/var/run/docker.sock:ro
cap_drop:
- ALL
security_opt:
- no-new-privileges:true
networks:
- proxy
ports:
- 2375:2375
beszel-agent:
profiles: ["all","beszel"]
image: henrygd/beszel-agent:latest
container_name: beszel-agent
restart: always
network_mode: host
volumes:
- ${DATA_ROOT}/beszel/agent:/var/lib/beszel-agent
- ${DATA_ROOT}/beszel/socket:/beszel_socket
# - /var/run/docker.sock:/var/run/docker.sock:ro
environment:
LISTEN: /beszel_socket/beszel.sock
HUB_URL: http://docker.tail13f623.ts.net:8090
KEY: 'ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIFPR9kwtC4TAeTRu46A7+opZsYpxqkRJ+x/ZyB2GWCeG'
TOKEN: 637a3438-d473-4fbb-88d7-edcc4dfa024a
DOCKER_HOST: tcp://localhost:2375
healthcheck:
test: ['CMD', '/agent', 'health']
interval: 120s
# networks:
# - proxy
networks:
proxy:
name: proxy
driver: bridge
ipam:
config:
- subnet: 172.21.0.0/16