92 lines
3.0 KiB
Bash
Executable File
92 lines
3.0 KiB
Bash
Executable File
#!/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
|
|
|
|
VENV_DIR="$SCRIPT_DIR/.venv"
|
|
echo "Python-Abhängigkeiten werden installiert (venv: $VENV_DIR)..."
|
|
python3 -m venv "$VENV_DIR"
|
|
"$VENV_DIR/bin/pip" install -q -r "$SCRIPT_DIR/requirements.txt"
|
|
PYTHON="$VENV_DIR/bin/python"
|
|
|
|
# ── 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=${SCRIPT_DIR}/.venv/bin/python ${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://$(ip route get 1 2>/dev/null | awk '{print $7; exit}'):8765"
|
|
echo "Tipp: Seite als Lesezeichen auf Handy/PC speichern."
|
|
echo ""
|
|
fi
|
|
echo "Erster Start: ollama pull gemma3:12b"
|