Files
punktfunk/docs-site/content/docs/forgot-password.md
T
enricobuehlerandClaude Fable 5 5926306a4c
windows-host / package (push) Failing after 22s
windows-host / canary-manifest (push) Skipped
windows-host / winget-source (push) Skipped
ci / docs-site (push) Successful in 1m47s
ci / web (push) Successful in 1m53s
ci / rust-arm64 (push) Successful in 1m58s
docker / builders (--build-arg FEDORA_VERSION=44, ci/fedora-rpm.Dockerfile, punktfunk-fedora44-rpm, -f44) (push) Successful in 11s
docker / builders (ci/android-ci.Dockerfile, punktfunk-android-ci) (push) Successful in 9s
docker / builders (ci/arch-ci.Dockerfile, punktfunk-arch-ci) (push) Successful in 7s
docker / builders (ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 7s
docker / builders (ci/rust-ci-noble.Dockerfile, punktfunk-rust-ci-noble) (push) Successful in 8s
docker / builders (ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 6s
docker / apps (., web/Dockerfile, punktfunk-web) (push) Successful in 58s
apple / swift (push) Successful in 4m45s
deb / build-publish-client-arm64 (push) Successful in 3m28s
docker / apps (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 1m27s
deb / build-publish (push) Successful in 5m26s
docker / builders-arm64cross (push) Successful in 6s
android / android (push) Successful in 6m22s
docker / deploy-docs (push) Successful in 38s
ci / rust (push) Successful in 7m10s
deb / build-publish-host (push) Successful in 5m27s
arch / build-publish (push) Successful in 8m42s
rpm / build-publish (44, fedora-44, punktfunk-fedora44-rpm) (push) Successful in 16m58s
rpm / build-publish (43, bazzite, punktfunk-fedora-rpm) (push) Successful in 17m16s
apple / screenshots (push) Successful in 20m19s
feat(windows): the web console becomes a supervised child of the host service
Three silent console outages in one week (0x1 / 0xFFFFFFFF / 0x41306),
each a different proximate cause of the same structural defect: the
console's lifecycle was owned by Task Scheduler — one best-effort start
per boot/logon/install, no retry on a plain non-zero exit, no watchdog —
while the product already shipped a real supervisor.

The service now supervises the console as a second child slot: plain
session-0 spawn (suspended → own no-breakaway kill-on-close job →
resume), started only once the host has written mgmt-token + cert.pem +
key.pem (the cert race dies by construction), secrets read from their
files at every respawn, bun's stdout finally captured in logs\web.log,
doubling backoff 0.5s→60s that never gives up. Session switches never
touch it; a service stop takes it down via the job.

The PunktfunkWeb task is retired: web setup slims to password + legacy
task delete + firewall, the 127-line web-run.cmd batch supervisor is
deleted, an [InstallDelete] entry reaps the stale copy, and service
install now sets SCM crash-recovery actions (restart 1s/5s/60s) since
the console rides on the service process. StopBunRuntimes stays for the
scripting runner + the one migrating upgrade.

Design: punktfunk-planning design/windows-web-console-lifecycle.md

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-31 20:16:19 +02:00

3.6 KiB

title, description
title description
Forgot your Password? Where the Punktfunk web console login password lives — and how to read or reset it — on each host platform.

The Punktfunk web console (status, paired devices, PIN pairing) is protected by a login password. That password is generated — or, on Windows, chosen — when the console is first set up, and it lives on the host. So if you can't get past the login screen, you recover or change it on the host machine itself, not from the browser.

New to the console? See The Web Console to enable it and arm pairing.

This is only the web console login. It is not your client/device pairing — if a client won't connect, that's Pairing, not this password.

Find your host

Find your host platform for exactly where the password lives, then read it back or change it below:

Host Where the password lives Section
Linux packages (apt / RPM / Arch / Bazzite / NixOS) ~/.config/punktfunk/web-password Login password
SteamOS (host) ~/.config/punktfunk/web.env Login password
Windows host %ProgramData%\punktfunk\web-password Login password · Windows Host

Read it back, or set your own

The password is stored on the host as a PUNKTFUNK_UI_PASSWORD=… line, so you can read it straight out of the file. On the Linux packages and the SteamOS host:

sed -n 's/^PUNKTFUNK_UI_PASSWORD=//p' ~/.config/punktfunk/web-password   # Linux packages
sed -n 's/^PUNKTFUNK_UI_PASSWORD=//p' ~/.config/punktfunk/web.env        # SteamOS host

On a Windows host, from an elevated PowerShell (the file is readable only by Administrators and SYSTEM):

Get-Content "$env:ProgramData\punktfunk\web-password"

To replace it with one you pick, follow Login password. It has the exact edit-and-restart steps for each of the three platforms above, and it's the one place that procedure is kept up to date.

The password is right and it still won't let you in

The login screen says "Wrong password." for every failure, including two that have nothing to do with the password you typed.

  • Too many attempts. Five wrong guesses from the same device are free; every one after that arms a lockout that doubles — a second, two, four — up to five minutes. While it holds, even the correct password is refused. Wait it out, or clear it at once by restarting the console (the lockout is only kept in the console's memory):

    systemctl --user restart punktfunk-web
    
    punktfunk-host service restart
    

    (The PowerShell one is Windows, from an elevated prompt — the console runs under the Punktfunk Host service there.)

  • No password is configured at all. If the file is missing or empty, or a line lost its PUNKTFUNK_UI_PASSWORD= prefix, the console fails closed and admits nobody — a page you open answers auth not configured: set PUNKTFUNK_UI_PASSWORD. Put the line back — PUNKTFUNK_UI_PASSWORD=<your-password>, on its own line, nothing else on it — and restart the console as above. On the Linux packages you can instead delete ~/.config/punktfunk/web-password and run

    systemctl --user restart punktfunk-web-init punktfunk-web
    

    which generates a fresh password, prints it to the journal, and starts the console with it — read it back with the command above.

Still stuck? See Troubleshooting.