Files
ep-stalwart-v2/scripts

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