mirror of
https://github.com/Andre-Bzk/tunnler.git
synced 2026-11-15 06:23:04 +01:00
git init
This commit is contained in:
@@ -0,0 +1,127 @@
|
||||
# Tunnler
|
||||
|
||||
[English](#english) | [Deutsch](#deutsch)
|
||||
|
||||
---
|
||||
|
||||
## English
|
||||
|
||||
> **Disclaimer:** This tool was vibe coded with Claude Code — architecture and structure were planned together with AI, and all implementation was done through prompts. Not a single line was written by hand.
|
||||
|
||||
Routes only Chrome and Codex through a wstunnel server on a home Raspberry Pi, even behind a corporate proxy that blocks sites.
|
||||
|
||||
Unlike a web proxy, the tunnel passes raw TCP connections. TLS ends at the real server, so Google and ChatGPT logins work.
|
||||
|
||||
### Features
|
||||
|
||||
- Local proxy on `127.0.0.1:1080`, used only by a dedicated Chrome profile and Codex
|
||||
- Tunnel as WebSocket over `wss://` on port 443, optionally through a corporate proxy
|
||||
- Access only via a secret URL path
|
||||
- Server allows only TCP 80/443 to public destinations, the home network is blocked
|
||||
- Client needs no admin rights and runs on Windows PowerShell 5.1
|
||||
|
||||
### Installation
|
||||
|
||||
Prerequisites:
|
||||
|
||||
- Raspberry Pi with Docker and Nginx Proxy Manager, own domain with SSL certificate
|
||||
- Windows 10/11 with Google Chrome
|
||||
|
||||
Step-by-step guide for server and client (German): [docs/installation.md](docs/installation.md)
|
||||
|
||||
### Usage
|
||||
|
||||
Double-click `client\Chrome-Tunnel.cmd`. The tunnel starts hidden in the background, then a separate Chrome window opens that runs entirely through the Pi.
|
||||
|
||||
Run `client\PATH-eintragen.cmd` once. Afterwards type `codexx` instead of `codex` in any project folder, for example in the VS Code terminal. Arguments are passed through.
|
||||
|
||||
`Tunnel-Start.cmd` starts only the tunnel. Then set `127.0.0.1:1080` as HTTP proxy in any program. `Tunnel-Status.cmd` shows the public IP through the tunnel. `Tunnel-Stop.cmd` stops the tunnel.
|
||||
|
||||
### Configuration
|
||||
|
||||
All client values live in `client\config.ps1` (copy from `config.example.ps1`).
|
||||
|
||||
| Variable | Meaning | Default |
|
||||
|---|---|---|
|
||||
| `$TunnelSecret` | Secret path, identical to the server | empty |
|
||||
| `$TunnelServer` | Server address | `wss://deine-domain.de:443` |
|
||||
| `$LocalProxy` | Local proxy for Chrome and Codex | `127.0.0.1:1080` |
|
||||
| `$UpstreamProxy` | Corporate proxy, empty = direct | empty |
|
||||
| `$UpstreamProxyUser` / `$UpstreamProxyPassword` | Corporate proxy login | empty |
|
||||
| `$SkipTlsVerify` | Disable certificate check, only if the proxy breaks TLS | `$false` |
|
||||
|
||||
After a change, run `client\Tunnel-Stop.cmd` and start the tunnel again.
|
||||
|
||||
### Known blockers
|
||||
|
||||
- On a corporate network the tunnel times out without `$UpstreamProxy`. See [corporate proxy](docs/installation.md#teil-3--einsatz-hinter-einem-firmen-proxy).
|
||||
- The first start downloads `wstunnel.exe` from GitHub. Without access to github.com, place it in `client\bin\` manually.
|
||||
- Private addresses such as `192.168.x.x` are blocked through the tunnel. The client log then shows `Invalid status code: 400`. Add them to the program's proxy exceptions.
|
||||
- `client\config.ps1` and `server/restrictions.yaml` contain the secret. Do not share or commit them.
|
||||
|
||||
### Further documentation
|
||||
|
||||
- [docs/installation.md](docs/installation.md) — installation, corporate proxy, rotating the secret, updating, troubleshooting (German)
|
||||
- [wstunnel](https://github.com/erebe/wstunnel) — the tunnel software used
|
||||
|
||||
---
|
||||
|
||||
## Deutsch
|
||||
|
||||
> **Hinweis:** Dieses Tool wurde mit Claude Code vibe coded — Architektur und Struktur wurden gemeinsam mit KI geplant, die gesamte Implementierung erfolgte per Prompt. Keine einzige Zeile wurde von Hand geschrieben.
|
||||
|
||||
Leitet nur Chrome und Codex über einen wstunnel-Server auf dem Raspberry Pi zu Hause ins Internet, auch hinter einem Firmen-Proxy, der Seiten sperrt.
|
||||
|
||||
Anders als ein Web-Proxy reicht der Tunnel reine TCP-Verbindungen durch. TLS endet beim echten Server, daher funktionieren Google- und ChatGPT-Logins.
|
||||
|
||||
### Funktionen
|
||||
|
||||
- Lokaler Proxy auf `127.0.0.1:1080`, den nur ein eigenes Chrome-Profil und Codex nutzen
|
||||
- Tunnel als WebSocket über `wss://` auf Port 443, optional durch einen Firmen-Proxy
|
||||
- Zugang nur mit geheimem URL-Pfad
|
||||
- Server erlaubt nur TCP 80/443 zu öffentlichen Zielen, das Heimnetz ist gesperrt
|
||||
- Client ohne Admin-Rechte, läuft mit Windows PowerShell 5.1
|
||||
|
||||
### Installation
|
||||
|
||||
Voraussetzungen:
|
||||
|
||||
- Raspberry Pi mit Docker und Nginx Proxy Manager, eigene Domain mit SSL-Zertifikat
|
||||
- Windows 10/11 mit Google Chrome
|
||||
|
||||
Schritt-für-Schritt-Anleitung für Server und Client: [docs/installation.md](docs/installation.md)
|
||||
|
||||
### Nutzung
|
||||
|
||||
`client\Chrome-Tunnel.cmd` doppelklicken. Der Tunnel startet unsichtbar im Hintergrund, danach öffnet sich ein eigenes Chrome-Fenster, das komplett über den Pi läuft.
|
||||
|
||||
Einmal `client\PATH-eintragen.cmd` ausführen. Danach in jedem Projektordner `codexx` statt `codex` eingeben, zum Beispiel im VS-Code-Terminal. Argumente werden durchgereicht.
|
||||
|
||||
`Tunnel-Start.cmd` startet nur den Tunnel. Danach `127.0.0.1:1080` in beliebigen Programmen als HTTP-Proxy eintragen. `Tunnel-Status.cmd` zeigt die öffentliche IP über den Tunnel. `Tunnel-Stop.cmd` beendet den Tunnel.
|
||||
|
||||
### Konfiguration
|
||||
|
||||
Alle Client-Werte stehen in `client\config.ps1` (Vorlage: `config.example.ps1`).
|
||||
|
||||
| Variable | Bedeutung | Standard |
|
||||
|---|---|---|
|
||||
| `$TunnelSecret` | Geheimer Pfad, identisch mit dem Server | leer |
|
||||
| `$TunnelServer` | Adresse des Servers | `wss://deine-domain.de:443` |
|
||||
| `$LocalProxy` | Lokaler Proxy für Chrome und Codex | `127.0.0.1:1080` |
|
||||
| `$UpstreamProxy` | Firmen-Proxy, leer = direkt | leer |
|
||||
| `$UpstreamProxyUser` / `$UpstreamProxyPassword` | Anmeldung am Firmen-Proxy | leer |
|
||||
| `$SkipTlsVerify` | Zertifikatsprüfung abschalten, nur bei TLS-Aufbruch | `$false` |
|
||||
|
||||
Nach einer Änderung `client\Tunnel-Stop.cmd` ausführen und den Tunnel neu starten.
|
||||
|
||||
### Bekannte Stolpersteine
|
||||
|
||||
- Im Firmennetz läuft der Tunnel ohne `$UpstreamProxy` in einen Timeout. Siehe [Einsatz hinter einem Firmen-Proxy](docs/installation.md#teil-3--einsatz-hinter-einem-firmen-proxy).
|
||||
- Der erste Start lädt `wstunnel.exe` von GitHub. Ohne Zugriff auf github.com die Datei von Hand nach `client\bin\` legen.
|
||||
- Private Adressen wie `192.168.x.x` sind über den Tunnel gesperrt. Das Client-Log zeigt dann `Invalid status code: 400`. Solche Adressen im Programm als Proxy-Ausnahme eintragen.
|
||||
- `client\config.ps1` und `server/restrictions.yaml` enthalten das Secret. Nicht weitergeben und nicht committen.
|
||||
|
||||
### Weitere Dokumentation
|
||||
|
||||
- [docs/installation.md](docs/installation.md) — Installation, Firmen-Proxy, Secret tauschen, Aktualisieren, Fehlerbehebung
|
||||
- [wstunnel](https://github.com/erebe/wstunnel) — verwendete Tunnel-Software
|
||||
Reference in New Issue
Block a user