Files
compose/stalwart/docker-compose.yml
2026-06-24 16:20:26 +08:00

62 lines
1.5 KiB
YAML

name: stalwart
services:
stalwart:
image: stalwartlabs/stalwart:v0.16
container_name: stalwart
restart: unless-stopped
depends_on:
- database
- valkey
networks:
- stalwart
- proxy
ports:
- "25:25" # SMTP
- "465:465" # SMTPS
- "587:587" # Submission
- "143:143" # IMAP
- "993:993" # IMAPS
- "4190:4190" # ManageSieve
- "443:443" # HTTPS
volumes:
- ./config:/etc/stalwart
- ./data:/var/lib/stalwart
- ./log:/var/log/stalwart
- ./blobs:/var/lib/stalwart-blobs
labels:
- "traefik.enable=true"
- "traefik.docker.network=proxy"
- "traefik.http.routers.stalwart.rule=Host(`mail.example.com`)"
- "traefik.http.routers.stalwart.entrypoints=websecure"
- "traefik.http.routers.stalwart.service=stalwart"
- "traefik.http.services.stalwart.loadBalancer.server.port=8080"
database:
image: postgres:17-alpine
container_name: stalwart-database
restart: unless-stopped
networks:
- stalwart
environment:
POSTGRES_DB: stalwart
POSTGRES_USER: stalwart
POSTGRES_PASSWORD: change_this_password
volumes:
- ./database:/var/lib/postgresql/data
valkey:
image: valkey/valkey:8-alpine
container_name: stalwart-valkey
restart: unless-stopped
networks:
- stalwart
volumes:
- ./valkey:/data
networks:
stalwart:
name: stalwart
proxy:
external: true