76 lines
2.5 KiB
Bash
76 lines
2.5 KiB
Bash
#!/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
|
||
|
||
DB_PASS="${DB_PASS:-$(openssl rand -hex 16)}"
|
||
REDIS_PASS="${REDIS_PASS:-$(openssl rand -hex 16)}"
|
||
|
||
export DB_PASS REDIS_PASS
|
||
|
||
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}}"
|
||
|
||
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 |