Protected data inventory
Backup design
Use a dedicated host backup job with Restic or an equivalent encrypted, authenticated tool. The repository is an S3-compatible bucket or other off-site target protected by a bucket-restricted account. Keep the repository encryption password in a recovery vault outside the Dokploy server. The nightly job must:- Confirm sufficient local staging and remote repository capacity.
- Create custom-format dumps from
postgres,oie-postgres, andorthanc-postgresas applicable. - Capture
app-storage,oie-appdata,oie-extensions, andorthanc-storageconsistently. - Upload dumps, volume data, and a sanitized manifest into the encrypted repository.
- Run repository integrity checks and apply retention.
- Emit a success/failure record with timestamp, sizes, duration, and recovery-point identifier.
- Alert when no successful production recovery point is younger than 26 hours.
PostgreSQL dump pattern
Run from the correct Dokploy Compose project directory or adapt the container selector to the installation. The command reads database identity from the container environment and writes the dump to protected host staging storage.oie-postgres and orthanc-postgres. Restrict staging files to the backup operator, encrypt/upload them immediately, and remove them through the approved retention job after verification.
Volume consistency
- Coordinate a short integration pause when taking the Orthanc database and DICOM storage recovery point so metadata and files correspond.
- Do not archive a PostgreSQL data-directory volume as a substitute for
pg_dumpwhile the database is running. - Record the application commit, image versions, schema migration status, and exact Docker volume names with every recovery point.
- Back up new volumes before declaring any feature production-ready.
Retention and integrity
An approved scheduled job should apply the policy equivalent to:Isolated restore drill
1
Open a recovery record
Select a recovery point, start the RTO clock, record the expected data timestamp, and assign database, application, integration, and validation owners.
2
Build an isolated target
Use separate domains, networks, secrets, volumes, and databases. Block outbound mail, device traffic, and production callbacks.
3
Deploy the matching application version
Deploy the commit and container versions recorded in the backup manifest with
RUN_MIGRATIONS=false.4
Restore volumes and databases
Restore application and integration volumes to empty target volumes. Restore each logical dump into its matching empty PostgreSQL database:Never point this command at the active production database.
5
Rebuild runtime state
6
Validate recovery
Check
/up, migration status, authentication, branches, representative patient and billing records, files, queue, scheduler, OIE configuration, Orthanc study counts, and OHIF viewing. Keep all restored PHI within the approved isolated boundary.7
Measure and close
Record achieved RPO and RTO, missing data, reconciliation needs, errors, operator steps, and corrective actions. Destroy or securely retain the isolated environment according to policy.