Files
infra/docker-compose.core.yml
qpismont ede28f6d12 Extend monitoring and update portfolio
Add hostmetrics receiver and OTel Collector telemetry, and move
Alertmanager and Blackbox scraping to the collector. Raise collector
memory limits, restrict Blackbox to HTTP 200, and add collector and
Caddy down alerts with inhibition. Update portfolio title and copy.
2026-08-05 19:49:18 +00:00

175 lines
5.6 KiB
YAML

version: "3"
services:
reverse_caddy:
image: caddy:2.11-alpine
ports:
- "80:80"
- "443:443"
- "443:443/udp"
configs:
- source: caddy_config
target: /etc/caddy/Caddyfile
- source: caddy_portfolio_html
target: /www/html/index.html
volumes:
- reversecaddydata:/data
- reversecaddyconfig:/config
networks:
- reverse_network
- prometheus_network
woodpecker_server:
image: woodpeckerci/woodpecker-server:v3.17-alpine
volumes:
- woodpeckerdata:/var/lib/woodpecker/
entrypoint: /bin/sh -c "export WOODPECKER_GITEA_CLIENT=$$(cat /run/secrets/woodpecker_gitea_client) && export WOODPECKER_GITEA_SECRET=$$(cat /run/secrets/woodpecker_gitea_secret) && export WOODPECKER_AGENT_SECRET=$$(cat /run/secrets/woodpecker_agent_secret) && /bin/woodpecker-server"
environment:
WOODPECKER_ADMIN: qpismont
WOODPECKER_HOST: https://woodpecker.qpismont.fr
WOODPECKER_GITEA: "true"
WOODPECKER_GITEA_URL: https://gitea.qpismont.fr
networks:
- reverse_network
secrets:
- woodpecker_agent_secret
- woodpecker_gitea_client
- woodpecker_gitea_secret
woodpecker_agent:
image: woodpeckerci/woodpecker-agent:v3.17-alpine
volumes:
- /var/run/docker.sock:/var/run/docker.sock
entrypoint: /bin/sh -c "export WOODPECKER_AGENT_SECRET=$$(cat /run/secrets/woodpecker_agent_secret) && /bin/woodpecker-agent"
environment:
WOODPECKER_SERVER: woodpecker_server:9000
WOODPECKER_MAX_WORKFLOWS: 1
WOODPECKER_LIMIT_CPU_SET: 1
networks:
- reverse_network
secrets:
- woodpecker_agent_secret
gitea:
image: docker.gitea.com/gitea:1.27.1
environment:
- USER_UID=1000
- USER_GID=1000
restart: always
volumes:
- giteadata:/data
- /etc/timezone:/etc/timezone:ro
- /etc/localtime:/etc/localtime:ro
networks:
- reverse_network
herald:
image: tintounn/herald:1.1
entrypoint:
- /bin/sh
- -c
- >-
export GITEA_TOKEN=$$(cat /run/secrets/herald_gitea_token) &&
export OPEN_ROUTER_API_KEY=$$(cat /run/secrets/herald_openrouter_token) &&
export WEBHOOK_SIG_HEADER_SECRET=$$(cat /run/secrets/herald_gitea_header_secret) &&
export SENTRY_DSN=$$(cat /run/secrets/herald_sentry_dsn) &&
/app/herald
networks:
- reverse_network
- prometheus_network
secrets:
- herald_gitea_token
- herald_openrouter_token
- herald_gitea_header_secret
- herald_sentry_dsn
environment:
HTTP_PORT: 3000
BOT_MAX_CONCURRENT: 5
GITEA_URL: http://gitea:3000
GITEA_TIMEOUT: 60
OPEN_ROUTER_MODEL: deepseek/deepseek-v4-flash
OPEN_ROUTER_TIMEOUT: 600
METRICS_BIND_ADDR: 0.0.0.0:9100
wireguard_server:
image: linuxserver/wireguard
cap_add:
- NET_ADMIN
- SYS_MODULE
configs:
- source: wireguard_coredns_config
target: /coredns-source/Corefile
entrypoint:
- /bin/sh
- -c
- >-
mkdir -p /config/coredns &&
cp /coredns-source/Corefile /config/coredns/Corefile &&
exec /init
environment:
PUID: 1000
PGID: 1000
TZ: Europe/Paris
SERVEURURL: wireguard.qpismont.fr
SERVERPORT: 51820
PEERS: 1
PEERDNS: auto
INTERNAL_SUBNET: 10.13.13.0/24
volumes:
- /home/user/wireguard-config:/config
- /lib/modules:/lib/modules
ports:
- 51820:51820/udp
sysctls:
- net.ipv4.conf.all.src_valid_mark=1
networks:
- wireguard_network
secrets:
woodpecker_agent_secret:
name: woodpecker_agent_secret_${DATETIME}
file: ./secrets/woodpecker_agent_secret
woodpecker_gitea_secret:
name: woodpecker_gitea_secret_${DATETIME}
file: ./secrets/woodpecker_gitea_secret
woodpecker_gitea_client:
name: woodpecker_gitea_client_${DATETIME}
file: ./secrets/woodpecker_gitea_client
herald_gitea_token:
name: herald_gitea_token_${DATETIME}
file: ./secrets/herald/herald_gitea_token
herald_openrouter_token:
name: herald_openrouter_token_${DATETIME}
file: ./secrets/herald/herald_openrouter_token
herald_gitea_header_secret:
name: herald_gitea_header_secret_${DATETIME}
file: ./secrets/herald/herald_gitea_header_secret
herald_sentry_dsn:
name: herald_sentry_dsn_${DATETIME}
file: ./secrets/herald/herald_sentry_dsn
configs:
caddy_config:
name: caddy_config_${DATETIME}
file: ./Caddyfile
wireguard_coredns_config:
name: wireguard_coredns_config_${DATETIME}
file: ./wireguard/CoreDns
caddy_portfolio_html:
name: caddy_portfolio_html_${DATETIME}
file: ./portfolio/index.html
volumes:
giteadata:
woodpeckerdata:
reversecaddyconfig:
reversecaddydata:
networks:
reverse_network:
external: true
wireguard_network:
external: true
prometheus_network:
external: true