This commit is contained in:
2025-12-01 21:32:54 +01:00
parent 05832a32f8
commit 59ef2785aa

View File

@@ -1,348 +1,215 @@
networks: networks:
clamav:
driver: overlay
default: default:
driver: overlay driver: overlay
ipam: clamav:
config: driver: overlay
- subnet: 192.168.205.0/24
driver: default
fts_attachments: fts_attachments:
driver: overlay driver: overlay
internal: true internal: true
oletools: oletools:
driver: overlay driver: overlay
internal: true internal: true
radicale: radicale:
driver: overlay driver: overlay
webmail: webmail:
driver: overlay driver: overlay
services: services:
admin: admin:
dns:
- 192.168.205.254
env_file: stack.env
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}admin:${MAILU_VERSION:-2024.06} image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}admin:${MAILU_VERSION:-2024.06}
env_file: stack.env
depends_on:
- redis
- resolver
dns:
- 192.168.205.254
volumes: volumes:
- mailu3_data:/data - /share/docker_data/mailu3/data:/data
- mailu3_dkim:/dkim - /share/docker_data/mailu3/dkim:/dkim
deploy: deploy:
labels: restart_policy:
wud.watch: 'true' condition: any
wud.watch.digest: 'true'
replicas: 1
placement: placement:
constraints: constraints: [node.role == manager]
- node.role == manager
antispam: antispam:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}rspamd:${MAILU_VERSION:-2024.06}
env_file: stack.env
depends_on:
- front
- redis
- oletools
- antivirus
- resolver
dns: dns:
- 192.168.205.254 - 192.168.205.254
env_file: stack.env
hostname: antispam
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}rspamd:${MAILU_VERSION:-2024.06}
networks: networks:
- default - default
- oletools - oletools
- clamav - clamav
volumes: volumes:
- filter:/var/lib/rspamd - /share/docker_data/mailu3/filter:/var/lib/rspamd
- rspamd:/overrides:ro - /share/docker_data/mailu3/overrides/rspamd:/overrides:ro
deploy: deploy:
labels: restart_policy:
wud.watch: 'true' condition: any
wud.watch.digest: 'true'
replicas: 1
placement: placement:
constraints: constraints: [node.role == manager]
- node.role == manager
antivirus: antivirus:
healthcheck:
interval: 10s
retries: 3
start_period: 10s
test: ["CMD-SHELL", "kill -0 `cat /tmp/clamd.pid` && kill -0 `cat /tmp/freshclam.pid`"]
timeout: 5s
image: ${DOCKER_REGISTRY:-}clamav/clamav-debian:1.2.0-6 image: ${DOCKER_REGISTRY:-}clamav/clamav-debian:1.2.0-6
networks: networks:
- clamav - clamav
volumes: volumes:
- clamav:/var/lib/clamav - /share/docker_data/mailu3/filter/clamav:/var/lib/clamav
deploy: deploy:
labels: restart_policy:
wud.watch: 'true' condition: any
wud.watch.digest: 'true'
replicas: 1
placement: placement:
constraints: constraints: [node.role == manager]
- node.role == manager
fetchmail: fetchmail:
dns:
- 192.168.205.254
env_file: stack.env
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}fetchmail:${MAILU_VERSION:-2024.06} image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}fetchmail:${MAILU_VERSION:-2024.06}
env_file: stack.env
depends_on:
- admin
- smtp
- imap
- resolver
dns:
- 192.168.205.254
volumes: volumes:
- fetchmail:/data - /share/docker_data/mailu3/data/fetchmail:/data
deploy: deploy:
labels: restart_policy:
wud.watch: 'true' condition: any
wud.watch.digest: 'true'
replicas: 1
placement: placement:
constraints: constraints: [node.role == manager]
- node.role == manager
front: front:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-2024.06}
env_file: stack.env
dns: dns:
- 192.168.205.254 - 192.168.205.254
env_file: stack.env
logging:
driver: loki
options:
loki-url: "http://192.168.77.101:3100/loki/api/v1/push"
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}nginx:${MAILU_VERSION:-2024.06}
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:/certs - /share/docker_data/mailu3/certs:/certs
- nginx:/overrides:ro - /share/docker_data/mailu3/overrides/nginx:/overrides:ro
deploy: deploy:
labels: restart_policy:
wud.watch: 'true' condition: any
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'
replicas: 1
placement: placement:
constraints: constraints: [node.role == manager]
- node.role == manager
fts_attachments: fts_attachments:
dns:
- 192.168.205.254
healthcheck:
interval: 10s
retries: 3
start_period: 10s
test: ["CMD-SHELL", "wget -nv -t1 -O /dev/null http://127.0.0.1:9998/tika || exit 1"]
timeout: 5s
hostname: tika
image: ${DOCKER_REGISTRY:-}apache/tika:2.9.2.1-full image: ${DOCKER_REGISTRY:-}apache/tika:2.9.2.1-full
networks: networks:
- fts_attachments - fts_attachments
deploy: deploy:
labels: restart_policy:
wud.watch: 'true' condition: any
wud.watch.digest: 'true'
replicas: 1
placement: placement:
constraints: constraints: [node.role == manager]
- node.role == manager
imap: imap:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-2024.06}
env_file: stack.env
dns: dns:
- 192.168.205.254 - 192.168.205.254
env_file: stack.env
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-2024.06}
networks: networks:
- default - default
- fts_attachments - fts_attachments
volumes: volumes:
- imap:/mail - /share/docker_data/mailu3/mail:/mail
- dovecot:/overrides:ro - /share/docker_data/mailu3/overrides/dovecot:/overrides:ro
deploy: deploy:
labels: restart_policy:
wud.watch: 'true' condition: any
wud.watch.digest: 'true'
replicas: 1
placement: placement:
constraints: constraints: [node.role == manager]
- node.role == manager
oletools: oletools:
dns:
- 192.168.205.254
hostname: oletools
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}oletools:${MAILU_VERSION:-2024.06} image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}oletools:${MAILU_VERSION:-2024.06}
networks: networks:
- oletools - oletools
deploy: deploy:
labels: restart_policy:
wud.watch: 'true' condition: any
wud.watch.digest: 'true'
replicas: 1
placement: placement:
constraints: constraints: [node.role == manager]
- node.role == manager
redis: redis:
dns:
- 192.168.205.254
image: ${DOCKER_REGISTRY:-}redis:alpine image: ${DOCKER_REGISTRY:-}redis:alpine
volumes: volumes:
- redis:/data - /share/docker_data/mailu3/redis:/data
deploy: deploy:
labels: restart_policy:
wud.watch: 'true' condition: any
wud.watch.digest: 'true'
replicas: 1
placement: placement:
constraints: constraints: [node.role == manager]
- node.role == manager
resolver: resolver:
env_file: stack.env
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}unbound:${MAILU_VERSION:-2024.06} image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}unbound:${MAILU_VERSION:-2024.06}
env_file: stack.env
networks: networks:
default: - default
ipv4_address: 192.168.205.254
deploy: deploy:
labels: restart_policy:
wud.watch: 'true' condition: any
wud.watch.digest: 'true'
replicas: 1
placement: placement:
constraints: constraints: [node.role == manager]
- node.role == manager
smtp: smtp:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}postfix:${MAILU_VERSION:-2024.06}
env_file: stack.env
dns: dns:
- 192.168.205.254 - 192.168.205.254
env_file: stack.env
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}postfix:${MAILU_VERSION:-2024.06}
volumes: volumes:
- mailqueue:/queue - /share/docker_data/mailu3/mailqueue:/queue
- postfix:/overrides:ro - /share/docker_data/mailu3/overrides/postfix:/overrides:ro
deploy: deploy:
labels: restart_policy:
wud.watch: 'true' condition: any
wud.watch.digest: 'true'
replicas: 1
placement: placement:
constraints: constraints: [node.role == manager]
- node.role == manager
webdav: webdav:
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}radicale:${MAILU_VERSION:-2024.06} image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}radicale:${MAILU_VERSION:-2024.06}
networks: networks:
- radicale - radicale
volumes: volumes:
- webdav:/data - /share/docker_data/mailu3/dav:/data
deploy: deploy:
labels: restart_policy:
wud.watch: 'true' condition: any
wud.watch.digest: 'true'
replicas: 1
placement: placement:
constraints: constraints: [node.role == manager]
- node.role == manager
webmail: webmail:
env_file: stack.env
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}webmail:${MAILU_VERSION:-2024.06} image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}webmail:${MAILU_VERSION:-2024.06}
env_file: stack.env
networks: networks:
- webmail - webmail
volumes: volumes:
- webmail_data:/data - /share/docker_data/mailu3/webmail:/data
- roundcube:/overrides:ro - /share/docker_data/mailu3/overrides/roundcube:/overrides:ro
deploy: deploy:
labels: restart_policy:
wud.watch: 'true' condition: any
wud.watch.digest: 'true'
replicas: 1
placement: placement:
constraints: constraints: [node.role == manager]
- node.role == manager
volumes:
webmail_data:
driver: local
roundcube:
driver: local
webdav:
driver: local
mailqueue:
driver: local
postfix:
driver: local
redis:
driver: local
oletools:
driver: local
clamav:
driver: local
fetchmail:
driver: local
filter:
driver: local
rspamd:
driver: local
certs:
driver: local
nginx:
driver: local
mailu3_data:
driver: local
mailu3_dkim:
driver: local
imap:
driver: local
dovecot:
driver: local