server-setup/docker-compose.yml
2026-08-14 18:08:07 -07:00

110 lines
3 KiB
YAML

version: "3"
services:
watchtower:
image: containrrr/watchtower
restart: always
command: --label-enable
volumes:
- /var/run/docker.sock:/var/run/docker.sock
nginx:
image: nginx:bookworm
restart: always
volumes:
- ./nginx_templates:/etc/nginx/templates:ro
- /etc/letsencrypt:/etc/letsencrypt:ro
- /var/www/.well-known/acme-challenge:/var/www/.well-known/acme-challenge:ro
- /var/www/html:/var/www/html:ro
- /etc/ssl/certs:/etc/ssl/certs:ro
- /usr/local/share/ca-certificates:/usr/local/share/ca-certificates:ro
- /var/discourse/shared/standalone/:/forum
ports:
- "80:80"
- "443:443"
environment:
- BASE_DOMAIN_NAME=${BASE_DOMAIN_NAME}
- ALT_BASE_DOMAIN_NAME=${ALT_BASE_DOMAIN_NAME}
- NGINX_ENVSUBST_OUTPUT_DIR=/etc/nginx
- NGINX_ENVSUBST_FILTER=^(BASE_DOMAIN_NAME|ALT_BASE_DOMAIN_NAME)$$
links:
- anubis
- mail
networks:
- net_with_ipv6
labels:
- "com.centurylinklabs.watchtower.enable=true"
forgejo:
image: codeberg.org/forgejo/forgejo:11
restart: always
environment:
- USER_UID=1000
- USER_GID=1000
volumes:
- /var/lib/forgejo/:/data/git
- /var/lib/forgejo-data/:/data/
- /etc/forgejo/:/data/gitea/conf
- /var/www/html:/var/www/html
- /etc/ssl/certs:/etc/ssl/certs:ro
- /usr/local/share/ca-certificates:/usr/local/share/ca-certificates:ro
expose:
- '3000'
ports:
- "127.0.0.1:2222:22"
links:
- mail:mail.${BASE_DOMAIN_NAME}
networks:
- net_with_ipv6
labels:
- "com.centurylinklabs.watchtower.enable=true"
mail:
image: stalwartlabs/stalwart:v0.13.2
restart: always
expose:
- '80'
ports:
- '25:25'
- '465:465'
- '587:587'
- '993:993'
- '995:995'
volumes:
- /var/lib/stalwart-mail:/opt/stalwart
- /etc/letsencrypt:/etc/letsencrypt:ro
- /etc/ssl/certs:/etc/ssl/certs:ro
- /usr/local/share/ca-certificates:/usr/local/share/ca-certificates:ro
networks:
- net_with_ipv6
# labels: # enable when stalwart has a stable release channel
# - "com.centurylinklabs.watchtower.enable=true"
anubis:
image: ghcr.io/techarohq/anubis:latest
environment:
BIND: ":80"
DIFFICULTY: "4"
TARGET: "http://forgejo:3000"
POLICY_FNAME: "/data/cfg/botPolicy.yaml"
PUBLIC_URL: "https://git.${BASE_DOMAIN_NAME}"
COOKIE_DOMAIN: "git.${BASE_DOMAIN_NAME}"
COOKIE_SAME_SITE: Strict
REDIRECT_DOMAINS: "git.${BASE_DOMAIN_NAME}"
WEBMASTER_EMAIL: "postmaster@${BASE_DOMAIN_NAME}"
healthcheck:
test: ["CMD", "anubis", "--healthcheck"]
interval: 5s
timeout: 30s
retries: 5
start_period: 500ms
expose:
- '80'
volumes:
- "./botPolicy.yaml:/data/cfg/botPolicy.yaml:ro"
links:
- forgejo
networks:
- net_with_ipv6
labels:
- "com.centurylinklabs.watchtower.enable=true"
networks:
net_with_ipv6:
attachable: true
enable_ipv6: true