All-sky and CCTV
These are display-only sources. They give you situational awareness — eyes on the sky and on the observatory — but they never feed the safety supervisor. See the Display vs. control topic for the rationale.
All-sky camera
A camera that points straight up and gives you an updated view of the sky every few seconds. Useful for noticing clouds, satellites, aircraft, the moon rising over the trees.
Setup: Settings → All-sky camera. Tick Enable all-sky, set the Snapshot URL (e.g. http://allsky.local/current.jpg), and set the Refresh interval in seconds (default 30). Starship polls that URL on the interval and keeps the most recent frame in memory.
If your all-sky is a local Raspberry Pi serving HTTPS with a self-signed certificate, tick Allow self-signed HTTPS — that relaxes certificate checking for this one URL only, nothing else in the app. Prefer plain http:// on the LAN where you can.
Before saving, hit Test path to fetch the URL once and report what came back (byte count, content type, and round-trip time) so you can confirm the address is right without restarting anything. The test honours the self-signed-HTTPS option exactly as the live poller would.
The dashboard's All-sky page shows the most recent frame with a Refresh button and a status panel (URL, last refresh time, image size, refresh interval, and the most recent error if any). Double-click the frame to open it enlarged. No analytics — just the raw image.
CCTV
One or more cameras watching the observatory and equipment from outside — useful for confirming the roof or dome is actually closed, checking on the mount visually, and seeing whether someone has wandered into the field of view.
Setup: Settings → CCTV. Tick Enable CCTV, then + Add camera for each camera. Every camera needs a name and at least one source:
- Snapshot URL — an MJPEG still or ONVIF JPEG the camera serves over HTTP.
- RTSP URL — the live stream, e.g.
rtsp://user:pass@cam/stream.
You can set both; RTSP wins when it's usable (see below). Each camera also has its own Refresh interval (default 5 s), used in snapshot mode.
Starship picks a mode per camera automatically:
- RTSP mode — chosen when an RTSP URL is set and ffmpeg is available on the PATH. Starship runs ffmpeg in the background to turn the stream into a series of JPEG frames, and the page refreshes them at roughly the camera's frame rate so it feels live. It scales large frames down for the dashboard and keeps only the latest frame. If ffmpeg drops the stream, it restarts automatically with backoff. Cameras whose credentials are embedded in the RTSP URL but don't negotiate that cleanly (some Dahua firmware) are retried automatically with the credentials moved into separate flags.
- Snapshot mode — chosen when only a snapshot URL is set, or when RTSP can't be used. Starship polls the snapshot URL on the refresh interval. Coarser (seconds between frames) but dependable, with no extra software to install.
If you set an RTSP URL but ffmpeg isn't installed, or a camera has no working URL, the camera still appears in the grid marked OFFLINE with the reason, so a misconfiguration is visible rather than silent.
On the dashboard's CCTV page each camera is a tile showing its live/last frame, a mode badge (RTSP · N fps, SNAPSHOT, or OFFLINE), and either a frame counter (RTSP) or the last-refresh time (snapshot). Per-camera buttons:
- Refresh — pull a fresh frame now.
- Test — one-shot connectivity check. For snapshot cameras it fetches the URL and reports bytes, content type, and timing; for RTSP cameras it confirms the stream is being served (liveness is the frame counter). The result appears under the tile.
Double-click any tile's image to open it enlarged. RTSP credentials are redacted (user:***) everywhere they'd show in the UI.
You can add as many cameras as you like; each is independent. Settings can also be edited directly under [cctv] / [[cctv.cameras]] in config.toml.
What you don't get
No object detection. No recording. No motion alerts. No "did the dome close?" automation. These are deliberately out of scope — they're not auditable enough for safety, and existing CCTV systems (Dahua, Hikvision, Reolink) handle recording and motion alerts better than we ever would.
Future
A second all-sky source (a different vendor, or a wider FOV camera) is on the roadmap but not high priority. Detecting meteors, satellites, and cloud onset from the all-sky frames — logging timestamped events — is a named research direction, but not yet built.