first commit

This commit is contained in:
2026-09-14 18:58:01 +03:00
commit ea4cf732e8
3 changed files with 139 additions and 0 deletions
+31
View File
@@ -0,0 +1,31 @@
# Copy this file to .env and fill in real values. Never commit the real .env file.
# Project / container naming
PROJECT_NAME=eternitymail
# Mail server hostname and domain
MAIL_HOSTNAME=mail.eternityproject.fi
MAIL_DOMAIN=eternityproject.fi
# Host paths for persistent data
DATA_ROOT=/opt/eternitymail
# Stalwart port bindings
STALWART_SMTP_PORT=25
STALWART_SUBMISSION_PORT=587
STALWART_IMAPS_PORT=993
STALWART_ADMIN_BIND=127.0.0.1
STALWART_ADMIN_PORT=8081
# Roundcube port bindings
ROUNDCUBE_BIND=127.0.0.1
ROUNDCUBE_PORT=8091
# Roundcube database
RC_DB_NAME=roundcube
RC_DB_USER=roundcube
RC_DB_PASSWORD=changeme
RC_DB_ROOT_PASSWORD=changeme
# Roundcube DES key (24 chars, used to encrypt stored IMAP passwords)
RC_DES_KEY=changeme_24_char_key!!!
+1
View File
@@ -0,0 +1 @@
.env
+107
View File
@@ -0,0 +1,107 @@
services:
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
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:
- ${DATA_ROOT:-/opt/eternitymail}/stalwart/etc:/etc/stalwart
- ${DATA_ROOT:-/opt/eternitymail}/stalwart/data:/var/lib/stalwart
- ${DATA_ROOT:-/opt/eternitymail}/stalwart/certs:/etc/stalwart/certs:ro
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: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://${MAIL_HOSTNAME}
ROUNDCUBEMAIL_DEFAULT_PORT: 993
ROUNDCUBEMAIL_SMTP_SERVER: tls://${MAIL_HOSTNAME}
ROUNDCUBEMAIL_SMTP_PORT: 587
ROUNDCUBEMAIL_USERNAME_DOMAIN: ${MAIL_DOMAIN}
ROUNDCUBEMAIL_SKIN: elastic
ROUNDCUBEMAIL_PLUGINS: archive,zipdownload,newmail_notifier
ROUNDCUBEMAIL_UPLOAD_MAX_FILESIZE: 50M
networks:
- eternitymail
networks:
eternitymail:
name: ${PROJECT_NAME:-eternitymail}