android-wireguard-client/README.md

335 lines
8.2 KiB
Markdown

# WireGuard TV
Ein WireGuard VPN Client speziell entwickelt für Amazon Fire TV Stick mit vollständiger D-Pad Fernbedienungs-Navigation.
## Beschreibung
WireGuard TV ermöglicht es, eine sichere VPN-Verbindung auf dem Amazon Fire TV Stick herzustellen. Die App ist vollständig für die Bedienung mit der Fire TV Fernbedienung optimiert und bietet eine intuitive Leanback-Oberfläche.
### Features
- **D-Pad Navigation** - Vollständig mit Fire TV Fernbedienung bedienbar
- **Web-Interface** - Configs per Browser vom Smartphone oder PC hochladen und verwalten
- **Datei-Import** - .conf Dateien vom lokalen Speicher importieren (per ADB übertragen)
- **Auto-Connect** - Automatische Verbindung beim Gerätestart (pro Tunnel konfigurierbar)
- **Geo-Location Anzeige** - Zeigt aktuelle öffentliche IP mit Land und Flagge an
- **Status Anzeige** - RX/TX Bytes, Verbindungsstatus in Echtzeit
- **Web-Server Autostart** - Optional Server beim Gerätestart automatisch starten
- **Passwortschutz** - Web-Interface kann mit Passwort geschützt werden
- **Kill Switch** - Internet blockieren wenn VPN getrennt (in Einstellungen)
---
## Installation
### Voraussetzungen
- Amazon Fire TV Stick (1. Generation oder neuer)
- Computer mit ADB (Android Debug Bridge)
- Beide Geräte im selben Netzwerk
### Fire TV für ADB vorbereiten
1. **Entwickleroptionen aktivieren:**
- Einstellungen > Mein Fire TV > Info
- 7x auf "Fire TV Stick" klicken bis "Du bist jetzt Entwickler" erscheint
2. **ADB aktivieren:**
- Einstellungen > Mein Fire TV > Entwickleroptionen
- "ADB-Debugging" aktivieren
- "Apps aus unbekannten Quellen" aktivieren
3. **IP-Adresse herausfinden:**
- Einstellungen > Mein Fire TV > Info > Netzwerk
- IP-Adresse notieren (z.B. 192.168.1.100)
### ADB installieren
```bash
# Debian/Ubuntu
sudo apt install adb
# Fedora
sudo dnf install android-tools
# Arch Linux
sudo pacman -S android-tools
```
### App installieren
```bash
# Mit Fire TV verbinden
adb connect 192.168.1.100:5555
# Beim ersten Mal: Auf dem TV "Erlauben" wählen und "Immer von diesem Computer erlauben" anhaken
# Verbindung prüfen
adb devices
# App installieren
adb install wireguard-tv.apk
# Oder bei Update:
adb install -r wireguard-tv.apk
```
---
## Benutzung
### WireGuard-Konfiguration hinzufügen
#### Methode 1: Web-Upload (empfohlen)
Der einfachste Weg - funktioniert mit jedem Gerät im gleichen Netzwerk:
1. In WireGuard TV App: **"Web-Upload"** wählen und Server starten
2. Die angezeigte URL (z.B. `http://192.168.1.100:8080`) im Browser öffnen
3. Im Tab **"Config hochladen"**:
- .conf Datei auswählen ODER Config-Text direkt einfügen
- Namen vergeben und hochladen
4. Der Tunnel erscheint sofort in der App
**Web-Interface Features:**
- Tunnel verwalten (Verbinden, Trennen, Löschen, Bearbeiten)
- Autostart pro Tunnel aktivieren/deaktivieren
- Geo-Location Anzeige (IP, Land, Stadt)
- Server-Einstellungen (Port, Passwort, Autostart)
#### Methode 2: Datei-Import (via ADB)
1. Config-Datei per ADB übertragen:
```bash
adb push meine-config.conf /sdcard/Download/
```
2. In WireGuard TV App: **"Datei importieren"** wählen
3. Die Datei aus der Liste auswählen
**Unterstützte Pfade:**
- `/sdcard/Download/`
- `/sdcard/WireGuard/`
- `/sdcard/wireguard/`
#### Methode 3: Manuell eingeben
1. **"Tunnel hinzufügen"** wählen
2. Alle Felder manuell ausfüllen (Private Key, Addresses, Public Key, Endpoint, etc.)
### Tunnel verbinden
- Tunnel mit D-Pad auswählen
- Enter/OK drücken
- **"Verbinden"** wählen
### Autostart aktivieren
1. Tunnel mit D-Pad auswählen und Enter drücken
2. **"Autostart beim Boot"** aktivieren
3. Der Tunnel verbindet sich automatisch beim Gerätestart
**Hinweis:** Beim ersten Aktivieren wird der Tunnel sofort verbunden, damit die VPN-Berechtigung erteilt wird (erforderlich für Autostart).
### Tastenkürzel
| Taste | Funktion |
|-------|----------|
| Enter/OK | Tunnel-Aktionen öffnen |
| Zurück | Navigation zurück |
| D-Pad | Zwischen Elementen navigieren |
---
## Web-Interface
Das integrierte Web-Interface ermöglicht die komfortable Verwaltung vom Smartphone oder PC aus.
### Server starten
1. In der App: **"Web-Upload"** > **"Server starten"**
2. URL wird angezeigt (z.B. `http://192.168.1.100:8080`)
3. URL im Browser öffnen
### Tabs
- **Tunnel verwalten** - Alle Tunnel anzeigen, verbinden, trennen, löschen, Autostart
- **Config hochladen** - Neue Konfiguration per Datei oder Text hinzufügen
- **Einstellungen** - Server-Port, Passwort, Autostart konfigurieren
### Einstellungen
- **Port** - Standard: 8080 (änderbar)
- **Passwortschutz** - Optional, schützt das Web-Interface
- **Server-Autostart** - Server automatisch beim Gerätestart starten
---
## Projekt-Struktur
```
wireguard-tv/
├── app/ # Fire TV App
│ └── src/main/
│ ├── java/.../
│ │ ├── ui/ # Activities, Fragments, Presenter
│ │ ├── vpn/ # WireGuard Tunnel Service
│ │ ├── web/ # HTTP Server & Web-Interface
│ │ ├── data/ # Repository, Settings (DataStore)
│ │ ├── model/ # Data Classes
│ │ ├── receiver/ # Boot Receiver
│ │ ├── tile/ # Quick Settings Tile
│ │ └── util/ # Hilfsklassen (IpGeoService)
│ └── res/ # Layouts, Drawables, Values
├── build.gradle # Root Build Config
└── settings.gradle # Projekt-Einstellungen
```
---
## Build (für Entwickler)
### Voraussetzungen
- Android Studio Hedgehog (2023.1.1) oder neuer
- JDK 17
- Android SDK 34
### Android Studio installieren
```bash
# Flatpak (empfohlen)
flatpak install flathub com.google.AndroidStudio
flatpak run com.google.AndroidStudio
# Oder Snap
sudo snap install android-studio --classic
```
### Bauen
**Mit Android Studio:**
1. Projekt öffnen (File > Open)
2. Gradle Sync abwarten
3. Build > Build Bundle(s) / APK(s) > Build APK(s)
**Mit Kommandozeile:**
```bash
# Debug Build
./gradlew assembleDebug
# Release Build
./gradlew assembleRelease
# APK Speicherort
ls -la app/build/outputs/apk/debug/app-debug.apk
```
---
## Debugging
### ADB Verbindung
```bash
# Verbinden
adb connect 192.168.1.100:5555
# Verbindung prüfen
adb devices
# Trennen
adb disconnect 192.168.1.100:5555
# ADB Server neu starten (bei Problemen)
adb kill-server && adb start-server
```
### Logs anzeigen
```bash
# Live Log der WireGuard TV App
adb logcat -s WireGuardTV:* AndroidRuntime:E
# Nur Crash-Logs
adb logcat -s AndroidRuntime:E
# Log in Datei speichern
adb logcat -d > debug.log
# Log leeren (vor Test)
adb logcat -c
# Boot-Logs prüfen (für Autostart-Debugging)
adb logcat -s BootReceiver:* WireGuardTV:*
```
### App neu installieren
```bash
# Deinstallieren
adb uninstall de.hackernet.wireguardtv
# Neu installieren
adb install app/build/outputs/apk/debug/app-debug.apk
```
### Häufige Probleme
**"Offline" bei `adb devices`:**
```bash
adb disconnect
adb kill-server
adb start-server
adb connect 192.168.1.100:5555
```
**App-Update schlägt fehl:**
```bash
adb uninstall de.hackernet.wireguardtv
adb install app-debug.apk
```
**VPN-Berechtigung fehlt:**
- VPN manuell einmal verbinden
- Berechtigung wird automatisch angefragt
---
## Technische Details
| Eigenschaft | Wert |
|-------------|------|
| Min SDK | 22 (Android 5.1, Fire TV Stick 1. Gen) |
| Target SDK | 34 (Android 14) |
| WireGuard Backend | wireguard-android Tunnel Library |
| UI Framework | AndroidX Leanback |
| Datenspeicherung | Jetpack DataStore |
| Web Server | Embedded HTTP Server |
| Geo-Location | ip-api.com (kostenlos) |
---
## Sicherheitshinweise
- Der Web-Server ist nur im **lokalen Netzwerk** erreichbar
- **Passwortschutz** für das Web-Interface wird empfohlen
- Der Server startet **nicht automatisch** (optional aktivierbar)
- Configs werden **verschlüsselt** im App-internen Speicher gespeichert
- HTTP-Verbindung zu ip-api.com ist explizit erlaubt (für Geo-Location)
---
## Lizenz
MIT License - siehe LICENSE Datei
---
## Autor
**HackerSoft - HACKER-NET Telekommunikation**
Website: [HACKER-NET.DE](https://hacker-net.de)