2.5 KiB

rpki-explorer standalone stack

One container running the RPKI Explorer web UI plus the query backend (rpki_query_service in watch mode, spawning rpki_query_indexer), deployed next to a running ours-RP soak. It mounts the soak outputs read-only and keeps only the latest RETAIN_RUNS indexed runs.

browser ──ssh -L──► 127.0.0.1:9517 ──► container
                                        ├─ nginx :8080  (dist + /api/v1/ proxy)
                                        └─ rpki_query_service :9557
                                             ├─ /data/query-db        (host bind mount, rw, reused on restart)
                                             ├─ /soak/db/repo-bytes.db (ro)
                                             └─ /soak/runs             (ro, watched)

Prerequisites

  • Docker with the compose plugin (docker compose version) on the target host.
  • A running soak whose runs/ directories contain report.json (and run-summary.json once finished) — only completed runs get indexed.

Build (local machine, same arch as the target)

deploy/rpki-explorer/build_image.sh
# tarball + provenance land in target/rpki-explorer-image/

The build runs entirely inside Docker (rust release binaries + vite build), so no local toolchain version requirements apply.

Transfer and deploy (remote host)

cat target/rpki-explorer-image/rpki-explorer-<tag>.tar.gz | ssh root@<host> 'gunzip | docker load'

ssh root@<host>
mkdir -p /root/rpki128_explorer
cd /root/rpki128_explorer
# place docker-compose.yml and .env here (see .env.example)
docker compose up -d
docker logs -f rpki-explorer

On first boot the entrypoint computes --watch-min-run-seq = latest_completed - RETAIN_RUNS + 1 so exactly the latest RETAIN_RUNS completed runs are backfilled. On later boots the existing query-db drives continuation — the index built earlier is reused, no re-backfill happens.

Access

ssh -L 9517:127.0.0.1:9517 root@<host>
# open http://127.0.0.1:9517

The stack binds loopback only; there is no authentication or TLS.

Upgrade

Rebuild the image with a new tag, transfer and docker load, update IMAGE_TAG in .env, then docker compose up -d. The query-db on the host is preserved.

Rollback / removal

docker compose down
# keep /root/rpki128_explorer/query-db to reuse the index later, or delete it
# to force a fresh backfill of the latest RETAIN_RUNS runs.

The soak stack is never touched; removing the explorer stack has no effect on it.