Files
MasterHttpRelayVPN/EXIT_NODE_DEPLOYMENT.md
T

2.7 KiB

Exit Node Deployment Guide (Val Town / Cloudflare / Deno)

This guide explains how to deploy an exit node for MasterHttpRelayVPN on free platforms.

Traffic path:

Browser -> Local Proxy -> Apps Script -> Exit Node -> Target Website

Use this when destinations block Google datacenter egress.

1) Choose One Provider

  • Val Town
  • Cloudflare Workers
  • Deno Deploy

You only need one provider.

2) Set PSK In Code

Each template includes:

const PSK = "CHANGE_ME_TO_A_STRONG_SECRET";

Replace that value with a long random secret.

Important:

  • Use the same PSK in your local config under exit_node.psk.
  • Never share your deployed URL together with a valid PSK.

3) Deploy On Val Town

Source file: apps_script/valtown.ts

Steps:

  1. Sign in at https://www.val.town
  2. Create a new Val (TypeScript HTTP endpoint).
  3. Paste content from apps_script/valtown.ts.
  4. Set the PSK constant in the code.
  5. Save and deploy.
  6. Copy your public URL, usually like https://YOUR-NAME.web.val.run

4) Deploy On Cloudflare Workers

Source file: apps_script/cloudflare_worker.js

Steps:

  1. Sign in at https://dash.cloudflare.com
  2. Go to Compute -> Workers & Pages.
  3. Create Application -> Start with Hello World -> Deploy -> Edit Code.
  4. Replace code with apps_script/cloudflare_worker.js content.
  5. Set PSK constant in code.
  6. Deploy.
  7. Copy URL, usually like https://YOUR-WORKER.YOUR-SUBDOMAIN.workers.dev

5) Deploy On Deno Deploy

Source file: apps_script/deno_deploy.ts

Steps:

  1. Sign in at https://dash.deno.com
  2. Create new project.
  3. Upload or paste apps_script/deno_deploy.ts.
  4. Set PSK constant in code.
  5. Deploy.
  6. Copy URL, usually like https://YOUR-PROJECT.deno.dev

6) Configure MasterHttpRelayVPN

Update config.json:

{ "exit_node": { "enabled": true, "provider": "valtown", "url": "https://YOUR-NAME.web.val.run", "psk": "CHANGE_ME_TO_A_STRONG_SECRET", "mode": "full", "hosts": [ "chatgpt.com", "openai.com", "claude.ai", "anthropic.com" ] } }

Provider values:

  • valtown
  • cloudflare
  • deno

If mode is selective, only hosts listed in hosts use the exit node. If mode is full, all relayed traffic uses the exit node.

7) Quick Test

  1. Start app: python main.py
  2. Ensure proxy is set in browser.
  3. Open a site known to require non-Google egress.
  4. If it fails, check:
    • provider and url are correct
    • psk matches exactly between config and deployed code
    • exit_node.enabled is true

Troubleshooting

  • unauthorized: PSK mismatch
  • method_not_allowed: endpoint got non-POST request directly (normal when opened in browser)
  • bad_url: malformed target URL from relay payload
  • timeout or 5xx: temporary provider issue, redeploy and retry