Friends over the internet
Let a friend stream from your host without joining your home network — Porthole for PC friends, Tailscale sharing for everyone else.
Let a friend outside your home stream from your host, and reach nothing else on your network. Pairing and access levels already decide what their device may do; this page only gets them to the host.
Pick a path
| Your friend streams from | Use |
|---|---|
| A PC, Mac or Steam Deck with Steam | Porthole: nothing to set up on your router |
| A phone, tablet, Apple TV, or no Steam | Tailscale machine sharing |
| Anything, and you run your own router | Port forwarding: not recommended, the only path that exposes the host to the internet |
Every path opens one port: UDP 9777 carries the stream, video and audio included.
Porthole
Porthole is a free Steam app that shares the ports you pick with Steam friends, behind any router.
- You both install Porthole from Steam.
- You create a lobby and share UDP
9777, without remapping. Add TCP47990if the friend should browse your game library. - The friend joins with your share code or from the friends list, accepts the ports, and adds
127.0.0.1:9777as a host in their Punktfunk client. - Admit them as a guest.
Tailscale
Tailscale shares one machine with someone outside your tailnet. The default access rule still lets them reach every port on it, so step 2 matters.
-
In the admin console, open the host's ⋯ menu → Share and send the invite. Any free Tailscale account can accept it. The friend installs Tailscale on the device they stream from (every client platform except LG webOS).
-
In access controls, replace the default
"src": ["*"]rule (it includes shared users) with one rule for members and one for shared users, using the host's Tailscale IP:"acls": [ { "action": "accept", "src": ["autogroup:member"], "dst": ["*:*"] }, { "action": "accept", "src": ["autogroup:shared"], "dst": ["100.x.y.z:9777"] } ]Add
47990only if the friend should browse your game library. -
The friend adds
100.x.y.z:9777as a host, or opens a link you send:punktfunk://connect/100.x.y.z:9777.
Admit them as a guest
The friend's first connect waits in the console under Waiting for approval. Admit it with a PIN read out over voice chat, not a bare Approve. Pick Controller only and Until they disconnect, so nothing is left to clean up after the evening (Temporary access). Expire now or Unpair ends a running session at once.
Port forwarding
Prefer Porthole or Tailscale: both keep the host unreachable from the internet, and this doesn't.
Forward UDP 9777 to the host. Never forward 47990, 47992 or 9778: the
management API, the web console and browser streaming.
Send your friend a link, not a bare address, so their first connect checks the host's identity. Copy the Deep link from Host → Connect a device and swap in your public address:
punktfunk://connect/<id>?host=203.0.113.5&fp=<64 hex>Strangers will knock once the port is open. An unpaired device gets nothing. A knock from the internet shows From the internet and has no Approve, because the name it shows is one it chose itself. Click Arm PIN on that row: the PIN works only for that device, and its access starts at Controller only until they disconnect. Read the PIN out over voice chat.
A pairing that keeps failing usually means a stranger is hitting the same rate limit. Wait a moment and retry.
Voice chat while they play
With Discord on the host, friends who stream in hear their own voices a beat late, because the stream captures Discord's playback. In Host → Audio:
- Where audio plays: Device and host, so you hear the game too.
- Voice chat: On the host. Discord, Vesktop, WebCord, ArmCord, Legcord, TeamSpeak and Mumble then play on your speakers and stay out of the stream.
- Voice chat apps: add your browser (
firefox) if you use Discord in a browser tab.
The same settings in host.env are PUNKTFUNK_AUDIO_OUTPUT_MODE=host_and_client,
PUNKTFUNK_AUDIO_VOICE_CHAT=host and PUNKTFUNK_AUDIO_VOICE_APPS=firefox. On Windows this needs
Steam installed: the host builds its silent audio output from Steam's streaming drivers. To keep
one friend from hearing the game at all, mute their session on the Home page.
What not to use
ZeroTier, Hamachi and Radmin VPN work, but expose every port on the host to the friend. playit.gg, ngrok and Cloudflare Tunnel can't carry a video stream.
Seats on Windows
Let several people play on one Windows Server PC at once, each on a desktop of their own — what it needs, how to set it up from a fresh install, and what to do when a seat won't start.
Wake-on-LAN
Wake a sleeping host from a Punktfunk client — what has to happen first, the punktfunk wake command, and how to arm the host machine.