#!/usr/bin/env bash # Installerer SG Announcer på en Debian/Ubuntu-maskin (testet mot Linux Mint). # # git clone https://git.1x1.no/kent/sg-announcer.git # cd sg-announcer && ./install.sh # # Kjør som vanlig bruker (ikke sudo); skriptet spør om passord der det trengs. # Valgfritt: ANNOUNCER_PIN=1234 ./install.sh -> sida krever PIN # ANNOUNCER_PORT=8090 ./install.sh -> annen port # Kan kjøres på nytt; da oppdateres avhengigheter og tjenesten startes om. set -euo pipefail if [[ $EUID -eq 0 ]]; then echo "Kjør som vanlig bruker, ikke root/sudo." >&2 exit 1 fi REPO_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" PORT="${ANNOUNCER_PORT:-8090}" PIN="${ANNOUNCER_PIN:-}" UNIT_DIR="$HOME/.config/systemd/user" UNIT="$UNIT_DIR/sg-announcer.service" step() { printf '\n\033[1m==> %s\033[0m\n' "$*"; } step "Systempakker (apt)" sudo apt-get update -qq sudo apt-get install -y -qq git curl ca-certificates ffmpeg pulseaudio-utils # pw-play finnes i pipewire-bin på Mint 22 / Ubuntu 24.04. På eldre (PulseAudio) # faller appen tilbake til paplay, så dette er ikke kritisk. sudo apt-get install -y -qq pipewire-bin 2>/dev/null || true step "uv (Python-pakkehåndterer)" if command -v uv >/dev/null 2>&1; then UV="$(command -v uv)" elif [[ -x "$HOME/.local/bin/uv" ]]; then UV="$HOME/.local/bin/uv" else curl -LsSf https://astral.sh/uv/install.sh | sh UV="$HOME/.local/bin/uv" fi echo "uv: $UV ($("$UV" --version))" step "Python 3.13 og avhengigheter" cd "$REPO_DIR" "$UV" sync mkdir -p cache chimes voices step "Laster ned Piper-stemmene (lokal reserve, ca. 600 MB, kun første gang)" "$UV" run python -c "import logging, announcer; logging.basicConfig(level=logging.INFO, format='%(message)s'); announcer.ensure_voices()" step "systemd-brukertjeneste" mkdir -p "$UNIT_DIR" { cat < "$UNIT" systemctl --user daemon-reload systemctl --user enable --now sg-announcer systemctl --user restart sg-announcer step "Brannmur" if ip link show wt0 >/dev/null 2>&1; then # NetBird er installert: slipp inn kun via VPN-grensesnittet, blokker alt annet. sudo ufw default deny incoming sudo ufw default allow outgoing sudo ufw allow in on wt0 to any port 22 proto tcp comment "ssh via netbird" sudo ufw allow in on wt0 to any port 22022 proto tcp comment "netbird ssh-server" sudo ufw allow in on wt0 to any port "$PORT" proto tcp comment "sg-announcer via netbird" sudo ufw delete allow "$PORT/tcp" >/dev/null 2>&1 || true sudo ufw --force enable echo "ufw aktiv: port $PORT, 22 og 22022 er åpne kun på wt0 (NetBird)." echo "Vil du også nå sida fra lokalt LAN uten VPN:" echo " sudo ufw allow from to any port $PORT proto tcp" elif sudo ufw status 2>/dev/null | grep -q "Status: active"; then sudo ufw allow "$PORT/tcp" comment "sg-announcer" else echo "ufw er ikke aktiv, ingen regel nødvendig." fi sleep 2 IP="$(hostname -I 2>/dev/null | awk '{print $1}')" step "Ferdig" systemctl --user --no-pager status sg-announcer | head -5 || true cat <}:$PORT fra hva som helst på nettet. Tips for en laptop på arrangementet: - Lyden spilles i din innloggede økt, så maskinen må være logget inn. Slå på automatisk innlogging (Innstillinger -> Påloggingsvindu). - Hindre at den sover med lokket igjen: sudo sed -i 's/^#\?HandleLidSwitch=.*/HandleLidSwitch=ignore/' /etc/systemd/logind.conf sudo systemctl restart systemd-logind - Logg: journalctl --user -u sg-announcer -f MSG