--- services: stalwart: image: stalwartlabs/stalwart:latest container_name: stalwart restart: unless-stopped depends_on: - postgres volumes: - ./stalwart-etc:/etc/stalwart - stalwart-var:/var/lib/stalwart ports: - 25:25 - 465:465 # - 443:443 - 993:993 - 100.70.0.4:8080:8080 networks: - caddy - postgres # environment: # - STALWART_RECOVERY_MODE=true # - STALWART_RECOVERY_ADMIN=admin:bruhmoment postgres: image: postgres:18-alpine container_name: postgres restart: unless-stopped shm_size: 256mb volumes: - ./postgres-data:/var/lib/postgresql environment: - POSTGRES_USER=stalwart - POSTGRES_DB=stalwart - POSTGRES_PASSWORD networks: - postgres caddy: image: caddy:latest container_name: caddy restart: unless-stopped volumes: - caddy-data:/data - caddy-config:/config - ./Caddyfile:/etc/caddy/Caddyfile ports: - 80:80 - 443:443 - 443:443/udp networks: - caddy bulwark: image: ghcr.io/bulwarkmail/webmail:latest container_name: bulwark restart: unless-stopped # ports: # - 3000:3000 volumes: - ./bulwark-settings:/app/data/settings environment: - JMAP_SERVER_URL=https://postoffice.enstrayed.com - STALWART_FEATURES=true - OAUTH_ENABLED=true - OAUTH_ONLY=true - OAUTH_CLIENT_ID=stalwart-webui - OAUTH_ISSUER_URL - SESSION_SECRET - SETTINGS_SYNC_ENABLED=true networks: - caddy networks: caddy: name: "caddy" postgres: name: "postgres" volumes: caddy-data: caddy-config: stalwart-var: