Expand AssetRegister and DataRegister with T0/T4 stack assets. Add ResiliencePolicy, PanicSheet, full-server-loss runbook, and five incident playbooks. Update README with mirror status. Mark T02-T05, T07-T08 done; T01 and T06 in progress.
3.3 KiB
3.3 KiB
Panic Sheet — Coulomb / Helix Recovery
One page. Read this first in an incident.
Updated: 2026-07-07 · Owner: Bernd
no_secret_material_recorded: true — no passwords or tokens in this document.
1. Where are the backups?
| What | Where | Encrypted | Off-node |
|---|---|---|---|
| Custodian DB + dev config | Nextcloud file drop + ~/.cache/railiance/backups/ |
age | Yes (Nextcloud) |
| k3s state + Helm values | /opt/backup/railiance/cluster/ on railiance01 |
age | No |
| OS config (S1) | /opt/backup/railiance/infra/ on railiance01 |
age | No |
| Forgejo / platform (intended) | Nextcloud file drop | age | Adopted, not wired |
| Gitea | Manual dump only | varies | No |
Details: BackupPolicy.md, AssetRegister.yaml.
Decrypt keys: password manager first; operational keys on lost machine are gone.
2. Who has access?
| System | Admin | Recovery |
|---|---|---|
| DNS / domains | Bernd | IONOS panel — backup admin not recorded |
| Gitea | Bernd | coulombcore |
| Forgejo | Bernd | railiance01 k3s |
| Stripe | Bernd | Dashboard — MFA recovery not recorded |
| Backups (offsite) | Bernd | Nextcloud admin read; upload token in OpenBao |
| Secrets | Bernd | OpenBao unseal — see platform runbooks |
| SSH to fleet | Bernd | warden sign (ops-warden) |
3. How to rebuild (full server loss)
- Stop — do not patch a compromised host; build clean.
- Provision new machine (Ubuntu).
- Ansible baseline from
railiance-infra. - Secrets — recover OpenBao unseal material; unseal; rotate if breach.
- Data — restore from age-decrypted backups (see
RestoreRunbooks/01-full-server-loss.md). - k3s — redeploy Helm releases from values backup or GitOps.
- Validate — health checks, smoke tests, representative workflow.
- DNS — cutover A records in IONOS when confident.
- Evidence — write
TestEvidence/restore-drill-YYYY-MM-DD.md.
4. How to rotate secrets (breach or leak)
- Isolate affected systems.
- Revoke exposed credentials immediately.
- Build clean replacement environment.
- Restore data from backup before compromise time.
- Rotate: OpenBao paths, Stripe keys, API keys, Gitea/Forgejo tokens, backup tokens.
- Force session/password reset where applicable.
- Log in State Hub +
TestEvidence/.
Playbook: IncidentPlaybooks/credential-leak.md, IncidentPlaybooks/ransomware.md.
5. How to switch DNS
| Hostname | Production IP (2026-07-07) | Notes |
|---|---|---|
*.coulomb.social (railiance01 services) |
92.205.62.239 |
forgejo, reuse, hub target |
| CoulombCore legacy | 92.205.130.254 |
gitea until cutover |
- Export current zone from IONOS before changes.
- Lower TTL ahead of planned cutover if possible.
- Update A records; verify with
dig +short <host> A. - Validate HTTPS:
curl -fsS https://<host>/healthor equivalent. - Roll back to previous A record if validation fails.
6. Before any infrastructure work
bin/railiance preflight # on dev workstation — must exit 0
7. Escalation and evidence
- Full runbook:
RestoreRunbooks/01-full-server-loss.md - Registers:
AssetRegister.yaml,DataRegister.yaml - Pickup queue (open backup work):
BackupPickupQueue.md - Forgejo restore:
railiance-infra/tools/forgejo-restore-drill.sh