Repository navigation
v0.7.0
Upgrading:
- Upgrade the R9lab backend first. This release needs one that serves the
/v1/plugins/r9cam
routes and accepts ther9cam-relaytoken audience: the hostedapi.r9lab.iodoes, a
self-hosted R9lab v0.5.0 or older does not. Pis on 0.6 keep working with a current backend
until 2027-01-31, so upgrade them before then. - Docker Compose now pulls the release image: run
git pullfirst, thendocker compose pull
anddocker compose up -d. Standalone installs: setR9CAM_IMAGE=r9camin.envand run
docker compose buildinstead ofpull. - Paired cameras stay paired when Docker Compose is upgraded in place and on installs without
Docker. A fresh clone into anr9cam/directory starts with empty volumes. See "Upgrading
From 0.6" in INSTALL.md for both cases. - With S3 storage, new captures go under the
r9cam/key prefix. Objects already stored stay
underrpi-cam/; nothing moves them. Dashboards and alerts that filter
onjob="rpi-cam-plugin"orrpi_cam_*metrics must switch tojob="r9cam"andr9cam_*.
Added
- Each release publishes a signed linux/arm64 image to
ghcr.io/cmlplatform/r9cam, tagged
with the version,X.Yandlatest, so the Pi pulls it instead of building it. Its build
provenance and SBOM are attested:gh attestation verify oci://ghcr.io/cmlplatform/r9cam@<digest> --repo CMLPlatform/r9camchecks them.R9CAM_VERSIONin.envpins a release; the default islatest. (#87)
Changed
- Breaking: the plugin is now r9cam, and its shared models package is
r9cam-models
(wasrelab-rpi-cam-models). Renamed with it: theR9CAM_CREDENTIALS_FILEvariable, the
~/.config/r9camcredentials directory, the_r9cam._tcpmDNS service type, ther9cam
OpenTelemetryservice.name,/healthzservice, ther9cam_sessioncookie,
openapi.r9cam.jsonand the device token audiencer9cam-relay. INSTALL.md has the full
table. (#45, #48) - Breaking: the last
rpi-camnames follow the rename: Prometheus metrics arer9cam_*
(wasrpi_cam_*), the Alloyjoblabel and defaultinstancearer9cam(was
rpi-cam-plugin), the default S3 key prefix isr9cam/(wasrpi-cam/), the example bucket
isr9cam, and the container user isr9cam. (#86) - Breaking: the Pi calls only the
/v1/plugins/r9camroutes and the default pairing
backend ishttps://api.r9lab.io. (#79) - Pairing polls with POST and a JSON body, as the current backend expects. (#46)
- EXIF capture details (exposure, offset time, temperature) are written to the Exif block, and
Softwarenames the r9cam version.
Fixed
- The upload queue stays under its byte cap when captures arrive at the same time. (#61)
- Captures that ran out of upload retries, for example while the Pi was unpaired, are queued
again after a successful pairing. Any that no longer fit under the queue's limits stay in
data/queue/dead/. (#85) local_setup.shinstalls uv from a release archive it checks against its checksum. (#68)- Installs without Docker keep their pairing across the rename, and
RELAB_CREDENTIALS_FILE
still works with a warning. (#79) - The wheel and sdist include the AGPL license text. (#90)
- The relay keeps retrying when the backend refuses its handshake (401, 403, 404, 429 and
the like), with the usual backoff and a warning that names the status, instead of stopping
until the next restart. On a 401 or 403 the warning says the camera may need re-pairing. (#84)