mirror of
https://github.com/project-dorado/dorado-cloud.git
synced 2026-10-12 02:21:11 +00:00
- Fanart.tv, TheAudioDB and Discogs adapters behind Providers:* keys (no-op
when unconfigured); wired into legacy artist imagery after the keyless
Wikidata/Wikimedia path. discogs.com added to the artwork allowlist.
- Ops docs: docs/ops/{backup-restore,metrics,moderation}.md and a sample
Grafana dashboard at deploy/observability/grafana-dashboard.json.
- Config/compose/.env plumbing for provider keys.
- Tests: each provider returns a URL when configured and is a no-op otherwise.
178/178 tests; Release build 0 warnings.
2.1 KiB
2.1 KiB
Backup & restore
Dorado Cloud stores state in three places. Corpi (firmware/apps/PC-client resources) are external and untracked, so they are backed up separately if you care about them.
| State | Where | Backup |
|---|---|---|
| Accounts, devices, settings, social, updates, inbox, sessions, media metadata, embeddings | PostgreSQL | pg_dump |
| Artwork / media bytes | MinIO (S3) bucket | mc mirror |
Signing & encryption keys, .env |
data/keys, .env |
file copy / secret manager |
PostgreSQL
# backup
docker compose exec -T postgres pg_dump -U dorado -Fc doradocloud > doradocloud-$(date +%F).dump
# restore (into a fresh database)
docker compose exec -T postgres pg_restore -U dorado -d doradocloud --clean --if-exists < doradocloud-YYYY-MM-DD.dump
The API applies EF Core migrations at startup, so restoring a dump from an older version and then starting the current image upgrades the schema.
Object storage (MinIO)
mc alias set dorado http://localhost:9000 "$MINIO_ROOT_USER" "$MINIO_ROOT_PASSWORD"
mc mirror --overwrite dorado/"${MINIO_BUCKET:-dorado-cloud}" ./minio-backup
# restore
mc mirror --overwrite ./minio-backup dorado/"${MINIO_BUCKET:-dorado-cloud}"
Artwork is content-addressed and reconstructible from providers, so losing it is recoverable (slower first paint); media bytes are not reconstructible if the source disappears — keep those backed up.
Keys & configuration
data/keys/openiddict-signing.pfx,openiddict-encryption.pfx,updates-signing.pem— losing the signing key invalidates existing access tokens; losing the encryption key makes stored tokens unreadable..env(Postgres/MinIO secrets,Auth:Issuer, provider keys).
Back these up to a secret manager, not the same host.
Restore checklist
- Restore
.envanddata/keysto the host. - Start Postgres/MinIO, restore the dump and the bucket.
docker compose up -dand confirmGET /health/readyreturns200.- Verify:
GET /.well-known/openid-configuration, a client-credentials token, andGET /v1/identity/mewith a bearer token. - Smoke the legacy hosts:
tools/legacy-smoke.sh http://localhost:5088.