Docker
PlotPress ships as a single static-binary image: backend, embedded Astro frontend, no sidecar.
Quick start
Section titled “Quick start”docker run --rm -it \ -p 8080:8080 \ -v "$(pwd)/workspace:/workspace" \ -v plotpress-data:/var/lib/plotpress \ -e WAREHOUSE_PASSWORD \ -e SMTP_PASSWORD \ ghcr.io/octopyth/plotpress:latest./workspace is your PlotPress workspace — the folder containing plotpress.yaml, connections.yaml, groups.yaml, and dashboards/. The named volume holds SQLite (sessions, audit log).
docker compose
Section titled “docker compose”services: plotpress: image: ghcr.io/octopyth/plotpress:latest restart: unless-stopped ports: - "8080:8080" volumes: - ./workspace:/workspace:ro - plotpress-data:/var/lib/plotpress environment: WAREHOUSE_PASSWORD: ${WAREHOUSE_PASSWORD} OIDC_CLIENT_SECRET: ${OIDC_CLIENT_SECRET} SMTP_PASSWORD: ${SMTP_PASSWORD}
volumes: plotpress-data:The workspace is mounted read-only on purpose — dashboards are config-as-code, the container should never write to them.
Image layout
Section titled “Image layout”| Path | Contents |
|---|---|
/usr/local/bin/plotpress | The Go binary; embeds the Astro frontend. |
/workspace | Mount point for your PlotPress workspace. |
/var/lib/plotpress | SQLite + any caches. Mount a volume here. |
| Tag | Meaning |
|---|---|
latest | Latest stable release. |
vX.Y.Z | Pinned release. |
main | Built from main on every merge — for testing only. |
Backups
Section titled “Backups”The only stateful surface inside the container is /var/lib/plotpress. Back it up the same way you back up any SQLite-on-a-volume workload — a periodic litestream replicate to S3/R2 is the recommended path.