Files
punktfunk/scripts/windows/README.md
T
enricobuehler 861da54066
apple / swift (push) Successful in 1m6s
apple / screenshots (push) Has been cancelled
ci / rust (push) Has been cancelled
ci / web (push) Has been cancelled
ci / docs-site (push) Has been cancelled
ci / bench (push) Has been cancelled
android-screenshots / screenshots (push) Successful in 50s
android / android (push) Successful in 3m25s
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 33s
docker / build-push (ci, ci/fedora-rpm.Dockerfile, punktfunk-fedora-rpm) (push) Successful in 4s
docker / build-push (ci, ci/rust-ci.Dockerfile, punktfunk-rust-ci) (push) Successful in 4s
windows-host / package (push) Successful in 6m28s
docker / build-push (docs-site, docs-site/Dockerfile, punktfunk-docs) (push) Successful in 52s
windows-msix / package (arm64, C:\Users\Public\ffmpeg-arm64, aarch64-pc-windows-msvc, C:\t-a64) (push) Successful in 1m3s
windows-msix / package (x64, C:\Users\Public\ffmpeg, x86_64-pc-windows-msvc, C:\t) (push) Successful in 1m5s
linux-client-screenshots / screenshots (push) Successful in 2m9s
release / apple (push) Successful in 9m25s
docker / deploy-docs (push) Successful in 20s
web-screenshots / screenshots (push) Successful in 2m33s
deb / build-publish (push) Successful in 3m19s
decky / build-publish (push) Successful in 19s
flatpak / build-publish (push) Successful in 5m9s
rpm / build-publish (bazzite, punktfunk-fedora-rpm) (push) Successful in 9m21s
rpm / build-publish (fedora-44, punktfunk-fedora44-rpm) (push) Successful in 8m38s
feat(web,host/windows): move the web console off :3000 to :47992
Port 3000 collides with half the dev-server ecosystem; 47992 sits next
to the mgmt API (47990) in the punktfunk port family. Updates the run
scripts, systemd/scheduled-task units, Dockerfile, Windows firewall
rule + installer, packaging, and every doc that referenced :3000.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-02 18:17:42 +00:00

2.9 KiB

Windows host build/deploy scripts

Helper scripts for the Windows host box (the RTX .173 lab box, repo at C:\Users\Public\punktfunk-native). Run them from the repo root in an elevated PowerShell.

One-time: persist the build environment

powershell -ExecutionPolicy Bypass -File scripts\windows\setup-build-env.ps1

Persists (Machine scope) the three vars the NVENC build needs:

var value why
PUNKTFUNK_NVENC_LIB_DIR C:\Users\Public\nvenc NVENC import lib (nvencodeapi.lib)
LIBCLANG_PATH C:\Program Files\LLVM\bin bindgen (libclang.dll)
CMAKE_POLICY_VERSION_MINIMUM 3.5 audiopus_sys / cmake crates

FFMPEG_DIR is not set — the --features nvenc build the RTX box uses does not link libavcodec (that is only the amf-qsv feature). The VS C++ toolchain is loaded per-build via vcvars64.bat (auto-discovered with vswhere).

Rebuild + redeploy the host service

powershell -ExecutionPolicy Bypass -File scripts\windows\deploy-host.ps1

Stops PunktfunkHost, backs up the current binary (punktfunk-host.exe.bak), builds --release -p punktfunk-host --features nvenc from the current source, then restarts the service on the new binary — with automatic rollback if the build fails or the new binary won't start. The service is down only for the build duration.

Web management console

On an installed host (the setup.exe) the console is set up automatically — no manual steps. The installer bundles the built (self-contained, no-node_modules) .output server + a portable bun and runs punktfunk-host.exe web setup, which registers the PunktfunkWeb scheduled task (at boot, as SYSTEM, restart-on-failure) running {app}\web\web-run.cmdbun …\.output\server\index.mjs on :47992, opens inbound TCP 47992, and writes the login password to %ProgramData%\punktfunk\web-password (ACL'd to Administrators + SYSTEM). The mgmt bearer token it proxies with is the host's own %ProgramData%\punktfunk\mgmt-token. Browse http://<host-ip>:47992 and log in with the password the installer shows on its final page. To change it, edit web-password and re-run the task: schtasks /run /tn PunktfunkWeb.

Rebuild + restart the console (dev box)

powershell -ExecutionPolicy Bypass -File scripts\windows\build-web.ps1

bun install && bun run build (Nitro noExternals -> a self-contained .output, no node_modules/.npmrc), then restarts the PunktfunkWeb task and checks :3000/login. Use this to iterate on the console against an installed host - punktfunk-host.exe web setup (or a fresh install) is what creates the task in the first place.

Typical flow after pulling new code

git pull
powershell -ExecutionPolicy Bypass -File scripts\windows\deploy-host.ps1
powershell -ExecutionPolicy Bypass -File scripts\windows\build-web.ps1