95 lines
2.7 KiB
YAML
95 lines
2.7 KiB
YAML
services:
|
|
reverse_proxy:
|
|
image: caddy:latest
|
|
container_name: reverse_proxy
|
|
ports:
|
|
- "80:80"
|
|
- "443:443"
|
|
volumes:
|
|
- ./service_data/reverse_proxy:/etc/caddy
|
|
- caddy-data:/data
|
|
environment:
|
|
- DOMAIN_NAME=${DOMAIN_NAME}
|
|
- MAIL_SUBDOMAIN=${MAIL_SUBDOMAIN}
|
|
- WEBMAIL_SUBDOMAIN=${WEBMAIL_SUBDOMAIN}
|
|
networks:
|
|
- proxy-net
|
|
|
|
email_backend:
|
|
image: stalwartlabs/stalwart:latest
|
|
container_name: email_backend
|
|
restart: unless-stopped
|
|
volumes:
|
|
- stalwart-etc:/etc/stalwart
|
|
- stalwart-data:/var/lib/stalwart
|
|
- stalwart-certs:/certs:ro
|
|
environment:
|
|
- STALWART_PUBLIC_URL=https://${MAIL_SUBDOMAIN}.${DOMAIN_NAME}
|
|
ports:
|
|
- "25:25"
|
|
- "465:465"
|
|
- "993:993"
|
|
- "4190:4190"
|
|
networks:
|
|
- proxy-net
|
|
|
|
email_frontend:
|
|
image: ghcr.io/bulwarkmail/webmail:latest
|
|
container_name: email_frontend
|
|
restart: unless-stopped
|
|
environment:
|
|
- JMAP_SERVER_URL=https://${MAIL_SUBDOMAIN}.${DOMAIN_NAME}
|
|
- SESSION_SECRET=${BULWARK_SECRET}
|
|
- OAUTH_ENABLED=true
|
|
- OAUTH_ONLY=true
|
|
- OAUTH_CLIENT_ID=bulwark-webmail
|
|
- OAUTH_CLIENT_SECRET=${OAUTH_SECRET}
|
|
- AUTO_SSO_ENABLED=true
|
|
volumes:
|
|
- bulwark-config:/app/data/admin
|
|
- bulwark-state:/app/data/admin-state
|
|
networks:
|
|
- proxy-net
|
|
|
|
cert_sync:
|
|
image: alpine:latest
|
|
container_name: cert_sync
|
|
restart: unless-stopped
|
|
depends_on:
|
|
- reverse_proxy
|
|
volumes:
|
|
- caddy-data:/caddy-data:ro
|
|
- stalwart-certs:/stalwart-certs
|
|
- ./service_data/cert_sync:/data
|
|
command: sh /data/sync-certs.sh
|
|
|
|
backup:
|
|
image: mazzolino/restic
|
|
container_name: backup
|
|
restart: unless-stopped
|
|
hostname: ${RESTIC_HOSTNAME}
|
|
profiles:
|
|
- backup-enabled
|
|
environment:
|
|
- BACKUP_CRON="0 2 * * *"
|
|
- RUN_ON_STARTUP=true
|
|
- RESTIC_REPOSITORY=${RESTIC_REPOSITORY}
|
|
- RESTIC_PASSWORD=${RESTIC_PASSWORD}
|
|
- RESTIC_FORGET_ARGS=--keep-last 7 --keep-daily 7 --keep-weekly 4 --prune
|
|
volumes:
|
|
- ~/.ssh:/run/secrets/.ssh:ro
|
|
- /var/lib/docker/volumes:/data/volumes:ro
|
|
|
|
volumes:
|
|
stalwart-etc:
|
|
stalwart-data:
|
|
stalwart-certs:
|
|
caddy-data:
|
|
bulwark-config:
|
|
bulwark-state:
|
|
|
|
|
|
networks:
|
|
proxy-net:
|
|
external: true
|