This commit is contained in:
2025-12-01 22:02:12 +01:00
parent 59ef2785aa
commit 6ce28fee3d

View File

@@ -1,215 +1,256 @@
networks:
default:
driver: overlay
clamav:
driver: overlay
fts_attachments:
driver: overlay
internal: true
oletools:
driver: overlay
internal: true
radicale:
driver: overlay
webmail:
driver: overlay
services: services:
admin: redis:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}admin:${MAILU_VERSION:-2024.06} image: redis:alpine
env_file: stack.env
depends_on:
- redis
- resolver
dns:
- 192.168.205.254
volumes:
- /share/docker_data/mailu3/data:/data
- /share/docker_data/mailu3/dkim:/dkim
deploy: deploy:
replicas: 1
restart_policy: restart_policy:
condition: any condition: any
placement: placement:
constraints: [node.role == manager] constraints:
- node.role == manager
antispam: labels:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}rspamd:${MAILU_VERSION:-2024.06} wud.watch: "true"
env_file: stack.env wud.watch.digest: "true"
depends_on: volumes:
- front - redis_data:/data
- redis
- oletools
- antivirus
- resolver
dns:
- 192.168.205.254
networks: networks:
- default - default
- oletools
- clamav
volumes:
- /share/docker_data/mailu3/filter:/var/lib/rspamd
- /share/docker_data/mailu3/overrides/rspamd:/overrides:ro
deploy:
restart_policy:
condition: any
placement:
constraints: [node.role == manager]
antivirus:
image: ${DOCKER_REGISTRY:-}clamav/clamav-debian:1.2.0-6
networks:
- clamav
volumes:
- /share/docker_data/mailu3/filter/clamav:/var/lib/clamav
deploy:
restart_policy:
condition: any
placement:
constraints: [node.role == manager]
fetchmail:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}fetchmail:${MAILU_VERSION:-2024.06}
env_file: stack.env
depends_on:
- admin
- smtp
- imap
- resolver
dns: dns:
- 192.168.205.254 - 192.168.203.254
volumes:
- /share/docker_data/mailu3/data/fetchmail:/data resolver:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}unbound:${MAILU_VERSION:-2024.06}
env_file: mailu.env
deploy: deploy:
replicas: 1
restart_policy: restart_policy:
condition: any condition: any
placement: labels:
constraints: [node.role == manager] wud.watch: "true"
wud.watch.digest: "true"
networks:
default:
ipv4_address: 192.168.203.254
front: front:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-2024.06} image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-2024.06}
env_file: stack.env env_file: mailu.env
dns: deploy:
- 192.168.205.254 replicas: 1
restart_policy:
condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
homepage.container: mailu3-front-1
homepage.description: eMail server
homepage.group: Utilities
homepage.href: https://mail.sectorq.eu
homepage.icon: ${APPNAME}.png
homepage.name: Mailu
homepage.server: my-docker-swarm
homepage.weight: "1"
placement:
constraints:
- node.role == manager
networks: networks:
- default - default
- webmail - webmail
- radicale - radicale
ports: ports:
- "8880:80" - target: 80
- "8443:443" published: 8880
- "25:25" protocol: tcp
- "465:465" mode: ingress
- "587:587" - target: 443
- "110:110" published: 8443
- "995:995" protocol: tcp
- "143:143" mode: ingress
- "993:993" - target: 25
- "4190:4190" published: 25
protocol: tcp
mode: ingress
- target: 465
published: 465
protocol: tcp
mode: ingress
- target: 587
published: 587
protocol: tcp
mode: ingress
- target: 110
published: 110
protocol: tcp
mode: ingress
- target: 995
published: 995
protocol: tcp
mode: ingress
- target: 143
published: 143
protocol: tcp
mode: ingress
- target: 993
published: 993
protocol: tcp
mode: ingress
- target: 4190
published: 4190
protocol: tcp
mode: ingress
volumes: volumes:
- /share/docker_data/mailu3/certs:/certs - certs_data:/certs
- /share/docker_data/mailu3/overrides/nginx:/overrides:ro - nginx_overrides:/overrides:ro
deploy: dns:
restart_policy: - 192.168.203.254
condition: any depends_on:
placement: - resolver
constraints: [node.role == manager]
fts_attachments: admin:
image: ${DOCKER_REGISTRY:-}apache/tika:2.9.2.1-full image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}admin:${MAILU_VERSION:-2024.06}
networks: env_file: mailu.env
- fts_attachments
deploy: deploy:
replicas: 1
restart_policy: restart_policy:
condition: any condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
placement: placement:
constraints: [node.role == manager] constraints:
- node.role == manager
volumes:
- admin_data:/data
- admin_dkim:/dkim
depends_on:
- redis
- resolver
dns:
- 192.168.203.254
networks:
- default
imap: imap:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-2024.06} image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-2024.06}
env_file: stack.env env_file: mailu.env
deploy:
replicas: 1
restart_policy:
condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
placement:
constraints:
- node.role == manager
volumes:
- mail_data:/mail
- dovecot_overrides:/overrides:ro
networks:
- default
depends_on:
- front
- resolver
dns: dns:
- 192.168.205.254 - 192.168.203.254
networks:
- default
- fts_attachments
volumes:
- /share/docker_data/mailu3/mail:/mail
- /share/docker_data/mailu3/overrides/dovecot:/overrides:ro
deploy:
restart_policy:
condition: any
placement:
constraints: [node.role == manager]
oletools:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}oletools:${MAILU_VERSION:-2024.06}
networks:
- oletools
deploy:
restart_policy:
condition: any
placement:
constraints: [node.role == manager]
redis:
image: ${DOCKER_REGISTRY:-}redis:alpine
volumes:
- /share/docker_data/mailu3/redis:/data
deploy:
restart_policy:
condition: any
placement:
constraints: [node.role == manager]
resolver:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}unbound:${MAILU_VERSION:-2024.06}
env_file: stack.env
networks:
- default
deploy:
restart_policy:
condition: any
placement:
constraints: [node.role == manager]
smtp: smtp:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}postfix:${MAILU_VERSION:-2024.06} image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}postfix:${MAILU_VERSION:-2024.06}
env_file: stack.env env_file: mailu.env
deploy:
replicas: 1
restart_policy:
condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
placement:
constraints:
- node.role == manager
volumes:
- mailqueue_data:/queue
- postfix_overrides:/overrides:ro
networks:
- default
depends_on:
- front
- resolver
dns: dns:
- 192.168.205.254 - 192.168.203.254
volumes:
- /share/docker_data/mailu3/mailqueue:/queue oletools:
- /share/docker_data/mailu3/overrides/postfix:/overrides:ro image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}oletools:${MAILU_VERSION:-2024.06}
hostname: oletools
deploy: deploy:
replicas: 1
restart_policy: restart_policy:
condition: any condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
placement: placement:
constraints: [node.role == manager] constraints:
- node.role == manager
webdav:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}radicale:${MAILU_VERSION:-2024.06}
networks: networks:
- radicale - oletools
volumes: depends_on:
- /share/docker_data/mailu3/dav:/data - resolver
dns:
- 192.168.203.254
antispam:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}rspamd:${MAILU_VERSION:-2024.06}
hostname: antispam
env_file: mailu.env
deploy: deploy:
replicas: 1
restart_policy: restart_policy:
condition: any condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
placement: placement:
constraints: [node.role == manager] constraints:
- node.role == manager
volumes:
- filter_data:/var/lib/rspamd
- rspamd_overrides:/overrides:ro
networks:
- default
- oletools
depends_on:
- front
- redis
- oletools
- resolver
dns:
- 192.168.203.254
networks:
default:
driver: overlay
ipam:
driver: default
config:
- subnet: 192.168.203.0/24
oletools:
driver: overlay
internal: true
webmail: webmail:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}webmail:${MAILU_VERSION:-2024.06} driver: overlay
env_file: stack.env radicale:
networks: driver: overlay
- webmail
volumes: volumes:
- /share/docker_data/mailu3/webmail:/data redis_data:
- /share/docker_data/mailu3/overrides/roundcube:/overrides:ro admin_data:
deploy: admin_dkim:
restart_policy: mail_data:
condition: any dovecot_overrides:
placement: mailqueue_data:
constraints: [node.role == manager] postfix_overrides:
filter_data:
rspamd_overrides:
certs_data:
nginx_overrides: