Files
ep-stalwart-v2/docker-compose.yml
2026-09-18 12:24:08 +03:00

139 lines
4.0 KiB
YAML

services:
stalwart-data-init:
image: alpine:3.21
container_name: ${PROJECT_NAME:-eternitymail}-stalwart-data-init
restart: "no"
command: ["sh", "-c", "chown -R 2000:2000 /etc/stalwart /var/lib/stalwart /etc/stalwart/certs"]
volumes:
- stalwart-etc:/etc/stalwart
- stalwart-data:/var/lib/stalwart
- stalwart-certs:/etc/stalwart/certs
stalwart:
image: stalwartlabs/stalwart:v0.16@sha256:93c574e52249c1ebf90061da2c4c0756a7b72abfcc1fec34506a03c2e38b5977
container_name: ${PROJECT_NAME:-eternitymail}-stalwart
restart: unless-stopped
security_opt:
- no-new-privileges:true
cap_drop:
- ALL
cap_add:
- NET_BIND_SERVICE
environment:
STALWART_RECOVERY_ADMIN: ${STALWART_RECOVERY_ADMIN}
depends_on:
stalwart-data-init:
condition: service_completed_successfully
ports:
- "${STALWART_SMTP_PORT:-25}:25/tcp"
- "${STALWART_SUBMISSION_PORT:-587}:587/tcp"
- "${STALWART_IMAPS_PORT:-993}:993/tcp"
- "${STALWART_ADMIN_BIND-127.0.0.1}:${STALWART_ADMIN_PORT:-8081}:8080/tcp"
volumes:
- stalwart-etc:/etc/stalwart
- stalwart-data:/var/lib/stalwart
- stalwart-certs:/etc/stalwart/certs
networks:
eternitymail:
aliases:
- ${MAIL_HOSTNAME}
roundcube-db:
image: mariadb:11.8-noble@sha256:2d2f4095530294735a857cfe22bb101e19b0849b416911c796ec4aa81b164a62
container_name: ${PROJECT_NAME:-eternitymail}-roundcube-db
restart: unless-stopped
security_opt:
- no-new-privileges:true
environment:
MARIADB_DATABASE: ${RC_DB_NAME:-roundcube}
MARIADB_USER: ${RC_DB_USER:-roundcube}
MARIADB_PASSWORD: ${RC_DB_PASSWORD}
MARIADB_ROOT_PASSWORD: ${RC_DB_ROOT_PASSWORD}
volumes:
- ${DATA_ROOT:-/opt/eternitymail}/roundcube-db:/var/lib/mysql
networks:
- eternitymail
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 10s
timeout: 5s
retries: 10
start_period: 20s
roundcube:
image: roundcube/roundcubemail:1.7.4-apache@sha256:8a4f88846145c6c8801654d9c3b330071e162f0110b64d08af8e94aca50ffb89
container_name: ${PROJECT_NAME:-eternitymail}-roundcube
restart: unless-stopped
security_opt:
- no-new-privileges:true
depends_on:
roundcube-db:
condition: service_healthy
ports:
- "${ROUNDCUBE_BIND-127.0.0.1}:${ROUNDCUBE_PORT:-8091}:80"
volumes:
- ${DATA_ROOT:-/opt/eternitymail}/roundcube-config:/var/roundcube/config
- ./roundcube-config/eternity-logo.php:/var/roundcube/config/eternity-logo.php:ro
- ./roundcube-config/stalwart-tls.php:/var/roundcube/config/stalwart-tls.php:ro
- ${ROUNDCUBE_SKIN_PATH:-../ep-roundcube-skin/eternity}:/var/www/html/skins/${ROUNDCUBE_SKIN_NAME:-eternity}:ro
environment:
ROUNDCUBEMAIL_DB_TYPE: mysql
ROUNDCUBEMAIL_DB_HOST: roundcube-db
ROUNDCUBEMAIL_DB_PORT: 3306
ROUNDCUBEMAIL_DB_NAME: ${RC_DB_NAME:-roundcube}
ROUNDCUBEMAIL_DB_USER: ${RC_DB_USER:-roundcube}
ROUNDCUBEMAIL_DB_PASSWORD: ${RC_DB_PASSWORD}
ROUNDCUBEMAIL_DES_KEY: ${RC_DES_KEY}
ROUNDCUBEMAIL_DEFAULT_HOST: ssl://${ROUNDCUBE_IMAP_HOST:-${MAIL_HOSTNAME}}
ROUNDCUBEMAIL_DEFAULT_PORT: 993
ROUNDCUBEMAIL_SMTP_SERVER: tls://${ROUNDCUBE_SMTP_HOST:-${MAIL_HOSTNAME}}
ROUNDCUBEMAIL_SMTP_PORT: 587
ROUNDCUBE_ALLOW_SELF_SIGNED_CERT: ${ROUNDCUBE_ALLOW_SELF_SIGNED_CERT:-false}
ROUNDCUBEMAIL_USERNAME_DOMAIN: ${MAIL_DOMAIN}
ROUNDCUBEMAIL_SKIN: ${ROUNDCUBE_SKIN_NAME:-eternity}
ROUNDCUBEMAIL_PLUGINS: archive,zipdownload,newmail_notifier
ROUNDCUBEMAIL_UPLOAD_MAX_FILESIZE: 50M
networks:
- eternitymail
networks:
eternitymail:
name: ${PROJECT_NAME:-eternitymail}
volumes:
stalwart-etc:
name: ${PROJECT_NAME:-eternitymail}-stalwart-etc
stalwart-data:
name: ${PROJECT_NAME:-eternitymail}-stalwart-data
stalwart-certs:
name: ${PROJECT_NAME:-eternitymail}-stalwart-certs