35 lines
938 B
Bash
Executable File
35 lines
938 B
Bash
Executable File
#!/usr/bin/env bash
|
|
set -euo pipefail
|
|
|
|
BASE="/opt/homelab"
|
|
GENERATOR="$BASE/scripts/generate_caddy.py"
|
|
WRAPPER="$BASE/Caddyfile.wrapper"
|
|
TARGET_CADDYFILE="/etc/caddy/Caddyfile"
|
|
BACKUP_CADDYFILE="/etc/caddy/Caddyfile.bak"
|
|
GENERATED_DIR="$BASE/generated/caddy"
|
|
|
|
echo "[1/5] Ensuring generated directory exists..."
|
|
mkdir -p "$GENERATED_DIR"
|
|
|
|
echo "[2/5] Generating Caddy fragments..."
|
|
python3 "$GENERATOR"
|
|
|
|
echo "[3/5] Installing wrapper Caddyfile..."
|
|
if [[ -f "$TARGET_CADDYFILE" ]]; then
|
|
cp "$TARGET_CADDYFILE" "$BACKUP_CADDYFILE"
|
|
fi
|
|
cp "$WRAPPER" "$TARGET_CADDYFILE"
|
|
|
|
echo "[4/5] Validating Caddy config..."
|
|
if ! caddy validate --config "$TARGET_CADDYFILE"; then
|
|
echo "[ERROR] Validation failed, restoring backup..."
|
|
if [[ -f "$BACKUP_CADDYFILE" ]]; then
|
|
cp "$BACKUP_CADDYFILE" "$TARGET_CADDYFILE"
|
|
fi
|
|
exit 1
|
|
fi
|
|
|
|
echo "[5/5] Reloading Caddy..."
|
|
systemctl reload caddy
|
|
|
|
echo "[Done] Caddy deployed successfully." |