# WebTG Scanner Installation für SVXLink
## Komplette Anleitung für deinen Strato-Server

---

## 📋 SCHRITT 1: Betriebssystem herausfinden

Verbinde dich per SSH zu deinem Server und führe aus:

```bash
cat /etc/os-release
```

Das zeigt dir dein Betriebssystem. Wahrscheinlich Ubuntu oder Debian.

---

## 🔧 SCHRITT 2: Mosquitto MQTT-Broker installieren

Der MQTT-Broker sendet Statusmeldungen über aktive TalkGroups an den Scanner.

### Installation (Ubuntu/Debian):

```bash
# System aktualisieren
sudo apt update
sudo apt upgrade -y

# Mosquitto installieren
sudo apt install mosquitto mosquitto-clients -y

# Mosquitto automatisch starten
sudo systemctl enable mosquitto
sudo systemctl start mosquitto
```

### Mosquitto für WebSocket konfigurieren:

```bash
# Konfigurationsdatei erstellen
sudo nano /etc/mosquitto/conf.d/websocket.conf
```

Füge folgendes ein:

```
# Standard MQTT Port
listener 1883
protocol mqtt

# WebSocket Port für Browser
listener 9001
protocol websockets
allow_anonymous true

# Logging
log_type all
log_dest file /var/log/mosquitto/mosquitto.log
```

Speichern mit `STRG+O`, Enter, `STRG+X`

```bash
# Mosquitto neu starten
sudo systemctl restart mosquitto

# Status prüfen
sudo systemctl status mosquitto
```

---

## 🎵 SCHRITT 3: Icecast2 Audio-Server installieren

Icecast streamt das Audio von SVXLink zu den Clients.

```bash
# Icecast2 installieren
sudo apt install icecast2 -y
```

Bei der Installation wirst du gefragt:
- "Configure Icecast2?" → **Ja**
- Hostname: `svx.funknetzdeutschland.de`
- Source Password: **[wähle ein sicheres Passwort]**
- Relay Password: **[wähle ein sicheres Passwort]**
- Admin Password: **[wähle ein sicheres Passwort]**

**⚠️ WICHTIG: Notiere dir diese Passwörter!**

### Icecast konfigurieren:

```bash
sudo nano /etc/icecast2/icecast.xml
```

Wichtige Einstellungen prüfen/anpassen:

```xml
<icecast>
    <limits>
        <clients>100</clients>
        <sources>10</sources>
    </limits>

    <authentication>
        <source-password>DEIN_SOURCE_PASSWORD</source-password>
        <admin-password>DEIN_ADMIN_PASSWORD</admin-password>
    </authentication>

    <hostname>svx.funknetzdeutschland.com</hostname>

    <listen-socket>
        <port>8000</port>
    </listen-socket>
</icecast>
```

```bash
# Icecast aktivieren
sudo nano /etc/default/icecast2
```

Ändere `ENABLE=false` zu `ENABLE=true`

```bash
# Icecast starten
sudo systemctl enable icecast2
sudo systemctl restart icecast2
sudo systemctl status icecast2
```

---

## 🔗 SCHRITT 4: SVXLink mit Icecast verbinden

Jetzt müssen wir SVXLink so konfigurieren, dass es Audio an Icecast sendet.

```bash
# SVXLink-Konfiguration bearbeiten
sudo nano /etc/svxlink/svxlink.conf
```

Füge für jede TalkGroup einen AUDIO-Eingang hinzu. Beispiel für 10 TalkGroups:

```ini
[AudioEncoderOpus_tg1]
TYPE=OPUS
BITRATE=32000

[AudioEncoderOpus_tg2]
TYPE=OPUS
BITRATE=32000

# ... bis tg10

[AudioUplink_tg1]
TYPE=Icecast
ENCODER=AudioEncoderOpus_tg1
SERVER=localhost
SERVER_PORT=8000
PASSWORD=DEIN_SOURCE_PASSWORD
MOUNTPOINT=/tg1
NAME=TalkGroup 1
DESCRIPTION=SVXLink TG1 Stream
GENRE=Amateur Radio

[AudioUplink_tg2]
TYPE=Icecast
ENCODER=AudioEncoderOpus_tg2
SERVER=localhost
SERVER_PORT=8000
PASSWORD=DEIN_SOURCE_PASSWORD
MOUNTPOINT=/tg2
NAME=TalkGroup 2
DESCRIPTION=SVXLink TG2 Stream
GENRE=Amateur Radio

# ... bis tg10
```

⚠️ **Ersetze `DEIN_SOURCE_PASSWORD` mit dem Icecast Source-Password!**

---

## 🐍 SCHRITT 5: Backend-Script installieren

Dieses Script überwacht SVXLink und sendet Statusupdates per MQTT.

```bash
# Python und benötigte Pakete installieren
sudo apt install python3 python3-pip -y
sudo pip3 install paho-mqtt watchdog
```

```bash
# Script-Verzeichnis erstellen
sudo mkdir -p /opt/webtg
sudo nano /opt/webtg/svxlink_monitor.py
```

Füge folgendes Python-Script ein (kommt als separate Datei).

---

## 🚀 SCHRITT 6: Firewall-Ports öffnen

```bash
# Falls UFW aktiv ist:
sudo ufw allow 8000/tcp   # Icecast
sudo ufw allow 9001/tcp   # MQTT WebSocket
sudo ufw allow 1883/tcp   # MQTT
sudo ufw allow 80/tcp     # HTTP (für die Website)
sudo ufw allow 443/tcp    # HTTPS
```

---

## 🌐 SCHRITT 7: WebTG Scanner HTML anpassen

Die HTML-Datei muss auf deine Server-Adressen angepasst werden:

```javascript
const CONFIG = {
    icecastUrl: 'http://svx.funknetzdeutschland.com:8000',
    mqttUrl: 'ws://svx.funknetzdeutschland.com:9001',
    numChannels: 10,
    maxTG: 300000,
    // ...
};
```

---

## ✅ SCHRITT 8: Testen

### MQTT testen:
```bash
# Subscribe auf Testnachrichten
mosquitto_sub -h localhost -p 1883 -t 'webtg/#' -v
```

### Icecast testen:
Browser öffnen: `http://svx.funknetzdeutschland.com:8000`
Du solltest das Icecast-Admin-Interface sehen.

---

## 📝 Zusammenfassung der URLs:

- **MQTT WebSocket**: `ws://svx.funknetzdeutschland.com:9001`
- **Icecast Admin**: `http://svx.funknetzdeutschland.com:8000`
- **Stream URLs**: `http://svx.funknetzdeutschland.com:8000/tg1` bis `/tg10`
- **WebTG Scanner**: Deine HTML-Datei auf dem Webserver

---

## 🆘 Troubleshooting

### MQTT funktioniert nicht:
```bash
sudo systemctl status mosquitto
sudo tail -f /var/log/mosquitto/mosquitto.log
```

### Icecast funktioniert nicht:
```bash
sudo systemctl status icecast2
sudo tail -f /var/log/icecast2/error.log
```

### SVXLink-Logs prüfen:
```bash
sudo tail -f /var/log/syslog | grep svxlink
```

---

## 📞 Nächste Schritte:

1. Arbeite diese Anleitung Schritt für Schritt durch
2. Notiere alle Passwörter!
3. Teste jeden Dienst einzeln
4. Melde dich, wenn du irgendwo nicht weiterkommst!

**73 de Erfolg** 📡
