diff --git a/setup/start.sh b/setup/start.sh index 22759c60..022600d3 100755 --- a/setup/start.sh +++ b/setup/start.sh @@ -87,17 +87,28 @@ if [ -z "$SKIP_NETWORK_CHECKS" ]; then . setup/network-checks.sh fi +# For the first time (if the config file (/etc/mailinabox.conf) not exists): # Create the user named "user-data" and store all persistent user # data (mailboxes, etc.) in that user's home directory. -if [ -z "$STORAGE_ROOT" ]; then - STORAGE_USER=user-data - if [ ! -d /home/$STORAGE_USER ]; then useradd -m $STORAGE_USER; fi - STORAGE_ROOT=/home/$STORAGE_USER - mkdir -p $STORAGE_ROOT - echo $(setup/migrate.py --current) > $STORAGE_ROOT/mailinabox.version - chown $STORAGE_USER.$STORAGE_USER $STORAGE_ROOT/mailinabox.version +# +# If the config file exists: +# Apply the existing configuration options for STORAGE_USER/ROOT +STORAGE_USER=$([[ -z "$DEFAULT_STORAGE_USER" ]] && echo "user-data" || echo "$DEFAULT_STORAGE_USER") +STORAGE_ROOT=$([[ -z "$DEFAULT_STORAGE_ROOT" ]] && echo "/home/$STORAGE_USER" || echo "$DEFAULT_STORAGE_ROOT") + +# Create the STORAGE_USER if it not exists +if [ ! $(id -u $STORAGE_USER >/dev/null 2>&1;) ]; then + useradd -m $STORAGE_USER fi +# Create the STORAGE_ROOT if it not exists +if [ ! -d $STORAGE_ROOT ]; then + mkdir -p $STORAGE_ROOT +fi + +echo $(setup/migrate.py --current) > $STORAGE_ROOT/mailinabox.version +chown $STORAGE_USER.$STORAGE_USER $STORAGE_ROOT/mailinabox.version + # Save the global options in /etc/mailinabox.conf so that standalone # tools know where to look for data. cat > /etc/mailinabox.conf << EOF;