# Standby Audit — July 8, 2026

## Server: app1-bu.itpropartner.com (5.161.114.8)

Hetzner CPX11 (2 vCPU / 2 GB RAM / 40 GB SSD) — warm standby for app1 (152.53.192.33, netcup).

### Power State
- Hetzner API: `running` (server is powered on, OS up)
- Per DR plan: documented as "🟢 Dormant" but the intent in `hermes-standby-deployment` skill says "Stay powered on with Hermes off" — so running is **correct**, but server-inventory.md calls it "dormant" which is ambiguous.
- **Note:** If electricity cost ($5/mo) is a concern, this could be a cold standby (boot on demand) with a ~60s slower failover.

### Hermes Gateway
- `systemctl is-active hermes-gateway` → `inactive` ✅

### Standby Service
- `systemctl is-active hermes-standby` → `active (exited)` ✅
- Last boot: Jul 5, 2026
- Uptime at audit: 3 days, 1:16
- Restore log: `Live box is REACHABLE — staying dormant (clean exit)` ✅

### Watchdog Cron
- `crontab -l` → `*/10 * * * * /root/.hermes/scripts/hermes-standby-watchdog.sh` ✅
- Watchdog log: empty (no failures detected) ✅
- Disk usage: 16G / 38G (43%)

### SSH Access
- Key: `itpp-infra` (Ed25519) ✅
- Recent auth log shows SSH from 152.53.192.33 (live box) — heartbeat or previous manual check

### S3 Artifacts
- `s3://hermes-vps-backups/standby/` — all 6 files present ✅
- `DR-PLAN.md` — 13 KB, present ✅
- `hermes-standby-restore.sh` — 2.8 KB, matches deployed version ✅
- `hermes-standby-watchdog.sh` — 4.3 KB, matches deployed version ✅
- `hermes-standby.service` — 367 B, matches deployed version ✅
- `server-inventory.md` — 8.1 KB, present ✅
- `recovery-bundle-2026-07-05.md` — 280 KB, present ✅

### Live Sync Freshness
- `hermes-live-sync` cron runs every 15 min on live box ✅
- `state.db` on S3: 2026-07-08T23:19:08Z (~5 min from audit time) ✅
- `gateway_state.json`: 2026-07-08T23:19:06Z ✅
- `channel_directory.json`: 2026-07-08T23:18:59Z ✅
- Total S3 `live/` data: 32,151 files / 4.8 GiB

### Credential Observations
- `HETZNER_API_TOKEN` exists as a shell env var
- `/root/.hermes/scripts/.hetzner_token` file is **missing** (deleted during prior cleanup?)
- Recovery bundle references the file approach — potential doc/setup drift

### Issues Found
1. Minor: server-inventory.md says "dormant" (implies off) but server is running — warm standby is correct per skill, but docs ambiguous
2. Minor: `.hetzner_token` file deleted; token only exists in env var — recovery bundle instructs restoring the file
3. No critical issues

### Next Audit Recommendation
- Quarterly or after any DR-plan changes
- Also verify the live-sync script hasn't drifted (exclusion patterns, credentials)
- Check Hetzner snapshot cron (`hetzner-weekly-snapshots`) still runs
