Files
punktfunk/docs-site/content/docs/install.md
T
enricobuehler f85d51b9f9 feat(steamdeck): one-command host install + docs (build-on-device)
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>
2026-06-20 22:20:00 +00:00

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

  1. Add yourself to the input group (virtual gamepads need /dev/uinput), then re-login. The exact command differs per distro — see your guide (usermod -aG input "$USER", or ujust add-user-to-input-group on Bazzite).

  2. Start the host inside your desktop session:

    punktfunk-host serve --native
    
  3. 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.