Architecture

Disaster Recovery Objectives, Ownership, RPO & RTO

Recovery mechanisms, technical ownership, implementation state, and objective gaps for network configuration, workloads, secrets, DNS, UniFi control, and whole-site failure.

Disaster recovery is asynchronous and service-specific. Local copies protect routine failure, planned cross-site copies protect site loss, and rebuildable configuration reduces dependence on any single appliance.

No Time-Based RPO or RTO Is Committed

The architecture requires local PBS backups and cross-site replication but does not define backup cadence, retention, replication schedule, restore-test frequency, recovery-point objective, or recovery-time objective. Values below report the available mechanism and current gap; they are not service guarantees.

Objective Register

CapabilityRecovery mechanismTechnical ownerHuman ownerRPORTOState
OPNsense configurationExport /conf/config.xml after A2, A4, A7, A8, and later major milestonesLocal OPNsense edgeNot namedLast captured milestone; no time targetNot committedRequired during Site A campaign
UniFi controlExisting device config plus UOS autobackup capabilitysa-uos-01Not namedNot committedNot committedBackup/DR scheme not designed
Proxmox workloadsLocal Proxmox Backup Server (PBS) jobsPBS-A / PBS-BNot namedNot committedNot committedLocal-first design; policy incomplete
Whole-site workloadsPlanned cross-site PBS copies over VLAN 90 and WireGuardPBS-A ↔ PBS-BNot namedLast successful replication; schedule not setNot committedDepends on parked Site B
OpenBao dataPlanned Raft snapshots shipped over the backup pathLocal OpenBao instanceNot namedLast successful snapshot; schedule not setNot committedSnapshot timer and shipping deferred
OpenBao unsealCurrent Site A Shamir; future cross-site transit with manual cold-start break-glassLocal OpenBao instance and peerRecovery-key custodian not namedNot applicable to stored dataNot committedSite A Shamir active; transit future
DNS zonessa-dns-01 primary with three secondary copiesTechnitium DNS serviceNot namedLast successful AXFR; cadence not committedNot committedSite B replicas future
Infrastructure definitionGit-tracked Pulumi, Ansible, runbooks, and generated configuration inputsRepository and per-subproject toolingNot namedLast committed and exported stateNot committedActive reconstruction source

Technical owner identifies the system or layer that performs recovery. The repository does not assign a named person or on-call role, so human accountability remains an explicit gap.

Failure Classes and Recovery Sources

Failure classPreferred recovery sourceCross-site dependencyMain limitation
One VM or serviceLocal configuration, local data, local PBSNone for ordinary local restoreRestore procedure and timing are service-specific
One hostSurviving local cluster capacity and local PBSNone when another local copy existssa-edge-01 and sa-stor-01 concentrate multiple services
Local storage lossLocal redundancy first; PBS restore secondCross-site PBS copy for site-level lossPBS-A is co-located with Site A storage
One site unavailableOther site's last replicated PBS and OpenBao snapshot copiesRequired and not yet deployedSite B is parked
WireGuard unavailableLocal service copies and local PBSReplication and cross-site management pauseNew DNS changes and cross-site unseal paths wait
Both sites coldPassword-manager recovery material, tier-0 secrets, source repository, hardware rebuildNoneFuture transit-unseal deadlock requires manual seal migration

Replication Is Not Synchronous Storage

Ceph, ZFS, Proxmox quorum, and OpenBao Raft do not span sites. Cross-site recovery accepts a non-zero data-loss window bounded by the last successful asynchronous copy.

Recovery Precedence

  1. Restore physical power, local switching, Proxmox management, and the site E200 network bridges.
  2. Restore OPNsense and validate gateways, policy, DNS forwarding, and required WireGuard paths.
  3. Unseal OpenBao using the current Shamir path or the future transit break-glass procedure.
  4. Restore local storage, DNS, UOS, and PBS; confirm that authoritative data and backup datastores are readable.
  5. Restore core service VMs before Kubernetes/OpenShift and application workloads.
  6. Validate service behavior, then re-establish cross-site replication and record the new recovery point.

The order follows service dependencies. It does not replace the platform-specific restore procedure.

Recovery Mechanisms by Domain

Network and Control Plane

OPNsense configuration exports are mandatory after major migration milestones. The Gateway Max remains a manual Site A rollback spare through cutover disposition, not automatic failover. UOS loss does not stop already adopted devices from forwarding, but the controller backup and rebuild policy remains undecided.

Workloads and Storage

PBS-A and PBS-B back up their local sites and replicate across WireGuard so neither site is the sole recovery copy. The design does not yet define retention, prune/garbage-collection cadence, synchronization direction, bandwidth window, credentials, encryption, or recurring restore evidence.

Secrets

Each site has an independent single-node OpenBao Raft store. Planned snapshots travel to the other site. Tier-0 bootstrap secrets and recovery keys remain outside OpenBao so a sealed or lost instance can be rebuilt. Current Site A restarts require three-of-five Shamir unseal; future simultaneous-site recovery starts by manually returning one instance to Shamir.

DNS

sa-dns-01 is the writable primary. Secondary servers answer from the last transferred copy when the primary or WireGuard path is unavailable. Writes and new Site B registrations wait for primary reachability; this is stale-but-functional recovery, not active multi-primary DNS.

Decisions Still Required

DecisionRequired output
Service tiersClassify each service by business and infrastructure criticality
OwnershipName the accountable operator and recovery-key custodian for each tier
RPOSet maximum acceptable data loss per service
RTOSet maximum acceptable restoration time per service
Backup policyDefine cadence, retention, pruning, garbage collection, encryption, and replication direction
Restore evidenceDefine test frequency, sample workloads, pass criteria, and where results are recorded
Spare strategyIdentify replacement hardware for edge, storage, switching, NIC, and boot-media failures
CommunicationsDefine how recovery status and decisions are recorded during an incident

Until these values are approved, recovery planning must use factual phrases such as “last successful export,” “last successful snapshot,” and “last successful PBS replication,” never an implied hourly or daily guarantee.