#!/usr/bin/env bash set -euo pipefail cd "$(dirname "$0")" source ./lib.sh require_root header # ── Defaults ──────────────────────────────────────────────────────────────── APP_NAME="${APP_NAME:-MailWolt}" APP_USER="${APP_USER:-mailwolt}" APP_GROUP="${APP_GROUP:-www-data}" APP_USER_PREFIX="${APP_USER_PREFIX:-mw}" APP_DIR="${APP_DIR:-/var/www/${APP_USER}}" BASE_DOMAIN="${BASE_DOMAIN:-example.com}" UI_SUB="${UI_SUB:-ui}" WEBMAIL_SUB="${WEBMAIL_SUB:-webmail}" MTA_SUB="${MTA_SUB:-mx}" SYSTEM_SUB="${SYSTEM_SUB:-system}" ADMIN_USER="${ADMIN_USER:-${APP_USER}}" ADMIN_EMAIL="${ADMIN_EMAIL:-admin@localhost}" ADMIN_PASS="${ADMIN_PASS:-ChangeMe}" DB_NAME="${DB_NAME:-${APP_USER}}" DB_USER="${DB_USER:-${APP_USER}}" DB_PASS="${DB_PASS:-$(openssl rand -hex 16)}" SERVER_PUBLIC_IPV4="$(detect_ip)" SERVER_PUBLIC_IPV6="$(detect_ipv6)" DEFAULT_TZ="$(detect_timezone)" DEFAULT_LOCALE="$(guess_locale_from_tz "$DEFAULT_TZ")" echo -e "${GREY}Erkannte IP (v4): ${SERVER_PUBLIC_IPV4} v6: ${SERVER_PUBLIC_IPV6:-–}${NC}" read -r -p "Basisdomain (Enter=${BASE_DOMAIN}): " INP; BASE_DOMAIN="${INP:-$BASE_DOMAIN}" read -r -p "UI Subdomain (Enter=${UI_SUB}): " INP; UI_SUB="${INP:-$UI_SUB}" read -r -p "Webmail Subdomain (Enter=${WEBMAIL_SUB}): " INP; WEBMAIL_SUB="${INP:-$WEBMAIL_SUB}" read -r -p "Mailserver Subdomain (Enter=${MTA_SUB}): " INP; MTA_SUB="${INP:-$MTA_SUB}" read -r -p "Zeitzone (Enter=${DEFAULT_TZ}): " INP; APP_TZ="${INP:-$DEFAULT_TZ}" read -r -p "Sprache [de/en] (Enter=${DEFAULT_LOCALE}): " INP; APP_LOCALE="${INP:-$DEFAULT_LOCALE}" UI_HOST="$(join_host "$UI_SUB" "$BASE_DOMAIN")" WEBMAIL_HOST="$(join_host "$WEBMAIL_SUB" "$BASE_DOMAIN")" MAIL_HOSTNAME="$(join_host "$MTA_SUB" "$BASE_DOMAIN")" SYSTEM_HOSTNAME="$(join_host "$SYSTEM_SUB" "$BASE_DOMAIN")" export APP_NAME APP_USER APP_GROUP APP_USER_PREFIX APP_DIR export BASE_DOMAIN UI_SUB WEBMAIL_SUB MTA_SUB SYSTEM_SUB export UI_HOST WEBMAIL_HOST MAIL_HOSTNAME SYSTEM_HOSTNAME export ADMIN_USER ADMIN_EMAIL ADMIN_PASS export DB_NAME DB_USER DB_PASS export SERVER_PUBLIC_IPV4 SERVER_PUBLIC_IPV6 APP_TZ APP_LOCALE # ── Sequenz ──────────────────────────────────────────────────────────────── for STEP in 10-provision 20-ssl 30-db 40-postfix 50-dovecot 60-rspamd-opendkim 70-nginx 80-app 90-services 95-monit 98-motd 99-summary do log ">>> Running ${STEP}.sh" bash "./${STEP}.sh" done