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