always regenerate configs on --update too (picks up template changes like storage.encryption_key)
This commit is contained in:
parent
080341f8a8
commit
f0c6aa1a2e
1 changed files with 39 additions and 41 deletions
|
|
@ -248,51 +248,49 @@ fi
|
||||||
GEN_DIR=$(mktemp -d)
|
GEN_DIR=$(mktemp -d)
|
||||||
trap "rm -rf '$GEN_DIR'" EXIT
|
trap "rm -rf '$GEN_DIR'" EXIT
|
||||||
|
|
||||||
if [ "$MODE" != "update" ]; then
|
echo "[*] Generating config files..."
|
||||||
echo "[*] Generating config files..."
|
|
||||||
|
|
||||||
# Caddyfile
|
# Caddyfile
|
||||||
sed -e "s|{DOMAIN}|$DOMAIN|g" -e "s|{TLS_EMAIL}|${TLS_EMAIL:-admin@$DOMAIN}|g" \
|
sed -e "s|{DOMAIN}|$DOMAIN|g" -e "s|{TLS_EMAIL}|${TLS_EMAIL:-admin@$DOMAIN}|g" \
|
||||||
"$BUILD_DIR/config/caddy/Caddyfile" > "$GEN_DIR/Caddyfile"
|
"$BUILD_DIR/config/caddy/Caddyfile" > "$GEN_DIR/Caddyfile"
|
||||||
|
|
||||||
# Authelia config — preserve existing secrets if present
|
# Authelia config — preserve existing secrets if present
|
||||||
JWT_SECRET="${JWT_SECRET:-$(openssl rand -hex 32)}"
|
JWT_SECRET="${JWT_SECRET:-$(openssl rand -hex 32)}"
|
||||||
SESSION_SECRET="${SESSION_SECRET:-$(openssl rand -hex 32)}"
|
SESSION_SECRET="${SESSION_SECRET:-$(openssl rand -hex 32)}"
|
||||||
STORAGE_ENCRYPTION_KEY="${STORAGE_ENCRYPTION_KEY:-$(openssl rand -hex 32)}"
|
STORAGE_ENCRYPTION_KEY="${STORAGE_ENCRYPTION_KEY:-$(openssl rand -hex 32)}"
|
||||||
sed -e "s|{DOMAIN}|$DOMAIN|g" -e "s|{JWT_SECRET}|$JWT_SECRET|g" \
|
sed -e "s|{DOMAIN}|$DOMAIN|g" -e "s|{JWT_SECRET}|$JWT_SECRET|g" \
|
||||||
-e "s|{SESSION_SECRET}|$SESSION_SECRET|g" \
|
-e "s|{SESSION_SECRET}|$SESSION_SECRET|g" \
|
||||||
-e "s|{STORAGE_ENCRYPTION_KEY}|$STORAGE_ENCRYPTION_KEY|g" \
|
-e "s|{STORAGE_ENCRYPTION_KEY}|$STORAGE_ENCRYPTION_KEY|g" \
|
||||||
-e "s|{SMTP_HOST}|${SMTP_HOST:-smtp.openxchange.eu}|g" \
|
-e "s|{SMTP_HOST}|${SMTP_HOST:-smtp.openxchange.eu}|g" \
|
||||||
-e "s|{SMTP_PORT}|${SMTP_PORT:-587}|g" \
|
-e "s|{SMTP_PORT}|${SMTP_PORT:-587}|g" \
|
||||||
-e "s|{SMTP_USER}|${SMTP_USER:-post@nextwks.eu}|g" \
|
-e "s|{SMTP_USER}|${SMTP_USER:-post@nextwks.eu}|g" \
|
||||||
-e "s|{SMTP_PASS}|$SMTP_PASS|g" \
|
-e "s|{SMTP_PASS}|$SMTP_PASS|g" \
|
||||||
"$BUILD_DIR/config/authelia/configuration.yml" > "$GEN_DIR/configuration.yml"
|
"$BUILD_DIR/config/authelia/configuration.yml" > "$GEN_DIR/configuration.yml"
|
||||||
|
|
||||||
# Users database
|
# Users database
|
||||||
ADMIN_PASSWORD_HASH="${ADMIN_PASSWORD_HASH:-}"
|
ADMIN_PASSWORD_HASH="${ADMIN_PASSWORD_HASH:-}"
|
||||||
if [ -z "$ADMIN_PASSWORD_HASH" ] && [ -n "${ADMIN_PASSWORD:-}" ]; then
|
if [ -z "$ADMIN_PASSWORD_HASH" ] && [ -n "${ADMIN_PASSWORD:-}" ]; then
|
||||||
ADMIN_PASSWORD_HASH=$(cd "$BUILD_DIR" && go run ./tools/hash-password/ "$ADMIN_PASSWORD" 2>/dev/null || echo "")
|
ADMIN_PASSWORD_HASH=$(cd "$BUILD_DIR" && go run ./tools/hash-password/ "$ADMIN_PASSWORD" 2>/dev/null || echo "")
|
||||||
fi
|
|
||||||
sed -e "s|{ADMIN_PASSWORD_HASH}|$ADMIN_PASSWORD_HASH|g" \
|
|
||||||
-e "s|{TLS_EMAIL}|${TLS_EMAIL:-admin@$DOMAIN}|g" \
|
|
||||||
"$BUILD_DIR/config/authelia/users_database.yml" > "$GEN_DIR/users_database.yml"
|
|
||||||
|
|
||||||
# Copy generated configs to target
|
|
||||||
maybe_sudo cp "$GEN_DIR/Caddyfile" "$TARGET_DIR/config/caddy/Caddyfile"
|
|
||||||
maybe_sudo cp "$GEN_DIR/configuration.yml" "$TARGET_DIR/config/authelia/configuration.yml"
|
|
||||||
maybe_sudo cp "$GEN_DIR/users_database.yml" "$TARGET_DIR/config/authelia/users_database.yml"
|
|
||||||
|
|
||||||
# Persist generated secrets so --destroy is idempotent
|
|
||||||
if [ -f "$BACKUP_DIR/.env" ]; then
|
|
||||||
maybe_sudo sed -i "/^JWT_SECRET=/d; /^SESSION_SECRET=/d; /^STORAGE_ENCRYPTION_KEY=/d; /^ADMIN_PASSWORD_HASH=/d" "$BACKUP_DIR/.env" 2>/dev/null || true
|
|
||||||
fi
|
|
||||||
# Quote values to protect $ signs (bcrypt hashes, etc.) when sourcing
|
|
||||||
maybe_sudo bash -c "echo \"JWT_SECRET='$JWT_SECRET'\" >> '$BACKUP_DIR/.env'"
|
|
||||||
maybe_sudo bash -c "echo \"SESSION_SECRET='$SESSION_SECRET'\" >> '$BACKUP_DIR/.env'"
|
|
||||||
maybe_sudo bash -c "echo \"STORAGE_ENCRYPTION_KEY='$STORAGE_ENCRYPTION_KEY'\" >> '$BACKUP_DIR/.env'"
|
|
||||||
[ -n "$ADMIN_PASSWORD_HASH" ] && maybe_sudo bash -c "echo \"ADMIN_PASSWORD_HASH='$ADMIN_PASSWORD_HASH'\" >> '$BACKUP_DIR/.env'"
|
|
||||||
maybe_sudo chmod 600 "$BACKUP_DIR/.env"
|
|
||||||
fi
|
fi
|
||||||
|
sed -e "s|{ADMIN_PASSWORD_HASH}|$ADMIN_PASSWORD_HASH|g" \
|
||||||
|
-e "s|{TLS_EMAIL}|${TLS_EMAIL:-admin@$DOMAIN}|g" \
|
||||||
|
"$BUILD_DIR/config/authelia/users_database.yml" > "$GEN_DIR/users_database.yml"
|
||||||
|
|
||||||
|
# Copy generated configs to target
|
||||||
|
maybe_sudo cp "$GEN_DIR/Caddyfile" "$TARGET_DIR/config/caddy/Caddyfile"
|
||||||
|
maybe_sudo cp "$GEN_DIR/configuration.yml" "$TARGET_DIR/config/authelia/configuration.yml"
|
||||||
|
maybe_sudo cp "$GEN_DIR/users_database.yml" "$TARGET_DIR/config/authelia/users_database.yml"
|
||||||
|
|
||||||
|
# Persist generated secrets so --destroy is idempotent
|
||||||
|
if [ -f "$BACKUP_DIR/.env" ]; then
|
||||||
|
maybe_sudo sed -i "/^JWT_SECRET=/d; /^SESSION_SECRET=/d; /^STORAGE_ENCRYPTION_KEY=/d; /^ADMIN_PASSWORD_HASH=/d" "$BACKUP_DIR/.env" 2>/dev/null || true
|
||||||
|
fi
|
||||||
|
# Quote values to protect $ signs (bcrypt hashes, etc.) when sourcing
|
||||||
|
maybe_sudo bash -c "echo \"JWT_SECRET='$JWT_SECRET'\" >> '$BACKUP_DIR/.env'"
|
||||||
|
maybe_sudo bash -c "echo \"SESSION_SECRET='$SESSION_SECRET'\" >> '$BACKUP_DIR/.env'"
|
||||||
|
maybe_sudo bash -c "echo \"STORAGE_ENCRYPTION_KEY='$STORAGE_ENCRYPTION_KEY'\" >> '$BACKUP_DIR/.env'"
|
||||||
|
[ -n "$ADMIN_PASSWORD_HASH" ] && maybe_sudo bash -c "echo \"ADMIN_PASSWORD_HASH='$ADMIN_PASSWORD_HASH'\" >> '$BACKUP_DIR/.env'"
|
||||||
|
maybe_sudo chmod 600 "$BACKUP_DIR/.env"
|
||||||
|
|
||||||
# ============================================================
|
# ============================================================
|
||||||
# 10. FIX OWNERSHIP — all files in TARGET_DIR/BACKUP_DIR to user
|
# 10. FIX OWNERSHIP — all files in TARGET_DIR/BACKUP_DIR to user
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue