SteamOS is immutable read-only Arch, and the Deck is AMD (VAAPI) — so none of the checked-in packaging (arch/sysext is NVENC-first + client-oriented, deb/rpm are soname-mismatched) actually installs a working host on a Steam Deck. The proven path (distrobox-built native binary + systemd-run units) was 100% manual. Make it one command. - scripts/steamdeck/install.sh — idempotent installer: ensure the pf2 Debian-trixie distrobox + toolchain → build host (+web console) → write config (generated web login password) → raise UDP buffers to 32 MB + udev + input group (sudo, skipped gracefully if unavailable) → install + start punktfunk-host / punktfunk-web systemd USER services with linger. Flags: --open (accept unpaired clients), --no-web, --src=DIR. Builds on-device so a rebuild always matches the running SteamOS (no prebuilt-binary fragility across OS updates); VAAPI on the Deck's AMD GPU. - scripts/steamdeck/update.sh — rebuild from current source + restart (config/pairings persist). - scripts/steamdeck/README.md — deep reference (why on-device, what's installed, gotchas). - docs-site: new "Steam Deck (Host)" guide + sidebar entry; install.md splits Arch from the Steam Deck host path; packaging/arch/README points Deck-host users here and corrects the stale "NVENC-only" note (VAAPI host encode landed). Live-validated on the Deck: installer runs clean, both services come up, host listens (QUIC :9777 + mgmt :47990), web serves (302→login); on a client connect it takes over the Game-Mode gamescope session at the client's mode, captures via PipeWire, and VAAPI-encodes (hevc_vaapi) — full pipeline confirmed in the host journal. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.9 KiB
title, description
| title | description |
|---|---|
| Install the Host | Pick your distro and install the punktfunk host from its package registry. |
The package registries are the real distribution channel. Pick your distro, add the repo, and install with your native package manager. Each row links to the full per-distro guide (add the repo, first-run steps, the web console) — those are the source of truth, so this page doesn't duplicate them.
Pick your distro
| Distro | Package manager | One-command happy path | Guide |
|---|---|---|---|
| Ubuntu / Debian | apt | sudo apt install punktfunk-host |
Ubuntu — GNOME · Ubuntu — KDE · packaging/debian |
| Fedora / Bazzite | rpm-ostree | rpm-ostree install punktfunk punktfunk-web |
Fedora — KDE · Bazzite · packaging/rpm |
| Arch | PKGBUILD | makepkg -si |
packaging/arch |
| Steam Deck (host) | on-device script | bash scripts/steamdeck/install.sh |
Steam Deck (Host) |
Each registry is public — no auth, you just trust the repo's signing key. Adding the repo is a
one-time step covered in the linked guide; after that, normal apt upgrade / rpm-ostree upgrade
tracks new builds automatically.
What the packages are
punktfunk-host— the streaming host. Install this on your Linux + NVIDIA gaming machine.punktfunk-web— the browser management console (pairing + status). Recommended alongside the host; on RPM list it explicitly (rpm-ostree install punktfunk punktfunk-web).punktfunk-client— the GTK4 desktop client, for streaming to a Linux box (also shipped via apt / RPM / Arch / Flatpak). On a Steam Deck, this is the package you want.
After installing
-
Add yourself to the
inputgroup (virtual gamepads need/dev/uinput), then re-login. The exact command differs per distro — see your guide (usermod -aG input "$USER", orujust add-user-to-input-groupon Bazzite). -
Start the host inside your desktop session:
punktfunk-host serve --native -
Enable the web console and read its login password, then open
http://<host-ip>:3000:systemctl --user enable --now punktfunk-web journalctl --user -u punktfunk-web-init | sed -n 's/.*password generated: //p'
From there, follow the Quick Start to pair your first client. To run the host automatically at boot, see Running as a Service.
Building from source
If no package exists for your platform, you can build from source — see the repository README. Source builds are a fallback; the registries are the supported path.