#!/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 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