Durchsicht: Robustheit bei Neuinstallationen

- auth.py: .env auch in schreibgeschütztem Ordner aktualisieren (Server-Login)
- Controller: ohne Spotify-Login warten statt abstürzen; Playlist darf fehlen;
  nicht abspielbare Wünsche überspringen statt hängen zu bleiben
- install-server.sh: alle SSH-Ports freigeben (kein Aussperren), curl und
  python3-systemd (fail2ban) installieren
- install-player.sh: Bluetooth per rfkill entsperren und Dienst starten

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This commit is contained in:
2026-10-17 19:55:00 +01:00
co-authored by Claude Opus 5.5
parent 1c31ac2b6d
commit b83da952ee
6 changed files with 129 additions and 13 deletions
+9 -7
View File
@@ -43,9 +43,11 @@ if [ $UPDATE = 0 ]; then
warnung "Das sieht nicht nach einer Playlist aus – bitte später im Admin-Bereich eintragen."
PLAYLIST_ID=""
fi
SSH_PORT="$(${SUDO} sshd -T 2>/dev/null | awk '/^port /{print $2; exit}')"
SSH_PORT="${SSH_PORT:-22}"
ja_nein "Firewall (ufw) einrichten? Erlaubt SSH (Port $SSH_PORT), 80 und 443" j && FIREWALL=1 || FIREWALL=0
# alle Ports, auf denen SSH lauscht, plus den der aktuellen Sitzung – damit sich niemand aussperrt
SSH_PORTS="$( { ${SUDO} sshd -T 2>/dev/null | awk '/^port /{print $2}'; [ -n "${SSH_CONNECTION:-}" ] && awk '{print $4}' <<<"$SSH_CONNECTION"; } | sort -un | tr '\n' ' ')"
SSH_PORTS="${SSH_PORTS:-22}"
SSH_PORT="${SSH_PORTS%% *}" # für fail2ban: erster Port
ja_nein "Firewall (ufw) einrichten? Erlaubt SSH (Port ${SSH_PORTS% }), 80 und 443" j && FIREWALL=1 || FIREWALL=0
ja_nein "fail2ban für SSH einrichten?" j && FAIL2BAN=1 || FAIL2BAN=0
ja_nein "Automatische Sicherheitsupdates aktivieren?" j && AUTOUPDATE=1 || AUTOUPDATE=0
export DOMAIN ACME_EMAIL SSH_PORT
@@ -54,10 +56,10 @@ fi
# ------------------------------------------------------------------ Pakete
schritt "Pakete"
$SUDO apt-get update -qq
PAKETE=(python3-venv sqlite3 caddy)
PAKETE=(python3-venv sqlite3 caddy curl)
if [ $UPDATE = 0 ]; then
[ $FIREWALL = 1 ] && PAKETE+=(ufw)
[ $FAIL2BAN = 1 ] && PAKETE+=(fail2ban)
[ $FAIL2BAN = 1 ] && PAKETE+=(fail2ban python3-systemd)
[ $AUTOUPDATE = 1 ] && PAKETE+=(unattended-upgrades)
fi
pakete "${PAKETE[@]}"
@@ -128,11 +130,11 @@ if [ $UPDATE = 0 ]; then
schritt "Firewall (ufw)"
$SUDO ufw default deny incoming >/dev/null
$SUDO ufw default allow outgoing >/dev/null
$SUDO ufw allow "$SSH_PORT/tcp" comment "SSH" >/dev/null
for p in $SSH_PORTS; do $SUDO ufw allow "$p/tcp" comment "SSH" >/dev/null; done
$SUDO ufw allow 80/tcp comment "HTTP (Caddy/ACME)" >/dev/null
$SUDO ufw allow 443/tcp comment "HTTPS (Caddy)" >/dev/null
$SUDO ufw --force enable >/dev/null
info "ufw aktiv: $SSH_PORT, 80, 443"
info "ufw aktiv: SSH ${SSH_PORTS% }, 80, 443"
fi
if [ $FAIL2BAN = 1 ]; then
schritt "fail2ban"