File size: 2,886 Bytes
12e4183
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
# Building the Home Proxy Panel as a standalone app

This produces a **double-click executable** of `home_proxy_panel.py` so end users can run
their own residential proxy **without installing Python**. Each user runs it, clicks
**Copy my Proxy URL**, and pastes that URL into the TutorialMaker Space's *Your proxy URL*
field — their generation then routes YouTube requests through their own home IP.

## ⚠️ One binary per OS — PyInstaller does not cross-compile

You must build **on each target OS** (Windows `.exe` on Windows, macOS binary on macOS,
Linux ELF on Linux). Options:
- Build on the three machines you have, or
- Use a GitHub Actions matrix (`windows-latest`, `macos-latest`, `ubuntu-latest`) and
  attach the artifacts to a Release. A ready starter workflow is in the section below.

## Build steps (run on the target OS)

```bash
pip install pyinstaller proxy.py huggingface_hub requests
# from the TutorialMaker repo root:
pyinstaller tools/home_proxy_panel.spec
```

Output: `dist/HomeProxyPanel` (`.exe` on Windows). Ship that single file.

Notes:
- `proxy.py` (the forward proxy) is bundled. The app runs it by re-invoking itself with a
  hidden `--run-proxy` flag, so it works even though `sys.executable` is the packaged app.
- `bore` is **not** bundled by default — the app auto-downloads the correct release binary
  for the host on first use (into the folder next to the executable). To bundle it instead
  (offline installs), drop `bore`/`bore.exe` next to `home_proxy_panel.spec` before building
  — the spec picks it up automatically.
- `console=False` makes it a windowed GUI app. Set `console=True` in the spec temporarily if
  you need to see tracebacks while debugging a build.

## macOS gotchas
- Unsigned apps are quarantined: users run `xattr -dr com.apple.quarantine HomeProxyPanel`
  or right-click → Open the first time. For public distribution, codesign + notarize.

## GitHub Actions matrix (optional starter)

```yaml
name: build-proxy-panel
on: { workflow_dispatch: {} }
jobs:
  build:
    strategy:
      matrix:
        os: [windows-latest, macos-latest, ubuntu-latest]
    runs-on: ${{ matrix.os }}
    steps:
      - uses: actions/checkout@v4
      - uses: actions/setup-python@v5
        with: { python-version: "3.12" }
      - run: pip install pyinstaller proxy.py huggingface_hub requests
      - run: pyinstaller tools/home_proxy_panel.spec
      - uses: actions/upload-artifact@v4
        with:
          name: HomeProxyPanel-${{ matrix.os }}
          path: dist/*
```

## Verify a built binary
On a machine **without** Python:
1. Launch `HomeProxyPanel`.
2. **Start proxy****Start tunnel** (bore auto-downloads on first use) → **Test proxy**:
   the log's egress IP should be your home IP and YouTube should be reachable.
3. **Copy my Proxy URL**, paste it into the Space's *Your proxy URL* field, and generate.