TutorialMaker / tools /README.md
vivekchakraverty's picture
Add home-tunnel proxy control panel (tools/)
842fed4
|
Raw
History Blame
3.94 kB
# Home Proxy Panel β€” give the Space your home IP
The TutorialMaker Space can't fetch transcripts or stream URLs from its datacenter IP
(YouTube blocks it). This tool runs a small **authenticated HTTP proxy on your computer**
(your home/residential IP) and exposes it through a **raw TCP tunnel**, then sets it as the
Space's **`YT_PROXY`** secret. The Space's YouTube requests then exit from *your* IP and
stop getting blocked.
> **Why a TCP tunnel (not Cloudflare/Tailscale):** a forward proxy speaks HTTP `CONNECT`,
> which only survives a transparent **TCP** tunnel. HTTP *reverse* tunnels (Cloudflare
> quick-tunnel, Tailscale Funnel) cannot carry it β€” use **ngrok TCP** or **bore**.
---
## 1. Install the Python deps
```bash
pip install -r tools/requirements.txt
```
## 2. Install a tunnel (pick ONE)
**Option A β€” ngrok (more reliable, free account):**
1. Sign up at <https://ngrok.com> (free).
2. Install the ngrok agent and put `ngrok` on your PATH
(<https://ngrok.com/download>).
3. Copy your authtoken from the ngrok dashboard β†’ you'll paste it into the panel.
**Option B β€” bore (no account, less reliable):**
1. Download `bore.exe` from <https://github.com/ekzhang/bore/releases> and put it on your
PATH (or in this folder).
2. That's it β€” it uses the shared public `bore.pub` server.
## 3. Launch the panel
```bash
python tools/home_proxy_panel.py
```
## 4. Use it (in order)
1. **Proxy port / user / password** are pre-filled (a random password is generated). Keep
the password β€” it protects your public proxy from being used by strangers.
2. Pick the **Tunnel provider** (`ngrok`, `bore`, or `manual`). For ngrok, paste your
**authtoken**.
3. Click **Start proxy** β†’ it runs `proxy.py` on `127.0.0.1:<port>`.
4. Click **Start tunnel** β†’ the **Public endpoint** field fills in
(`x.tcp.ngrok.io:NNNN` or `bore.pub:NNNN`) and the **YT_PROXY URL** is computed.
5. Click **Test proxy** β†’ in the log, the **egress IP should be your home IP** and YouTube
should be **reachable**. If so, the proxy works.
6. Click **Set YT_PROXY on Space** β†’ it writes the `YT_PROXY` secret to your Space
(auto-detecting your HF token, or paste one). The Space restarts and picks it up.
- Or click **Copy YT_PROXY URL** and paste it into the Space's secret manually.
## 5. Verify on the Space
Run a topic on the Space. The **transcript** and **screenshot** steps should now succeed
instead of failing with an SSL/TLS block.
## Keep it running
The proxy + tunnel must stay running on your machine while the Space is in use. Close the
panel (or **Stop proxy/Stop tunnel**) when you're done β€” the `YT_PROXY` secret will then
point at a dead endpoint until you start it again (the Space falls back to text-only / a
clear error).
---
## Security notes
- The proxy is **public** while tunneled, so it **requires the username/password** β€” keep
them non-trivial (use **New password** to rotate). Without the right credentials nobody
can use your proxy.
- This routes YouTube traffic through your home connection and consumes your bandwidth.
- Stop the tunnel when not needed; rotate the password periodically.
## Manual endpoint (router port-forward / other tunnel)
If you forward a router port (and you're **not** behind CGNAT) or use another raw-TCP
tunnel, choose provider **`manual`** and enter the public `host:port`. The panel will
build the `YT_PROXY` URL and can set the secret + test it.
## Troubleshooting
- **`proxy.py` not found** β†’ `pip install proxy.py`.
- **ngrok: no tcp tunnel** β†’ ensure the authtoken is set; free TCP tunnels are supported
but only one at a time β€” close other ngrok agents.
- **Test egress IP is *not* your home IP** β†’ the tunnel/proxy chain is wrong; restart both.
- **YouTube still blocked on the Space** β†’ confirm the secret value matches the panel's
YT_PROXY URL exactly (including `user:pass@`), and that the panel is still running.