This guide covers the deployment infrastructure of omp.0rk.de.
β οΈ Public Exposure Note: The dashboard at
omp.0rk.de/omp-webuihas no authentication and is completely public by design. Skills and telemetry stats are world-readable.
Services
The stack is powered by two distinct systemd daemon services:
omp-webui.service- Runs: The SvelteKit dashboard (Node.js).
- Port:
3001 - Path:
/home/dv/omp.0rk.de/omp-webui
omp-stats.service- Runs: The official
@oh-my-pi/omp-statsviewer. - Port:
3847 - Path:
/home/dv
- Runs: The official
Common Operations:
sudo systemctl status omp-webui.service
sudo systemctl restart omp-webui.service
sudo journalctl -u omp-stats.service -fBuild Process
Rebuilding the WebUI
When code in omp.0rk.de/omp-webui changes:
cd /home/dv/omp.0rk.de/omp-webui
npm run build
sudo systemctl restart omp-webui.serviceRebuilding the Quartz SSOT
When documentation in quartz-omp/content changes:
cd /home/dv/quartz-omp
npx quartz buildNote: npx quartz build completely wipes the public/ directory before rendering.
Nginx Reverse Proxy
Because the Quartz build wipes the public/ folder, placing symlinks inside public/ (e.g. public/omp-webui) is fragile. Instead, we use ^~ proxy rules in /etc/nginx/sites-enabled/omp.0rk.de.
Canonical Domain Redirect (ui.0rk.de)
The domain ui.0rk.de previously served the dashboard directly at the root. To maintain compatibility with existing links (like https://ui.0rk.de/collab#...) while enforcing the SvelteKit /omp-webui base path, ui.0rk.de is configured to 301 redirect all root traffic to https://omp.0rk.de/omp-webui/. The browser preserves any URL #fragments (like the Collab E2E secret) during this redirect, ensuring existing links continue to work seamlessly.
The ^~ Gotcha
The ^~ modifier ensures the proxy block takes precedence over regex blocks. Without it, nginxβs standard regex rule location ~* \.(css|js|...)$ would hijack the requests for SvelteKit and Stats assets, resulting in a 404 since they donβt exist in the Quartz public/ folder.
Proxy Routing Table
^~ /omp-webui/βhttp://127.0.0.1:3001(Trailing slash omitted to preserve the/omp-webuibase path)^~ /omp-stats-ui/βhttp://127.0.0.1:3847/(Trailing slash added to strip the path for the backend)^~ /api/βhttp://127.0.0.1:3847/api/(Required because the stats JS makes absolute calls to/api/)