This commit is contained in:
2025-12-01 20:56:04 +01:00
parent 78f958d101
commit b44183d97f

View File

@@ -1,31 +1,37 @@
networks: networks:
clamav: clamav:
driver: overlay driver: overlay
default: default:
driver: overlay driver: overlay
ipam: ipam:
config: config:
- subnet: 192.168.205.0/24 - subnet: 192.168.205.0/24
driver: default 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: dns:
- 192.168.205.254 - 192.168.205.254
env_file: stack.env 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}
volumes: volumes:
- mailu3_data:/data - mailu3_data:/data
- mailu3_dkim:/dkim - mailu3_dkim:/dkim
deploy: deploy:
labels: labels:
wud.watch: 'true' wud.watch: 'true'
@@ -33,20 +39,21 @@ services:
replicas: 1 replicas: 1
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
antispam: antispam:
dns: dns:
- 192.168.205.254 - 192.168.205.254
env_file: stack.env env_file: stack.env
hostname: antispam hostname: antispam
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}rspamd:${MAILU_VERSION:-2024.06} 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 - filter:/var/lib/rspamd
- rspamd:/overrides:ro - rspamd:/overrides:ro
deploy: deploy:
labels: labels:
wud.watch: 'true' wud.watch: 'true'
@@ -54,21 +61,20 @@ services:
replicas: 1 replicas: 1
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
antivirus: antivirus:
healthcheck: healthcheck:
interval: 10s interval: 10s
retries: 3 retries: 3
start_period: 10s start_period: 10s
test: test: ["CMD-SHELL", "kill -0 `cat /tmp/clamd.pid` && kill -0 `cat /tmp/freshclam.pid`"]
- CMD-SHELL
- kill -0 `cat /tmp/clamd.pid` && kill -0 `cat /tmp/freshclam.pid`
timeout: 5s 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 - clamav:/var/lib/clamav
deploy: deploy:
labels: labels:
wud.watch: 'true' wud.watch: 'true'
@@ -76,14 +82,15 @@ services:
replicas: 1 replicas: 1
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
fetchmail: fetchmail:
dns: dns:
- 192.168.205.254 - 192.168.205.254
env_file: stack.env 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}
volumes: volumes:
- fetchmail:/data - fetchmail:/data
deploy: deploy:
labels: labels:
wud.watch: 'true' wud.watch: 'true'
@@ -91,10 +98,11 @@ services:
replicas: 1 replicas: 1
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
front: front:
dns: dns:
- 192.168.205.254 - 192.168.205.254
env_file: stack.env env_file: stack.env
logging: logging:
driver: loki driver: loki
@@ -102,53 +110,53 @@ services:
loki-url: "http://192.168.77.101:3100/loki/api/v1/push" 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} 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 - target: 80
published: 8880 published: 8880
protocol: tcp protocol: tcp
mode: ingress mode: ingress
- target: 443 - target: 443
published: 8443 published: 8443
protocol: tcp protocol: tcp
mode: ingress mode: ingress
- target: 25 - target: 25
published: 25 published: 25
protocol: tcp protocol: tcp
mode: ingress mode: ingress
- target: 465 - target: 465
published: 465 published: 465
protocol: tcp protocol: tcp
mode: ingress mode: ingress
- target: 587 - target: 587
published: 587 published: 587
protocol: tcp protocol: tcp
mode: ingress mode: ingress
- target: 110 - target: 110
published: 110 published: 110
protocol: tcp protocol: tcp
mode: ingress mode: ingress
- target: 995 - target: 995
published: 995 published: 995
protocol: tcp protocol: tcp
mode: ingress mode: ingress
- target: 143 - target: 143
published: 143 published: 143
protocol: tcp protocol: tcp
mode: ingress mode: ingress
- target: 993 - target: 993
published: 993 published: 993
protocol: tcp protocol: tcp
mode: ingress mode: ingress
- target: 4190 - target: 4190
published: 4190 published: 4190
protocol: tcp protocol: tcp
mode: ingress mode: ingress
volumes: volumes:
- certs:/certs - certs:/certs
- nginx:/overrides:ro - nginx:/overrides:ro
deploy: deploy:
labels: labels:
wud.watch: 'true' wud.watch: 'true'
@@ -164,22 +172,21 @@ services:
replicas: 1 replicas: 1
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
fts_attachments: fts_attachments:
dns: dns:
- 192.168.205.254 - 192.168.205.254
healthcheck: healthcheck:
interval: 10s interval: 10s
retries: 3 retries: 3
start_period: 10s start_period: 10s
test: test: ["CMD-SHELL", "wget -nv -t1 -O /dev/null http://127.0.0.1:9998/tika || exit 1"]
- CMD-SHELL
- wget -nv -t1 -O /dev/null http://127.0.0.1:9998/tika || exit 1
timeout: 5s timeout: 5s
hostname: tika 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: labels:
wud.watch: 'true' wud.watch: 'true'
@@ -187,18 +194,19 @@ services:
replicas: 1 replicas: 1
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
imap: imap:
dns: dns:
- 192.168.205.254 - 192.168.205.254
env_file: stack.env env_file: stack.env
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-2024.06} image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}dovecot:${MAILU_VERSION:-2024.06}
networks: networks:
- default - default
- fts_attachments - fts_attachments
volumes: volumes:
- mail:/mail - mail:/mail
- dovecot:/overrides:ro - dovecot:/overrides:ro
deploy: deploy:
labels: labels:
wud.watch: 'true' wud.watch: 'true'
@@ -206,14 +214,15 @@ services:
replicas: 1 replicas: 1
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
oletools: oletools:
dns: dns:
- 192.168.205.254 - 192.168.205.254
hostname: oletools 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: labels:
wud.watch: 'true' wud.watch: 'true'
@@ -221,13 +230,14 @@ services:
replicas: 1 replicas: 1
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
redis: redis:
dns: dns:
- 192.168.205.254 - 192.168.205.254
image: ${DOCKER_REGISTRY:-}redis:alpine image: ${DOCKER_REGISTRY:-}redis:alpine
volumes: volumes:
- redis:/data - redis:/data
deploy: deploy:
labels: labels:
wud.watch: 'true' wud.watch: 'true'
@@ -235,7 +245,8 @@ services:
replicas: 1 replicas: 1
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
resolver: resolver:
env_file: stack.env 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}
@@ -249,15 +260,16 @@ services:
replicas: 1 replicas: 1
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
smtp: smtp:
dns: dns:
- 192.168.205.254 - 192.168.205.254
env_file: stack.env env_file: stack.env
image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}postfix:${MAILU_VERSION:-2024.06} image: ${DOCKER_REGISTRY:-}ghcr.io/mailu/${DOCKER_PREFIX:-}postfix:${MAILU_VERSION:-2024.06}
volumes: volumes:
- mailqueue:/queue - mailqueue:/queue
- postfix:/overrides:ro - postfix:/overrides:ro
deploy: deploy:
labels: labels:
wud.watch: 'true' wud.watch: 'true'
@@ -265,13 +277,14 @@ services:
replicas: 1 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 - webdav:/data
deploy: deploy:
labels: labels:
wud.watch: 'true' wud.watch: 'true'
@@ -279,15 +292,16 @@ services:
replicas: 1 replicas: 1
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
webmail: webmail:
env_file: stack.env 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}
networks: networks:
- webmail - webmail
volumes: volumes:
- webmail_data:/data - webmail_data:/data
- roundcube:/overrides:ro - roundcube:/overrides:ro
deploy: deploy:
labels: labels:
wud.watch: 'true' wud.watch: 'true'
@@ -295,7 +309,7 @@ services:
replicas: 1 replicas: 1
placement: placement:
constraints: constraints:
- node.role == manager - node.role == manager
volumes: volumes:
webmail_data: webmail_data:
@@ -331,4 +345,4 @@ volumes:
mail: mail:
driver: local driver: local
dovecot: dovecot:
driver: local driver: local