feat: install.sh — ROCm check, LAN-mode prompt, systemd user service, hotkey instructions
This commit is contained in:
Executable
+88
@@ -0,0 +1,88 @@
|
||||
#!/usr/bin/env bash
|
||||
set -euo pipefail
|
||||
|
||||
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
||||
SERVICE_NAME="tueit-transcriber"
|
||||
SERVICE_FILE="$HOME/.config/systemd/user/${SERVICE_NAME}.service"
|
||||
|
||||
echo "=== tüit Transkriptor Installer ==="
|
||||
|
||||
command -v python3 >/dev/null 2>&1 || { echo "ERROR: python3 not found"; exit 1; }
|
||||
|
||||
if ! command -v ollama >/dev/null 2>&1; then
|
||||
echo "WARNING: ollama not found. Install from https://ollama.com"
|
||||
echo " Nach der Installation: ollama pull gemma3:12b"
|
||||
fi
|
||||
|
||||
if command -v rocminfo >/dev/null 2>&1; then
|
||||
echo "ROCm erkannt — GPU-Beschleunigung verfügbar"
|
||||
else
|
||||
echo "INFO: ROCm nicht gefunden — Whisper läuft auf der CPU (langsamer)"
|
||||
echo " Für GPU: sudo pacman -S rocm-hip-sdk"
|
||||
fi
|
||||
|
||||
echo "Python-Abhängigkeiten werden installiert..."
|
||||
pip install --user -r "$SCRIPT_DIR/requirements.txt"
|
||||
|
||||
# ── Netzwerk-Modus abfragen ────────────────────────────────────────────────────
|
||||
|
||||
echo ""
|
||||
echo "Soll die App auch von anderen Geräten im Heimnetz erreichbar sein?"
|
||||
echo " [1] Nur lokal (Standard, sicherer)"
|
||||
echo " [2] Im Heimnetz (Windows, Android, andere Linux-Geräte)"
|
||||
read -r -p "Auswahl [1/2]: " NET_MODE
|
||||
|
||||
if [[ "$NET_MODE" == "2" ]]; then
|
||||
HOST="0.0.0.0"
|
||||
echo "INFO: App wird auf allen Netzwerk-Interfaces gestartet."
|
||||
echo " Firewall: sudo ufw allow 8765/tcp"
|
||||
else
|
||||
HOST="127.0.0.1"
|
||||
fi
|
||||
|
||||
# Netzwerk-Host in Config schreiben, falls noch nicht vorhanden
|
||||
CFG_FILE="$HOME/.config/tueit-transcriber/config.toml"
|
||||
mkdir -p "$(dirname "$CFG_FILE")"
|
||||
if ! grep -q "\[network\]" "$CFG_FILE" 2>/dev/null; then
|
||||
printf '\n[network]\nhost = "%s"\n' "$HOST" >> "$CFG_FILE"
|
||||
echo "Config aktualisiert: $CFG_FILE"
|
||||
fi
|
||||
|
||||
# ── Systemd User Service ───────────────────────────────────────────────────────
|
||||
|
||||
mkdir -p "$HOME/.config/systemd/user"
|
||||
cat > "$SERVICE_FILE" <<EOF
|
||||
[Unit]
|
||||
Description=tüit Transkriptor
|
||||
After=graphical-session.target
|
||||
|
||||
[Service]
|
||||
ExecStart=$(command -v python3) ${SCRIPT_DIR}/main.py
|
||||
Restart=on-failure
|
||||
RestartSec=5
|
||||
Environment=DISPLAY=:0
|
||||
Environment=DBUS_SESSION_BUS_ADDRESS=unix:path=/run/user/$(id -u)/bus
|
||||
|
||||
[Install]
|
||||
WantedBy=default.target
|
||||
EOF
|
||||
|
||||
systemctl --user daemon-reload
|
||||
systemctl --user enable "$SERVICE_NAME"
|
||||
systemctl --user start "$SERVICE_NAME"
|
||||
|
||||
echo ""
|
||||
echo "=== Fertig ==="
|
||||
echo "Status: systemctl --user status $SERVICE_NAME"
|
||||
echo "Logs: journalctl --user -u $SERVICE_NAME -f"
|
||||
echo ""
|
||||
echo "KDE-Hotkey einrichten:"
|
||||
echo " Systemeinstellungen → Kurzbefehle → Eigene Kurzbefehle"
|
||||
echo " Befehl: pkill -USR1 -f main.py"
|
||||
echo ""
|
||||
if [[ "$NET_MODE" == "2" ]]; then
|
||||
echo "Netzwerk-Zugriff: http://$(hostname -I | awk '{print $1}'):8765"
|
||||
echo "Tipp: Seite als Lesezeichen auf Handy/PC speichern."
|
||||
echo ""
|
||||
fi
|
||||
echo "Erster Start: ollama pull gemma3:12b"
|
||||
Reference in New Issue
Block a user