Files
enricobuehler 0205c7b8d6
ci / rust (push) Failing after 37s
apple / swift (push) Successful in 56s
ci / web (push) Successful in 42s
ci / docs-site (push) Failing after 27m33s
android / android (push) Failing after 28m53s
windows-host / package (push) Failing after 28m55s
deb / build-publish (push) Successful in 2m28s
decky / build-publish (push) Successful in 23s
docker / build-push (--build-arg FEDORA_VERSION=44, ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm) (push) Successful in 5s
docker / build-push (., web/Dockerfile, punktfunk-web) (push) Successful in 4s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 5s
ci / bench (push) Successful in 4m34s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 46s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 2m20s
rpm / build-publish (bazzite, punktfunk-fedora-rpm) (push) Failing after 4m4s
flatpak / build-publish (push) Successful in 4m19s
docker / deploy-docs (push) Successful in 24s
rpm / build-publish (fedora-44, punktfunk-fedora44-rpm) (push) Successful in 7m38s
release / apple (push) Successful in 4m36s
windows-msix / package (arm64, C:\Users\Public\ffmpeg-arm64, aarch64-pc-windows-msvc, C:\t-a64) (push) Successful in 1m48s
windows-msix / package (x64, C:\Users\Public\ffmpeg, x86_64-pc-windows-msvc, C:\t) (push) Successful in 1m25s
windows / build (aarch64-pc-windows-msvc) (push) Successful in 50s
windows / build (x86_64-pc-windows-msvc) (push) Successful in 1m6s
ci(release): split canary/stable tracks + unified Gitea Releases
A push to main publishes canary builds to canary channels (fast iteration,
unchanged); a single vX.Y.Z tag releases every platform at one version to the
stable channels and attaches all artifacts (.deb/.rpm/.msix/.apk/.aab/.dmg +
flatpak/decky/host-installer) to one Gitea Release. Collapses the
host-v*/win-v*/host-win-v* tag namespaces into v* — the channel split makes the
version-shadow bug structurally impossible (canary and stable are separate repos,
never a shared version line).

- scripts/ci/gitea-release.{sh,ps1}: one idempotent release helper
  (create-or-fetch + delete-before-upload), replacing 3 copy-pasted inline blocks
  and fixing their latent 409-on-reupload bug; prerelease flag auto-derived from
  the tag (an -rc tag won't shadow "Latest")
- channels: apt canary/stable distributions; rpm *-canary/base groups; flatpak
  canary/stable OSTree branches + a 2nd .Canary.flatpakref; generic-registry
  canary/ vs latest/ aliases; Play internal/alpha; Apple TestFlight vs notarized DMG
- android versionName threaded through gradle (versionCode stays run_number);
  Apple canary = TestFlight-only (no DMG/tvOS); canary base bumped to 0.3.0
- docs: new docs-site channels.md (subscribe table + cut-a-release runbook +
  box migration), refreshed ci.md workflow table + packaging READMEs

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-21 17:26:38 +00:00

4.9 KiB

title, description
title description
Install the Host Install the punktfunk host — on Linux from its package registry, or on Windows from a signed installer.

On Linux, 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. On Windows (NVIDIA), the host ships as a signed installer instead — see Windows.

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
SteamOS (host) on-device script bash scripts/steamdeck/install.sh SteamOS (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.

Stable vs canary. The repos in the per-distro guides are the stable channel — it only moves when a vX.Y.Z release is cut. For the latest main build (fast, possibly broken), point at the canary channel instead (canary apt distribution / *-canary rpm group). See Release Channels.

Windows (NVIDIA)

punktfunk also runs as a native host on Windows 10/11 (x64) with an NVIDIA GPU, shipped as a signed installer — see Windows Host for what it includes and its limitations.

  1. From the packages page (generic group), download the newest punktfunk-host-setup-<ver>.exe and its matching .cer.

  2. Trust the publisher certificate once. The installer is signed with a self-signed certificate whose public .cer is published next to it — the same certificate for every release, so this is genuinely one-time and later updates need nothing. In an admin PowerShell:

    Import-Certificate -FilePath .\punktfunk-host-setup.cer `
      -CertStoreLocation Cert:\LocalMachine\TrustedPublisher
    
  3. Run punktfunk-host-setup-<ver>.exe (elevated). It installs to C:\Program Files\punktfunk, optionally installs the bundled SudoVDA virtual-display driver, and registers + starts the LocalSystem service (/VERYSILENT for an unattended install). Upgrades and uninstall go through Add/Remove Programs.

You need an NVIDIA GPU + driver (the host is NVENC-only on Windows). More detail — including the CLI punktfunk-host service install path — is in Running as a Service → Windows.

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
    

    Bare serve is the secure native-only default (native punktfunk/1 + the web console). On a trusted LAN, add --gamestream to also serve stock Moonlight clients.

  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.