[Unit] Description=socialmag dashboard file server (:8321) After=network.target [Service] Type=simple # Serves the repo directory itself, so the page is at # http://127.0.0.1:8321/dashboard.html — refresher writes dashboard.json in # here too, both resolved off the package's own __file__. WorkingDirectory=@REPO@ # No --bind: the page is reachable from the LAN, not only from this box. # openbridge stays loopback-only, so a LAN viewer just falls back to opening a # new tab — progressive enhancement, and the page is never worse than it was. ExecStart=@VENV@/bin/python -m http.server 8321 Restart=on-failure RestartSec=5 [Install] WantedBy=default.target