Initial skills documentation — 25 categories, all SKILL.md + references + scripts
This commit is contained in:
@@ -0,0 +1,88 @@
|
||||
# Disaster Recovery Plan — IT Pro Partner
|
||||
|
||||
**Author:** ShoNuff (Hermes AI Agent)
|
||||
**Date:** July 4, 2026
|
||||
**Keep this document in:** Password manager (Bitwarden/Hudu), printed copy, and anywhere reachable without server access.
|
||||
|
||||
## Architecture
|
||||
|
||||
| Box | Provider | Location | Specs | Monthly | Runs |
|
||||
|-----|----------|----------|-------|---------|------|
|
||||
| app1 | Netcup | Manassas, VA | RS 2000 G12 (8c, 16GB, 512GB) | ~$27 | Portal, Hermes, VPN |
|
||||
| app2 | Netcup | Manassas, VA | RS 4000 G12 (12c, 32GB, 1TB) | ~$43 | AI, Docker apps, WordPress |
|
||||
| app1-bu | Hetzner | EU | CPX11 (2c, 2GB, 40GB) | ~$5 | Standby Hermes only — auto-failover |
|
||||
|
||||
## Failover architecture (app1 → app1-bu)
|
||||
|
||||
```
|
||||
app1 (netcup, live) app1-bu (Hetzner, standby)
|
||||
┌─────────────────────┐ ┌──────────────────────────┐
|
||||
│ Hermes (running) │ ping │ Hermes (off) │
|
||||
│ S3 sync every 15m │◄───────►│ Cron watchdog every 10m│
|
||||
│ Telegram connected │ 152.53 │ Checks live box health │
|
||||
└─────────────────────┘ └──────────────────────────┘
|
||||
│ │
|
||||
▼ ▼
|
||||
s3://hermes-vps-backups/live/ (15-min checkpoint — state.db, config, skills, cron, profiles)
|
||||
```
|
||||
|
||||
**If app1 dies:**
|
||||
- app1-bu watchdog detects 3 failed pings over ~60s
|
||||
- Syncs latest state from `s3://hermes-vps-backups/live/` (RPO <15 min)
|
||||
- Starts Hermes gateway on app1-bu
|
||||
- Telegram reconnects automatically (same bot token)
|
||||
- Total failover: ~2 min
|
||||
|
||||
## Critical Credentials (store externally, NOT on servers)
|
||||
|
||||
- Netcup CCP login → password manager
|
||||
- Wasabi IAM keys → password manager
|
||||
- Hetzner API token → password manager
|
||||
- Hermes setup token → password manager
|
||||
- Cloudflare API token → Cloudflare dashboard
|
||||
- wisp_rsa SSH key → password manager backup
|
||||
- S3 buckets: hermes-vps-backups, mikrotik-ccr-backups, itpropartner-backups (Wasabi us-east-1)
|
||||
|
||||
## Recovery Scenarios
|
||||
|
||||
### Hermes dies (app1) — auto-failover ~2 min (manual: 30 min)
|
||||
**Auto:** app1-bu detects outage, syncs S3, starts Hermes. No action needed.
|
||||
|
||||
**Manual fallback if auto-failover didn't trigger:**
|
||||
1. Verify from app1-bu: `hermes cron list` or `cat /var/log/hermes-standby-watchdog.log`
|
||||
2. If Hermes stopped and didn't fail over: `hermes gateway start`
|
||||
3. Or reboot app1-bu — boot restore script runs S3 sync and starts Hermes
|
||||
|
||||
### Emergency failover (manual) — 2 min
|
||||
1. SSH into app1-bu: `ssh -i ~/.ssh/wisp_rsa root@5.161.114.8`
|
||||
2. Sync latest state: `aws s3 sync s3://hermes-vps-backups/live/ ~/.hermes/ --endpoint-url https://s3.us-east-1.wasabisys.com --exclude "*.lock" --exclude "node/*" --exclude "bin/*" --exclude "cache/*" --exclude "sandboxes/*"`
|
||||
3. Start Hermes: `hermes gateway start`
|
||||
|
||||
### AI/Apps server dies (app2) — 2-4 hr recovery
|
||||
1. Order new RS 2000/4000 in Manassas
|
||||
2. Install Docker + base software
|
||||
3. Restore each app from `s3://hermes-vps-backups/apps/<app-name>/latest/`
|
||||
4. Restart each Docker compose stack
|
||||
5. Update Cloudflare DNS per subdomain
|
||||
|
||||
### Total loss — 4-6 hr recovery
|
||||
1. Provision two new Netcup servers
|
||||
2. Recover Hermes first: `aws s3 sync s3://hermes-vps-backups/live/ ~/.hermes/ --endpoint-url https://s3.us-east-1.wasabisys.com --exclude "*.lock"`
|
||||
3. Recover app2 second
|
||||
4. Restore VPN, router backup jobs
|
||||
5. Point all Cloudflare DNS records
|
||||
|
||||
### Data recovery (any scenario)
|
||||
- 15-min checkpoint in `s3://hermes-vps-backups/live/` for Hermes state
|
||||
- Router configs: 365-day retention in `mikrotik-ccr-backups`
|
||||
- S3 versioning on all buckets prevents accidental overwrite/deletion
|
||||
- Lifecycle policy: 365-day retention, then expire
|
||||
|
||||
## DR scripts on S3
|
||||
|
||||
All in `s3://hermes-vps-backups/standby/`:
|
||||
- `hermes-standby-restore.sh` — Boot-time restore (for Hetzner rescue mode deployment)
|
||||
- `hermes-standby-watchdog.sh` — 10-min cron health check, triggers failover
|
||||
- `hermes-standby.service` — systemd unit for boot-time restore
|
||||
- `DR-PLAN.md` — This document
|
||||
- `recovery-bundle-2026-07-05.md` — Full data dump (configs, credentials, conversation history)
|
||||
Reference in New Issue
Block a user