From d752a9e8b09f5981077c21684e194b43a304946a Mon Sep 17 00:00:00 2001 From: karmacoma Date: Mon, 3 Nov 2025 02:47:50 +0000 Subject: [PATCH] Add docker-compose.yml Signed-off-by: karmacoma --- docker-compose.yml | 66 ++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 66 insertions(+) create mode 100644 docker-compose.yml diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..830234c --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,66 @@ +services: + mail_stalwart: + image: 'stalwartlabs/mail-server:latest' + networks: + - coolify + ports: + - '25:25' + - '587:587' + - '465:465' + - '143:143' + - '993:993' + - '4190:4190' + - '110:110' + - '995:995' + volumes: + - '/var/lib/stalwart-mail:/opt/stalwart-mail' + - /etc/localtime:/etc/localtime:ro + - /data/coolify/certs:/data/certs:ro + labels: + - traefik.enable=true + + - traefik.http.routers.mailserver.rule=Host(`mail.karmacoma.dev`) || Host(`autodiscover.mail.karmacoma.dev`) || Host(`autoconfig.mail.karmacoma.dev`) || Host(`mta-sts.mail.karmacoma.dev`) || Host(`mx.mail.karmacoma.dev`) || Host(`smtp.mail.karmacoma.dev`) || Host(`pop.mail.karmacoma.dev`) || Host(`imap.mail.karmacoma.dev`) + - traefik.http.routers.mailserver.entrypoints=http + - traefik.http.routers.mailserver.service=mailserver + - traefik.http.services.mailserver.loadbalancer.server.port=80 + - traefik.http.routers.mailserver.tls.certresolver=letsencrypt + - traefik.http.routers.mailserver.tls=true + - traefik.http.routers.mailserver.tls.domains[0].main=mx.mail.karmacoma.dev + - traefik.http.routers.mailserver.tls.domains[0].sans=autodiscover.mail.karmacoma.dev,autoconfig.mail.karmacoma.dev,mta-sts.mail.karmacoma.dev,mail.karmacoma.dev,smtp.mail.karmacoma.dev,pop.mail.karmacoma.dev,imap.mail.karmacoma.dev + + - traefik.tcp.routers.smtp.rule=HostSNI(`*`) + - traefik.tcp.routers.smtp.entrypoints=smtp + - traefik.tcp.routers.smtp.service=smtp + - traefik.tcp.services.smtp.loadbalancer.server.port=25 + - traefik.tcp.services.smtp.loadbalancer.proxyProtocol.version=2 + + - traefik.tcp.routers.jmap.rule=HostSNI(`*`) + - traefik.tcp.routers.jmap.tls.passthrough=true + - traefik.tcp.routers.jmap.entrypoints=https + - traefik.tcp.routers.jmap.service=jmap + - traefik.tcp.services.jmap.loadbalancer.server.port=443 + - traefik.tcp.services.jmap.loadbalancer.proxyProtocol.version=2 + + - traefik.tcp.routers.smtps.rule=HostSNI(`*`) + - traefik.tcp.routers.smtps.tls.passthrough=true + - traefik.tcp.routers.smtps.entrypoints=smtps + - traefik.tcp.routers.smtps.service=smtps + - traefik.tcp.services.smtps.loadbalancer.server.port=465 + - traefik.tcp.services.smtps.loadbalancer.proxyProtocol.version=2 + + - traefik.tcp.routers.imaps.rule=HostSNI(`*`) + - traefik.tcp.routers.imaps.tls.passthrough=true + - traefik.tcp.routers.imaps.entrypoints=imaps + - traefik.tcp.routers.imaps.service=imaps + - traefik.tcp.services.imaps.loadbalancer.server.port=993 + - traefik.tcp.services.imaps.loadbalancer.proxyProtocol.version=2 + tty: true + stdin_open: true + restart: always + +volumes: + data: + +networks: + coolify: + external: true \ No newline at end of file