This runbook is for self-hosted Sideplane operators recovering from paused rollouts, bad configuration changes, database issues, or token exposure.
Do recovery from a trusted shell with an admin operator token. Keep machine private details, real hostnames, IPs, secrets, and raw runtime config contents out of tickets and committed notes.
-
Confirm the server is reachable:
sideplane status --server http://localhost:8080 --operator-token "$SIDEPLANE_OPERATOR_TOKEN" -
Check recent audit activity:
sideplane audit list --server http://localhost:8080 --operator-token "$SIDEPLANE_OPERATOR_TOKEN" -
Export a copy before changing state:
sideplane audit export --format ndjson --out sideplane-audit.ndjson \ --server http://localhost:8080 --operator-token "$SIDEPLANE_OPERATOR_TOKEN"
Start by inspecting the rollout and affected node jobs:
sideplane rollout status <rolloutId> --server http://localhost:8080 \
--operator-token "$SIDEPLANE_OPERATOR_TOKEN"
sideplane jobs list <nodeId> --server http://localhost:8080 \
--operator-token "$SIDEPLANE_OPERATOR_TOKEN"Resume when the pause cause was transient and the rollout target is still correct: a node came back online, a dry-run job was retried manually, or an external receiver recovered.
sideplane rollout resume <rolloutId> --server http://localhost:8080 \
--operator-token "$SIDEPLANE_OPERATOR_TOKEN"Abort when the target provider/model is wrong, the node set is wrong, health checks show an unsafe runtime state, or the rollout has already been replaced by a safer plan.
sideplane rollout abort <rolloutId> --server http://localhost:8080 \
--operator-token "$SIDEPLANE_OPERATOR_TOKEN"Do not create an overlapping rollout for the same nodes unless you have reviewed
the conflict and intentionally use allowOverlap.
Sideplane rollback uses backup references reported by prior config-apply jobs. List the server-known references first:
sideplane backups list <nodeId> --server http://localhost:8080 \
--operator-token "$SIDEPLANE_OPERATOR_TOKEN"Create a dry-run rollback before any live mutation:
sideplane rollback <nodeId> --backup-ref <backupRef> --wait \
--server http://localhost:8080 --operator-token "$SIDEPLANE_OPERATOR_TOKEN"Only after reviewing the dry-run result and confirming the live-write preflight, run the live rollback:
sideplane rollback <nodeId> --backup-ref <backupRef> --live --yes --wait \
--server http://localhost:8080 --operator-token "$SIDEPLANE_OPERATOR_TOKEN"Afterward, run a deep probe and confirm the config hash/provider/model returned to the expected state.
Database restore is offline. Do not replace the SQLite file while the server is running.
Systemd example:
sudo systemctl stop sideplane-server
sudo cp /var/lib/sideplane/backups/sideplane-backup-YYYYMMDDTHHMMSS.db \
/var/lib/sideplane/sideplane.db
sudo chown sideplane:sideplane /var/lib/sideplane/sideplane.db
sudo systemctl start sideplane-serverDocker Compose example:
docker compose -f deployments/docker-compose/docker-compose.yml stop server
cp ./sideplane-backup.db ./data/sideplane.db
docker compose -f deployments/docker-compose/docker-compose.yml start serverAfter restore, check /readyz, sideplane status, fleet node count, recent
audit events, and enrollment/operator-token state. If the backup predates a token
rotation, rotate again.
Named tokens can be rotated without restarting the server:
sideplane token create --name ops-new --scope admin \
--server http://localhost:8080 --operator-token "$SIDEPLANE_OPERATOR_TOKEN"
sideplane whoami --server http://localhost:8080 --operator-token "<new-token>"
sideplane token revoke <oldTokenId> --server http://localhost:8080 \
--operator-token "<new-token>"For the bootstrap token in SIDEPLANE_OPERATOR_TOKEN, update the environment
file or secret store, restart sideplane-server, verify the new token with
sideplane whoami, then remove the old value from operator machines.
-
If the leaked token is a named token, list metadata and revoke it:
sideplane token list --server http://localhost:8080 \ --operator-token "$SIDEPLANE_OPERATOR_TOKEN" sideplane token revoke <tokenId> --server http://localhost:8080 \ --operator-token "$SIDEPLANE_OPERATOR_TOKEN"
-
If the leaked token is the bootstrap token, replace
SIDEPLANE_OPERATOR_TOKENand restart the server. -
Export audit events and review actions since the suspected exposure time.
-
Rotate any downstream credentials that may have been changed through exposed operator access.
-
Keep read-only tokens for dashboards and automation where mutation is not needed.
- The affected rollout is completed, aborted, or intentionally left paused with an operator note.
- Any live rollback has a completed job result and a fresh deep-probe result.
- The fleet view shows expected freshness, drift, and runtime health.
- Audit export has been captured for the incident window.
- Leaked or obsolete tokens are revoked, and new tokens have been verified.