Session 2026-01-14¶
Summary¶
Deep architecture review and streamlining for maximum geek factor with minimalism. Comprehensive documentation pass.
Accomplished¶
Part 1: Architecture Planning (Morning)¶
VPS Architecture¶
- Researched Vultr vs DigitalOcean pricing (~$6/mo)
- Documented privacy-focused VPS services
- Created
docs/vps-architecture.md
Fixed Homelab Planning¶
- Designed Proxmox VE architecture (OPNsense + Docker Host VMs)
- Researched Umbrel vs Start9 for Bitcoin node (chose Start9)
- Planned NAS with Debian + mergerfs + snapraid
- Created
docs/fixed-homelab.md
Key Architecture Decisions¶
- RPi 5 as primary Headscale (not VPS) - maximum sovereignty
- VPS demoted to helper only (DERP relay + monitoring)
- Mobile kit is fully self-contained
Minimalism Review¶
- Removed Portainer (use lazydocker CLI)
- Removed Nextcloud (use Syncthing)
- Removed Browserless from VPS (changedetection has built-in)
- Replaced Traefik with Caddy (simpler)
- Service count: 28 → 22
DNS Decision¶
- Compared Pi-hole vs AdGuard Home
- Chose Pi-hole for all environments (mobile/home/VPS)
- Reason: OG street cred, better CLI (
pihole -t), massive community
Part 2: Documentation Deep Dive (Afternoon)¶
Fixed Architecture Doc Issues¶
- Updated diagram: Nextcloud/Traefik → Pi-hole/Caddy
- Changed VPS label: "Coordination" → "Helper"
- Fixed AdGuard → Pi-hole reference in secrets doc
- Added Pi-hole to fixed homelab deployment order
- Added NAS to Tailscale network table
DNS Architecture¶
- Created comprehensive DNS flow documentation
- Mobile: Pi-hole → public DNS (simple for travel)
- Fixed: Pi-hole → Unbound on OPNsense:5353 (recursive, max privacy)
- VPS: Pi-hole → public DNS (fallback)
- Documented Headscale MagicDNS integration
Services Inventory¶
- Updated
services.mdwith all 22 services - Added service matrix by environment and category
- Created full port allocation map
- Documented Docker directory structure
SOPS Configuration¶
- Created
.sops.yamlwith creation rules - Rules for mobile, fixed, VPS, and catch-all
- User needs to add age public key
RPi 5 Case Research¶
- Researched 3D printable cases for local printing (Paraguay)
- Documented 7 options ranked by geek factor
- Top pick: Retro Tower Desktop
- Created comparison matrix and printing tips
Hardware Documentation¶
- Complete rewrite of
hardware.md - Added device details (RPi 5, Mini PC, RPi 4, NAS)
- Network topologies with IPs
- Tailscale IP allocation table
- Power considerations and future hardware
Part 3: Domain & Branding Research (Initial)¶
Domain Name Research¶
- Brainstormed Guarani-inspired domain names
- Checked availability via WHOIS
- Discovered .io doesn't support IDN (no ñ character)
- Found available: nanduti.io, mbyja.io, kuarahy.io, verava.net
Initial Domain Decision¶
- nanduti.io for homelab (Guarani "web/lace" = mesh metaphor)
- verava.net for business (professional, easy)
- Total cost: ~$42/year for both
Note: This decision was revised in Part 5.
Part 4: Comprehensive Architecture Review¶
Full Architecture Analysis¶
- Reviewed all architecture docs with exploration agent
- Identified strengths and gaps across all environments
- Found 4 critical, 4 high, 4 medium, 3 low priority issues
Critical Gaps Identified¶
- Headscale backup only daily (should be hourly)
- No disaster recovery runbook
- Caddy reverse proxy config undefined
- MQTT missing for Home Assistant ↔ Frigate
Domain Coexistence Strategy¶
- Mapped 11 subdomains for nanduti.io (personal)
- Mapped 5 subdomains for verava.net (business)
- Defined public vs Tailscale-only access model
- Created proposed Caddy reverse proxy config
Improvement Roadmap¶
- 17 tasks across 4 phases
- Phase 1: Critical fixes before deployment
- Phase 2: High priority during deployment
- Phase 3: Medium priority post-deployment
- Phase 4: Future enhancements
Part 5: Domain Strategy Pivot¶
New Context Revealed¶
- Already own cronova.dev for Open Source / Micro SaaS
- Email configured: augusto@cronova.dev
- GitHub org exists: github.com/cronova
- Personal GitHub: github.com/ajhermosilla
Strategy Pivot¶
- cronova.dev replaces nanduti.io for homelab (already owned, same geek factor)
- verava.ai replaces verava.net (AI positioning for Supply Chain + AI)
- Skip nanduti.io entirely (save $30/yr)
Final Two-Domain Strategy¶
- cronova.dev: Developer identity, homelab, open source, micro SaaS
- verava.ai: Business identity, Supply Chain + AI consulting
verava.ai Availability¶
- Checked WHOIS: AVAILABLE
- Price: ~$50-80/yr
- Recommended registrar: Cloudflare
Subdomain Architecture¶
- cronova.dev: 16 subdomains (hs, home, media, btc, nas, git, vault, status, notify, api, saas, www, docs...)
- verava.ai: 5 subdomains (www, app, api, docs, demo)
Part 6: Branding¶
Brand Identity Created¶
- Created comprehensive
docs/branding.md(393 lines) - Defined both brands with etymology, taglines, mission/vision
cronova.dev Brand¶
- Etymology: Cron (Unix scheduler) + Nova (new star) = "Scheduled Innovation"
- Tagline: "Build weird. Ship fast."
- Mission: Build tools for developers who refuse to wait. Open source first. Ship fast.
- Vision: Digital sovereignty for developers. Your code, your servers, your rules.
- Personality: The friend who shares their dotfiles
verava.ai Brand¶
- Etymology: Vera (Latin "true") + .ai = "True AI" / "Genuine Intelligence"
- Tagline: "From chaos to clarity"
- Mission: Transform supply chain chaos into competitive advantage through AI that anticipates, not just analyzes.
- Vision: A world where no product is delayed, no inventory is wasted, and every supply chain runs on truth.
- Personality: The strategic advisor who delivers results
Manifestos Created¶
- The Cronova Manifesto: "That cron jobs are poetry. That shipping beats perfection."
- The Verava Promise: "We will tell you the truth about your supply chain."
Additional Content¶
- Founder bios (short, medium, long versions)
- Elevator pitches (10-second, 30-second, combined)
- Messaging matrix for different audiences
- Color palettes and logo concepts
- Social media handles to secure
Part 7: Disaster Recovery¶
DR Runbook Created¶
- Created comprehensive
docs/disaster-recovery.md(647 lines) - Addresses critical gap from architecture review
Scenarios Covered¶
| Scenario | Priority | Recovery Options |
|---|---|---|
| Headscale failure | Critical | Same hardware / Rebuild / VPS failover | | Pi-hole failure | High | Restart / Restore / Rebuild | | VPS failure | Medium | Vultr recovery / Rebuild | | Vaultwarden failure | Critical | Restart / Restore from backup | | Start9/Bitcoin failure | Medium | Restart / Reflash / Restore | | NAS failure | Medium | SnapRAID recovery / Rebuild | | Complete site failure | Variable | Per-site procedures |
Backup Strategy Documented¶
- Headscale: Hourly to NAS + Cloud (30 days retention)
- Vaultwarden: Hourly to NAS + Cloud (30 days retention)
- Pi-hole: Daily to NAS (7 days retention)
- Home Assistant: Daily to NAS (14 days retention)
- Start9: Weekly to NAS (4 weeks retention)
Additional Content¶
- Backup scripts ready to deploy
- Recovery checklist (before/after)
- Backup verification schedule (weekly/monthly/quarterly)
- Post-incident template
Part 8: Infrastructure as Code¶
Mobile Kit Docker Compose¶
- Created deployable configs for RPi 5
- Ready to deploy when PSU arrives
Headscale Configuration¶
docker-compose.ymlwith embedded DERP serverconfig.yaml.exampletemplate with MagicDNS for cronova.dev- Let's Encrypt ACME setup
- Setup instructions and useful commands in comments
Pi-hole Configuration¶
docker-compose.ymlwith configurable upstream DNS- Port 8080 for web UI (80 reserved)
- DNSSEC enabled
- Blocklist recommendations included
Supporting Files¶
.env.examplewith all environment variablesREADME.mdquick start guide.gitignoreto protect secrets
Services Updated¶
- Added Mosquitto MQTT broker to services.md
- Service count: 22 → 23
- Deployments: 25 → 26
- Addresses critical gap (HA ↔ Frigate communication)
Part 9: Caddy Reverse Proxy¶
Comprehensive Config Created¶
- Created
docs/caddy-config.md(555 lines) - Addresses last critical gap from architecture review
VPS Caddyfile¶
- Full config for cronova.dev public services (vault, status, notify, api, saas)
- Full config for verava.ai services (www, app, api, docs)
- Security headers on all responses
- CORS configured per-service
- Let's Encrypt ACME integration
Fixed Homelab Caddyfile¶
- Internal services via Tailscale (home, media, sonarr, radarr, etc.)
- WebSocket support for Home Assistant & Frigate
- Tailscale HTTPS certificate strategy
Additional Content¶
- Docker compose for VPS Caddy
- Complete Cloudflare DNS tables (both domains)
- SSL/TLS strategy documentation
- Security hardening checklist
- Deployment checklist and troubleshooting guide
Part 10: VPS Docker Compose¶
Complete VPS Stack Created¶
- 7 docker-compose files for all VPS services
- Ready for Vultr deployment
Services Configured¶
| Service | Ports | Purpose |
|---|---|---|
| Caddy | 80, 443 | Reverse proxy + Caddyfile | | Pi-hole | 53, 8053 | US fallback DNS | | DERP | 3478, 8443 | Tailscale relay | | Uptime Kuma | 3001 | Status monitoring | | ntfy | 8080 | Push notifications | | changedetection | 5000 | Website monitoring | | Restic REST | 8000 | Backup target |
Supporting Files¶
.env.examplewith VPS-specific variablesREADME.mdwith deployment order and setup- UFW firewall rules documented
- Tailscale integration instructions
- Monitoring checklist for Uptime Kuma
Directory Structure¶
docker/vps/
├── networking/caddy/ # + Caddyfile
├── networking/pihole/
├── networking/derp/
├── monitoring/ # Uptime Kuma + ntfy
├── scraping/ # changedetection + Playwright
└── backup/ # Restic REST
Part 11: Headscale Hourly Backup¶
Last Critical Gap Fixed¶
- Added backup sidecar container to Headscale docker-compose
- Alpine container with crond running hourly backups
- Uses
sqlite3 .backupfor consistent database snapshots - Configurable backup path and retention (default 30 days)
Files Created/Updated¶
docker/mobile/rpi5/networking/headscale/docker-compose.yml- Added backup sidecardocker/mobile/rpi5/networking/headscale/backup.sh- Backup scriptdocker/mobile/rpi5/.env.example- Added BACKUP_PATH and BACKUP_RETENTION_HOURSdocs/architecture-review.md- Marked Phase 1 complete
Phase 1 Critical Fixes Complete¶
All 4 critical gaps now addressed:
- [x] Headscale hourly backup
- [x] Disaster recovery runbook
- [x] MQTT broker added
- [x] Caddy reverse proxy documented
Part 12: Next Session Planning¶
- Created
docs/sessions/next-session-plan.md - Focus: High + Medium priority items
- 8 tasks identified for next session
Architecture Overview¶
[Mobile Kit - Sovereign]
├── RPi 5: Headscale (PRIMARY), Pi-hole
└── MacBook: soft-serve, Docker dev
[Fixed Homelab - Always-On]
├── Mini PC (Proxmox): OPNsense VM + Docker Host VM
├── RPi 4: Start9 (Bitcoin Core, Lightning, Electrum)
└── Old PC/NAS: Debian, mergerfs, Syncthing, Frigate
[VPS - Helper Only]
└── Vultr US: DERP relay, Pi-hole, Uptime Kuma, ntfy, changedetection
Decisions Made¶
| Decision | Choice | Rationale |
|---|---|---|
| VPS Provider | Vultr US | ~$6/mo, burn credits first | | Bitcoin Node | Start9 over Umbrel | Privacy-first, HTTPS, open source | | Reverse Proxy | Caddy over Traefik | Simpler config | | File Sync | Syncthing over Nextcloud | Peer-to-peer, minimal | | Container Mgmt | lazydocker over Portainer | CLI-first | | Secrets | age + SOPS | Encrypted in git | | Mesh Coordination | Headscale on RPi 5 | Carry mesh in backpack | | DNS | Pi-hole over AdGuard | OG street cred, CLI-first | | DNS Flow (home) | Pi-hole → Unbound | Max privacy, recursive | | RPi 5 Case | Retro Tower Desktop | Server aesthetic, 3D printable | | Homelab Domain | cronova.dev | Already owned, same geek factor | | Business Domain | verava.ai | AI positioning for Supply Chain |
Documentation Created/Updated¶
| File | Status | Description |
|---|---|---|
| docs/vps-architecture.md | New | Cloud helper node |
| docs/fixed-homelab.md | New + Updated | Home infrastructure |
| docs/secrets-management.md | New | age + SOPS workflow |
| docs/dns-architecture.md | New | DNS flow all environments |
| docs/services.md | Rewritten | 22 services, ports, structure |
| docs/hardware.md | Rewritten | All hardware with roles |
| docs/rpi5-case-research.md | New | 3D printable case options |
| docs/domain-research.md | New | Domain comparison and decision |
| docs/architecture-review.md | New | Full review with gaps and roadmap |
| docs/domain-strategy.md | New | Final two-domain strategy |
| docs/branding.md | New | Brand identity for both domains |
| docs/disaster-recovery.md | New | DR runbook for all scenarios |
| docs/caddy-config.md | New | Reverse proxy for all environments |
| docs/mobile-homelab.md | Updated | Added NAS to Tailscale table |
| .sops.yaml | New | SOPS encryption config |
Stats¶
| Metric | Value |
|---|---|
| Unique services | 23 | | Total deployments | 26 | | Environments | 3 (Mobile, Fixed, VPS) | | Docs created | 11 | | Docs updated | 7 | | Docker compose files | 9 (2 mobile + 7 VPS) | | Commits | 33 | | Critical gaps fixed | 4/4 | | Domains | 2 (cronova.dev owned, verava.ai to buy) | | Improvement tasks | 17 (4 critical done) | | Money saved | $42/yr (skipped nanduti.io + verava.net) |
Next Steps¶
Critical Fixes (Before Deployment)¶
- [x] Increase Headscale backup to hourly (in compose config)
- [x] Create disaster recovery runbook
- [x] Add MQTT broker to services
- [x] Document Caddy reverse proxy config
Mobile Kit (waiting for PSU)¶
- [ ] Flash RPi OS, install Docker
- [ ] Deploy Headscale + Pi-hole
- [ ] Configure Beryl AX DHCP reservations
- [ ] Test all scenarios
- [ ] 3D print case locally
VPS¶
- [ ] Create Vultr account
- [ ] Deploy VPS, harden
- [ ] Deploy DERP + Pi-hole + monitoring stack
Fixed Homelab¶
- [ ] Install Proxmox on Mini PC
- [ ] Create OPNsense + Docker Host VMs
- [ ] Flash Start9 on RPi 4
- [ ] Install Debian on NAS
Infrastructure as Code¶
- [ ] Generate age key, update
.sops.yaml - [x] Create docker-compose files (mobile kit)
- [ ] Create docker-compose files (fixed homelab)
- [x] Create docker-compose files (VPS)
- [ ] Create Ansible playbooks
- [ ] Version control all configs
Domains¶
- [x] cronova.dev - Already owned
- [ ] Purchase verava.ai (Cloudflare ~$50-80/yr)
- [ ] Configure cronova.dev DNS for homelab subdomains
- [ ] Set up verava.ai email
Future Documentation¶
- [ ] Unified network diagram (all 3 environments)
- [ ] Monitoring strategy (Uptime Kuma checks)
Commits¶
| Hash | Message |
|---|---|
| ed0fb79 | docs: add next session plan (high + medium priority) | | 2f5c212 | feat: add hourly backup sidecar for Headscale | | 69179c6 | feat: add docker-compose for VPS helper node | | bb1a3d8 | docs: update session summary with Caddy config | | d3e0a4b | docs: add comprehensive Caddy reverse proxy configuration | | dbe7b44 | docs: update session summary with IaC and MQTT | | 413f406 | feat: add docker-compose for mobile kit (RPi 5) | | 708f2d1 | docs: add Mosquitto MQTT broker to services | | cd36f1b | docs: update session summary with disaster recovery | | 4be81d7 | docs: add disaster recovery runbook | | 47a8679 | docs: update session summary with branding section | | 54e451e | docs: add branding guide for cronova.dev and verava.ai | | b168142 | docs: update session summary with domain strategy pivot | | 69ed4da | docs: add two-domain strategy (cronova.dev + verava.ai) | | 7ba1315 | docs: final session summary with architecture review | | 076edbf | docs: add comprehensive architecture review | | f17a666 | docs: update session summary with domain research | | 11289cb | docs: add domain research comparing nanduti.io vs verava.net | | bc71c26 | docs: update session summary with full day's work | | ae30367 | docs: update hardware.md with architecture decisions | | f0135f4 | docs: add RPi 5 case research for 3D printing | | 2a44743 | chore: add SOPS configuration for encrypted secrets | | b05b7e2 | docs: complete services inventory with all 22 services | | 00d228c | docs: add DNS architecture with Pi-hole + Unbound flow | | b15c2ed | fix: correct architecture docs after Pi-hole standardization | | 4ac127a | docs: update session summary with Pi-hole decision | | 24f736f | docs: standardize on Pi-hole for DNS (mobile/home/VPS) | | 4bba8de | docs: add session summary 2026-01-14 | | 5acf764 | docs: streamline architecture for geek factor + minimalism | | 7a0b4ef | docs: RPi 5 as primary Headscale, VPS as helper only | | ec86de3 | docs: add fixed homelab architecture | | 4828038 | docs: add VPS architecture plan | | c04ef14 | docs: update session summary with final decisions |
Files Changed¶
docs/
├── architecture-review.md (new)
├── branding.md (new) ← Brand identity
├── caddy-config.md (new) ← Reverse proxy config
├── disaster-recovery.md (new) ← DR runbook
├── dns-architecture.md (new)
├── domain-research.md (new)
├── domain-strategy.md (new) ← Final strategy
├── fixed-homelab.md (new + updated)
├── hardware.md (rewritten)
├── mobile-homelab.md (updated)
├── rpi5-case-research.md (new)
├── secrets-management.md (new)
├── services.md (rewritten + updated) ← Added MQTT
├── sessions/
│ ├── 2026-01-14.md (new + updated)
│ └── next-session-plan.md (new) ← Next session planning
└── vps-architecture.md (new + updated)
docker/
├── mobile/
│ └── rpi5/ ← Mobile kit configs
│ ├── .env.example (updated - backup vars)
│ ├── .gitignore
│ ├── README.md
│ └── networking/
│ ├── headscale/
│ │ ├── docker-compose.yml (updated - backup sidecar)
│ │ ├── backup.sh (new) ← Hourly backup script
│ │ └── config/
│ │ └── config.yaml.example
│ └── pihole/
│ └── docker-compose.yml
└── vps/ ← VPS configs (NEW)
├── .env.example
├── .gitignore
├── README.md
├── networking/
│ ├── caddy/
│ │ ├── docker-compose.yml
│ │ └── Caddyfile
│ ├── pihole/
│ │ └── docker-compose.yml
│ └── derp/
│ └── docker-compose.yml
├── monitoring/
│ └── docker-compose.yml
├── scraping/
│ └── docker-compose.yml
└── backup/
└── docker-compose.yml
.sops.yaml (new)