#!/usr/bin/env bash set -euo pipefail # --- Flags / Modi --- DEV_MODE=0 PROXY_MODE=0 NPM_IP="" while [[ $# -gt 0 ]]; do case "$1" in -dev) DEV_MODE=1 ;; -proxy) PROXY_MODE=1; NPM_IP="${2:-}"; shift ;; esac shift done APP_ENV="${APP_ENV:-$([[ $DEV_MODE -eq 1 ]] && echo local || echo production)}" APP_DEBUG="${APP_DEBUG:-$([[ $DEV_MODE -eq 1 ]] && echo true || echo false)}" export DEV_MODE PROXY_MODE NPM_IP APP_ENV APP_DEBUG 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}" 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 "Mailserver FQDN (z.B. mx.domain.tld) [Enter=${MTA_SUB}.${BASE_DOMAIN}]: " MAIL_FQDN MAIL_FQDN="${MAIL_FQDN:-${MTA_SUB}.${BASE_DOMAIN}}" if [[ "$MAIL_FQDN" =~ ^([^.]+)\.(.+)$ ]]; then MTA_SUB="${BASH_REMATCH[1]}" BASE_DOMAIN="${BASH_REMATCH[2]}" fi UI_HOST="${UI_SUB}.${BASE_DOMAIN}" WEBMAIL_HOST="${WEBMAIL_SUB}.${BASE_DOMAIN}" MAIL_HOSTNAME="${MAIL_FQDN}" export APP_NAME APP_USER APP_GROUP APP_USER_PREFIX APP_DIR export BASE_DOMAIN UI_SUB WEBMAIL_SUB MTA_SUB export UI_HOST WEBMAIL_HOST MAIL_HOSTNAME 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 21-le-deploy-hook 30-db 40-postfix 50-dovecot 60-rspamd-opendkim 70-nginx 75-le-issue 80-app 90-services 95-monit 98-motd 99-summary do log ">>> Running ${STEP}.sh" bash "./${STEP}.sh" done