mailwolt/scripts/bootstrap.sh

64 lines
1.8 KiB
Bash

#!/usr/bin/env bash
set -euo pipefail
cd "$(dirname "$0")"
source ./lib.sh
require_root
header
# ── Pflicht: Mailserver-FQDN ──────────────────────────────────────────────
MAIL_FQDN="${MAIL_FQDN:-}"
if [[ -z "${MAIL_FQDN}" ]]; then
read -r -p "Mailserver FQDN (z.B. mx.example.com): " MAIL_FQDN
fi
[[ "$MAIL_FQDN" == *.* ]] || die "MAIL_FQDN (z.B. mx.example.com) ist Pflicht."
# Ableitungen
MTA_SUB="${MAIL_FQDN%%.*}"
BASE_DOMAIN="${MAIL_FQDN#*.}"
UI_SUB="${UI_SUB:-ui}"
WEBMAIL_SUB="${WEBMAIL_SUB:-webmail}"
SYSTEM_SUB="${SYSTEM_SUB:-system}" # kommt aus Seeder (App), hier nur Derivate
export APP_NAME="${APP_NAME:-MailWolt}"
export APP_ENV="${APP_ENV:-production}"
export APP_DEBUG="${APP_DEBUG:-false}"
export BASE_DOMAIN UI_SUB WEBMAIL_SUB MTA_SUB SYSTEM_SUB
export UI_HOST="${UI_SUB}.${BASE_DOMAIN}"
export WEBMAIL_HOST="${WEBMAIL_SUB}.${BASE_DOMAIN}"
export MAIL_HOSTNAME="${MAIL_FQDN}"
export SYSTEM_HOSTNAME="${SYSTEM_SUB}.${BASE_DOMAIN}"
export SERVER_PUBLIC_IPV4="$(detect_ip)"
export SERVER_PUBLIC_IPV6="$(detect_ipv6)"
# Zeitzone/Locale heuristisch (kannst du später per UI anpassen)
export APP_TZ="$(detect_timezone)"
export APP_LOCALE="$(guess_locale_from_tz "$APP_TZ")"
# LE-Kontakt
export LE_EMAIL="${LE_EMAIL:-admin@${BASE_DOMAIN}}"
# Repo/Branch (für 80-app.sh)
export GIT_REPO="${GIT_REPO:-https://git.nexlab.at/boban/mailwolt.git}"
export GIT_BRANCH="${GIT_BRANCH:-main}"
export APP_USER="${APP_USER:-mailwolt}"
export APP_GROUP="${APP_GROUP:-www-data}"
export APP_DIR="/var/www/${APP_USER}"
export APP_USER_PREFIX="${APP_USER_PREFIX:-mw}"
# Run modules
./10-provision.sh
./20-ssl.sh
./30-db.sh
./40-postfix.sh
./50-dovecot.sh
./60-rspamd-opendkim.sh
./70-nginx.sh
./80-app.sh
./90-services.sh
./95-monit.sh
./98-motd.sh
./99-summary.sh