This commit is contained in:
2025-12-05 14:18:29 +01:00
parent 4044c739f3
commit 09af3a71f2

View File

@@ -1,256 +1,250 @@
networks:
default:
external: true
name: mailu_default
clamav:
external: true
fts_attachments:
external: true
oletools:
external: true
radicale:
external: true
webmail:
external: true
services: services:
redis: admin:
image: redis:alpine image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}admin:${MAILU_VERSION:-2024.06}
deploy: env_file: stack.env
replicas: 1
restart_policy:
condition: any
placement:
constraints:
- node.role == manager
labels:
wud.watch: "true"
wud.watch.digest: "true"
volumes:
- redis_data:/data
networks: networks:
- default - default
dns: dns:
- 192.168.203.254 - 192.168.205.254
volumes:
resolver: - data:/data
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}unbound:${MAILU_VERSION:-2024.06} - dkim:/dkim
env_file: stack.env
deploy: deploy:
replicas: 1
restart_policy: restart_policy:
condition: any condition: any
labels: labels:
wud.watch: "true" wud.watch: "true"
wud.watch.digest: "true" wud.watch.digest: "true"
antispam:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}rspamd:${MAILU_VERSION:-2024.06}
hostname: antispam
env_file: stack.env
dns:
- 192.168.205.254
networks: networks:
default: - default
ipv4_address: 192.168.203.254 - oletools
- clamav
volumes:
- antispam_filter:/var/lib/rspamd
- antispam_overrides/rspamd:/overrides:ro
deploy:
restart_policy:
condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
antivirus:
image: ${DOCKER_REGISTRY:-}clamav/clamav-debian:1.2.0-6
networks:
- clamav
volumes:
- clamav:/var/lib/clamav
healthcheck:
test: ["CMD-SHELL", "kill -0 `cat /tmp/clamd.pid` && kill -0 `cat /tmp/freshclam.pid`"]
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
deploy:
restart_policy:
condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
fetchmail:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}fetchmail:${MAILU_VERSION:-2024.06}
env_file: stack.env
dns:
- 192.168.205.254
volumes:
- fetchmail:/data
networks:
- default
deploy:
restart_policy:
condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
front: front:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-2024.06} image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-2024.06}
env_file: stack.env env_file: stack.env
deploy:
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:
- target: 80 - "8880:80"
published: 8880 - "8443:443"
protocol: tcp - "25:25"
mode: ingress - "465:465"
- target: 443 - "587:587"
published: 8443 - "110:110"
protocol: tcp - "995:995"
mode: ingress - "143:143"
- target: 25 - "993:993"
published: 25 - "4190:4190"
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:
- certs_data:/certs - front_certs:/certs
- nginx_overrides:/overrides:ro - front_overrides/nginx:/overrides:ro
dns: dns:
- 192.168.203.254 - 192.168.205.254
depends_on:
- resolver
admin:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}admin:${MAILU_VERSION:-2024.06}
env_file: stack.env
deploy: deploy:
replicas: 1
restart_policy: restart_policy:
condition: any condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
placement: placement:
constraints: constraints: [node.role == manager]
- node.role == manager labels:
volumes: wud.watch: "true"
- admin_data:/data wud.watch.digest: "true"
- admin_dkim:/dkim
depends_on: fts_attachments:
- redis image: ${DOCKER_REGISTRY:-}apache/tika:2.9.2.1-full
- resolver hostname: tika
dns:
- 192.168.203.254
networks: networks:
- default - fts_attachments
dns:
- 192.168.205.254
healthcheck:
test: ["CMD-SHELL", "wget -nv -t1 -O /dev/null http://127.0.0.1:9998/tika || exit 1"]
interval: 10s
timeout: 5s
retries: 3
start_period: 10s
deploy:
restart_policy:
condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
imap: imap:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-2024.06} image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-2024.06}
env_file: stack.env env_file: stack.env
deploy: dns:
replicas: 1 - 192.168.205.254
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: networks:
- default - default
depends_on: - fts_attachments
- front volumes:
- resolver - imap_mail:/mail
- imap_dovecot:/overrides:ro
deploy:
restart_policy:
condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
oletools:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}oletools:${MAILU_VERSION:-2024.06}
hostname: oletools
networks:
- oletools
dns: dns:
- 192.168.203.254 - 192.168.205.254
deploy:
restart_policy:
condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
redis:
image: ${DOCKER_REGISTRY:-}redis:alpine
volumes:
- redis:/data
networks:
- default
dns:
- 192.168.205.254
deploy:
restart_policy:
condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
resolver:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}unbound:${MAILU_VERSION:-2024.06}
env_file: stack.env
networks:
default:
ipv4_address: 192.168.205.254
deploy:
restart_policy:
condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
smtp: smtp:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}postfix:${MAILU_VERSION:-2024.06} image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}postfix:${MAILU_VERSION:-2024.06}
env_file: stack.env env_file: stack.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: networks:
- default - default
depends_on:
- front
- resolver
dns: dns:
- 192.168.203.254 - 192.168.205.254
oletools:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}oletools:${MAILU_VERSION:-2024.06}
hostname: oletools
deploy:
replicas: 1
restart_policy:
condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
placement:
constraints:
- node.role == manager
networks:
- oletools
depends_on:
- resolver
dns:
- 192.168.203.254
antispam:
image: ${DOCKER_ORG:-ghcr.io/mailu}/${DOCKER_PREFIX:-}rspamd:${MAILU_VERSION:-2024.06}
hostname: antispam
env_file: stack.env
deploy:
replicas: 1
restart_policy:
condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
placement:
constraints:
- node.role == manager
volumes: volumes:
- filter_data:/var/lib/rspamd - snmp_mailqueue:/queue
- rspamd_overrides:/overrides:ro - snmp_postfix:/overrides:ro
networks: deploy:
- default restart_policy:
- oletools condition: any
depends_on: labels:
- front wud.watch: "true"
- redis wud.watch.digest: "true"
- oletools
- resolver webdav:
dns: image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}radicale:${MAILU_VERSION:-2024.06}
- 192.168.203.254 networks:
- radicale
volumes:
- dav:/data
deploy:
restart_policy:
condition: any
labels:
wud.watch: "true"
wud.watch.digest: "true"
networks:
default:
driver: overlay
ipam:
driver: default
config:
- subnet: 192.168.203.0/24
oletools:
driver: overlay
internal: true
webmail: webmail:
driver: overlay image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}webmail:${MAILU_VERSION:-2024.06}
radicale: env_file: stack.env
driver: overlay networks:
- webmail
volumes: volumes:
redis_data: - webmail:/data
admin_data: - roundcube:/overrides:ro
admin_dkim: deploy:
mail_data: restart_policy:
dovecot_overrides: condition: any
mailqueue_data: labels:
postfix_overrides: wud.watch: "true"
filter_data: wud.watch.digest: "true"
rspamd_overrides:
certs_data:
nginx_overrides: