#!/usr/bin/env bash # Ghost of BSP_Two — Iris/Mopidy-Pi an Hotelserver (WireGuard + SSH) # Modell wie BSP_One: WG-Tunnel, SSH nur über wg0 mit Key, kein Passwort. # Iris/Mopidy und Musik bleiben unangetastet. # # Voraussetzungen auf dem Pi: # - Raspberry Pi OS (Lite ok), root/sudo, Internetzugang zum WG-Endpoint # - Config-Datei OHNE Secrets im Repo: /etc/wireguard/wg0.conf kommt separat # (sichere Übergabe durch Thomas, nie im Chat) # # Nutzung: # sudo bash install-bsp-two-pi-wg-ssh.sh # Env (optional): # HOUSE_ID=beach SERVER_ID=bsp-two SSH_USER=pi BUFFER_MOUNT=/mnt/usb-buffer set -euo pipefail HOUSE_ID="${HOUSE_ID:-beach}" SERVER_ID="${SERVER_ID:-bsp-two}" SSH_USER="${SSH_USER:-pi}" BUFFER_MOUNT="${BUFFER_MOUNT:-/mnt/usb-buffer}" WG_IFACE="${WG_IFACE:-wg0}" WG_CONF="/etc/wireguard/${WG_IFACE}.conf" SSH_DIR="/home/${SSH_USER}/.ssh" AUTHORIZED="${SSH_DIR}/authorized_keys" log(){ printf '→ %s\n' "$*"; } ok(){ printf '✓ %s\n' "$*"; } die(){ printf '✗ %s\n' "$*" >&2; exit 1; } [[ "$(id -u)" -eq 0 ]] || die "Bitte als root bzw. mit sudo starten." log "Haus=${HOUSE_ID} Server=${SERVER_ID} — Iris/Mopidy wird nicht angefasst." export DEBIAN_FRONTEND=noninteractive # Alte Drittanbieter-Repos (z. B. apt.mopidy.com stretch) nicht den Lauf killen if ! apt-get update -qq; then log "apt update meldete Fehler (oft totes mopidy stretch Repo) — versuche Pakete trotzdem." fi apt-get install -y wireguard wireguard-tools openssh-server # USB-Puffer vorbereiten (Mountpoint + fstab-Hinweis, kein Auto-Format) mkdir -p "$BUFFER_MOUNT" if ! grep -q " ${BUFFER_MOUNT} " /etc/fstab 2>/dev/null; then cat >> /etc/fstab < "${WG_CONF}.example" < Address = 10.XX.YY.ZZ/32 ListenPort = 51820 [Peer] # PublicKey = Endpoint = :51820 AllowedIPs = 10.XX.0.0/16 PersistentKeepalive = 25 EX chmod 600 "${WG_CONF}.example" die "Keine ${WG_CONF} gefunden. Beispiel unter ${WG_CONF}.example — bitte Config sicher ablegen, dann Skript erneut." fi chmod 600 "$WG_CONF" systemctl enable "wg-quick@${WG_IFACE}" systemctl restart "wg-quick@${WG_IFACE}" || die "wg-quick@${WG_IFACE} startet nicht — Config prüfen." ok "WireGuard ${WG_IFACE} aktiv" # SSH härten: Key-only, Passwort aus. ListenAddress bleibt default; # Firewall/WG sorgt dafür, dass Port 22 nicht ins WAN geht. mkdir -p /etc/ssh/sshd_config.d cat > /etc/ssh/sshd_config.d/99-bsp-two-pi.conf </dev/null; then mkdir -p "$SSH_DIR" chmod 700 "$SSH_DIR" touch "$AUTHORIZED" chmod 600 "$AUTHORIZED" chown -R "${SSH_USER}:${SSH_USER}" "$SSH_DIR" fi systemctl reload ssh || systemctl reload sshd || true ok "SSH: nur Key, kein Passwort" # Marker-Unit (Dokumentation, startet nichts an Iris) cat > /etc/systemd/system/bsp-two-pi-link.service <