CHAN.RUN

Restunnel
Usage

Dashboard & Node Management

The hub includes a web dashboard for managing exit nodes. It binds to localhost only — access it via SSH tunnel:

ssh -L 8080:127.0.0.1:8080 user@your-server

Then open http://localhost:8080 in your browser. The bind address is configurable with --dashboard-listen.

Node List

Shows all enrolled exit nodes with their current status:

  • Connected — online and relaying traffic (shows public IP and latency)
  • Disconnected — offline (shows last seen time)

Enrollment Tokens

Click Generate Token to create a one-time enrollment token. A QR code is displayed that exit node apps can scan. Tokens expire after 15 minutes. Optionally set a label — this name is assigned to whatever node enrolls with it.

Revoke Nodes

Click a node's revoke button to delete its public key. The node is immediately disconnected and cannot reconnect.

Node Selection

When the hub receives a proxy request, it routes through the first connected exit node by default. With multiple nodes, you can select a specific one by label.

Use the SOCKS5 username field to pick a node (password is ignored):

# Default (first connected node)
curl --proxy socks5://localhost:1080 https://httpbin.org/ip

# Route through a specific node
curl --proxy socks5://vienna-home:x@localhost:1080 https://httpbin.org/ip

HTTP CONNECT works the same way:

curl --proxy http://vienna-home:x@localhost:1081 https://httpbin.org/ip

How labels are assigned (in priority order):

  1. Token label — set when generating the token: --label exit-bangkok
  2. Device hostname — sent during enrollment
  3. Auto-generated — node-1, node-2, etc.

Security

  • Localhost-only by default — not exposed to the internet
  • CSRF protection on all state-changing endpoints
  • Access requires an SSH tunnel or local access to the server