Add working prototype #1

Merged
Neffi42 merged 15 commits from prototype into main 2026-10-02 19:19:18 +00:00
Owner

docs: document go2rtc auth handling, snapshot paging and theming in agent instructions

docs: add README and agent instructions

ci: add Forgejo workflow to test, build multi-arch image and publish on tags

feat(docker): run server as non-root with CA bundle, test stage and cross-compilation

feat: add server entrypoint with env config and healthcheck

feat(web): add viewer page, PTZ/snapshot API and go2rtc proxy
Embedded mobile-friendly page with light/dark theme. The proxy only exposes the player scripts and the stream websocket, pinned to the configured stream.

feat(go2rtc): add frame snapshot client

feat(ptz): add minimal ONVIF client for PTZ and presets
SOAP 1.2 over net/http with WS-Security digest auth, device clock skew compensation with retry on auth failure, and XAddr host rewriting for cameras behind NAT.
docs: document go2rtc auth handling, snapshot paging and theming in agent instructions docs: add README and agent instructions ci: add Forgejo workflow to test, build multi-arch image and publish on tags feat(docker): run server as non-root with CA bundle, test stage and cross-compilation feat: add server entrypoint with env config and healthcheck feat(web): add viewer page, PTZ/snapshot API and go2rtc proxy : Embedded mobile-friendly page with light/dark theme. The proxy only exposes the player scripts and the stream websocket, pinned to the configured stream. feat(go2rtc): add frame snapshot client feat(ptz): add minimal ONVIF client for PTZ and presets : SOAP 1.2 over net/http with WS-Security digest auth, device clock skew compensation with retry on auth failure, and XAddr host rewriting for cameras behind NAT.
SOAP 1.2 over net/http with WS-Security digest auth, device clock skew compensation with retry on auth failure, and XAddr host rewriting for cameras behind NAT.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Embedded mobile-friendly page with light/dark theme. The proxy only exposes the player scripts and the stream websocket, pinned to the configured stream.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
Neffi42 force-pushed prototype from 79f4f0ef9a
Some checks failed
ci / ci (pull_request) Has been cancelled
to 2c5d2b6010
Some checks failed
ci / ci (pull_request) Failing after 53s
2026-10-02 10:07:41 +00:00
Compare
Create the buildx builder on an explicit docker context, since buildx refuses to load TLS data from DOCKER_* env vars. Prereleases no longer move latest.
ci: name buildx builder apart from its context
Some checks failed
ci / ci (pull_request) Failing after 12m43s
cb24beaaa0
Every docker context is implicitly a builder of the same name, so reusing it fails.
build: add Makefile for format, vet and tests, skip -race where unsupported
All checks were successful
ci / ci (pull_request) Successful in 15m38s
87867a5c8e
Some arm64 CI nodes run 39-bit VA kernels where ThreadSanitizer aborts at startup, so make test probes for race support. The Dockerfile test stage now runs the Makefile targets.
feat: require plain http upstreams and drop the CA bundle
All checks were successful
ci / ci (pull_request) Successful in 14m0s
3df0614e86
ONVIF_ADDRESS and GO2RTC_URL are rejected at startup unless they use http, so the scratch image no longer ships ca-certificates. README: fold GO2RTC_URL requirements into the variable table and drop the CI paragraph.
docs: show go2rtc with WebRTC in the compose example, trim README notes
All checks were successful
ci / ci (pull_request) Successful in 15m44s
37a6384a33
Replace the WebRTC and no-auth gotchas with a go2rtc service publishing 8555 and advertising a candidate, and rename the section to Notes.
refactor: drop unused zoom and home position, trim comments
All checks were successful
ci / ci (pull_request) Successful in 15m42s
fa75a7bec4
The C200 has neither and nothing outside internal/ptz used them. Stop keeps <Zoom>true</Zoom>, which the camera accepts.
Neffi42 deleted branch prototype 2026-10-02 19:19:18 +00:00
Neffi42 referenced this pull request from a commit 2026-10-02 19:19:18 +00:00
Sign in to join this conversation.
No reviewers
No milestone
No assignees
1 participant
Notifications
Due date
The due date is invalid or out of range. Please use the format "yyyy-mm-dd".

No due date set.

Dependencies

No dependencies set

Reference
Neffi42/go2ptz!1
No description provided.