Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

Running as a system service

For an always-on operating position (a Pi in the shack, a shack PC), install the proxy as a service so it starts at boot and restarts if it crashes. Every server bundle ships the pieces for its platform.

All service setups below serve HTTPS on port 8080 with the auto-generated self-signed certificate. The working directory matters: the certificate (cert.pem / key.pem) is created in the working directory on first run, so keeping it stable means browsers only see the certificate warning once.

Linux / Raspberry Pi (systemd)

The bundle contains podsdr-proxy.service. Install the bundle to /opt/podsdr and enable the unit:

sudo cp -r podsdr-proxy-pi-bundle /opt/podsdr
sudo cp /opt/podsdr/podsdr-proxy.service /etc/systemd/system/
sudo systemctl enable --now podsdr-proxy

The unit runs:

/opt/podsdr/podsdr-proxy --static-dir /opt/podsdr/web --port 8080 --bind 0.0.0.0 --tls

with WorkingDirectory=/opt/podsdr and Restart=always. Check the User= line matches an account that exists on your system (the Pi bundle uses pi, the x86_64 bundle uses podsdr) and edit it if needed, then:

sudo systemctl status podsdr-proxy      # is it running?
journalctl -u podsdr-proxy -f           # live logs

Cloud uplink as a service: the shipped unit serves the LAN only. To run the broker uplink at boot, add the --broker-url / --hub-public-key / --proxy-name flags from the cloud chapter to the ExecStart line. The pairing code (needed only once, while unclaimed) appears in journalctl -u podsdr-proxy | grep "with code:".

macOS (launchd)

The macOS bundle contains org.podsdr.proxy.plist, a LaunchDaemon that runs the same command from /opt/podsdr:

sudo mkdir -p /opt/podsdr && sudo cp -r podsdr-proxy-macos-bundle/* /opt/podsdr/
sudo cp /opt/podsdr/org.podsdr.proxy.plist /Library/LaunchDaemons/
sudo launchctl load -w /Library/LaunchDaemons/org.podsdr.proxy.plist

Logs go to /opt/podsdr/proxy.log. Stop with sudo launchctl unload -w /Library/LaunchDaemons/org.podsdr.proxy.plist.

If Gatekeeper blocks the binaries (they are ad-hoc signed, not notarized), clear the quarantine flag once after extracting:

xattr -dr com.apple.quarantine .

Windows (NSSM)

The proxy is a plain console program, so wrap it with a service manager such as NSSM:

nssm install PodSDRProxy "C:\podsdr\podsdr-proxy.exe" ^
  --static-dir "C:\podsdr\web" --bind 0.0.0.0 --port 8080 --tls
nssm set PodSDRProxy AppDirectory "C:\podsdr"
nssm start PodSDRProxy

AppDirectory plays the role of the working directory — set it so the TLS certificate persists across restarts.