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

82 lines
3.6 KiB
Markdown

---
title: Forgot your Password?
description: 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](/docs/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](/docs/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](/docs/web-console#login-password) |
| **SteamOS (host)** | `~/.config/punktfunk/web.env` | [Login password](/docs/web-console#login-password) |
| **Windows host** | `%ProgramData%\punktfunk\web-password` | [Login password](/docs/web-console#login-password) · [Windows Host](/docs/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**:
```sh
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):
```powershell
Get-Content "$env:ProgramData\punktfunk\web-password"
```
To replace it with one you pick, follow [Login password](/docs/web-console#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):
```sh
systemctl --user restart punktfunk-web
```
```powershell
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
```sh
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](/docs/troubleshooting).