Utility Scripts
These scripts support the EternityMail Docker Compose deployment. Run them from the repository root.
generate-des-key.sh
Generates a random 24-character alphanumeric value for Roundcube's RC_DES_KEY setting.
Requirements:
- Linux, macOS, or another Unix-like shell
/dev/urandom
Usage:
chmod +x scripts/generate-des-key.sh
scripts/generate-des-key.sh
Copy the printed value into .env:
RC_DES_KEY=<generated-value>
Keep this value stable after Roundcube has been deployed. Changing it can make existing encrypted session data unreadable.
generate-des-key.ps1
Generates the same type of 24-character key using PowerShell.
Requirements:
- PowerShell 5.1 or PowerShell 7+
Usage from PowerShell:
.\scripts\generate-des-key.ps1
Copy the printed value into RC_DES_KEY in .env.
setup-data-dirs.sh
Creates the host directories used by the Stalwart and Roundcube containers and assigns ownership of the Stalwart directories to uid/gid 2000, which is the user used by the Stalwart image.
Requirements:
- Linux or another Unix-like host
- Permission to create and change ownership under
DATA_ROOT
The script does not read .env automatically. Set DATA_ROOT explicitly when running it:
chmod +x scripts/setup-data-dirs.sh
sudo DATA_ROOT=/opt/eternitymail ./scripts/setup-data-dirs.sh
When DATA_ROOT is omitted, the script uses /opt/eternitymail.
The created directories are:
$DATA_ROOT/stalwart/etc$DATA_ROOT/stalwart/data$DATA_ROOT/stalwart/certs$DATA_ROOT/roundcube-db$DATA_ROOT/roundcube-config
Only $DATA_ROOT/stalwart is changed to uid/gid 2000:2000; the MariaDB container manages its own data-directory permissions.
Typical order
cp .env.example .env
scripts/generate-des-key.sh
sudo DATA_ROOT=/opt/eternitymail ./scripts/setup-data-dirs.sh
docker compose config --quiet
docker compose up -d