4.6 KiB
4.6 KiB
2026-01-27
Swiss VPS Setup Continued
DNS Record Added
- Created A record: zurich.inou.com → 82.22.36.202
- Added via Openprovider control panel (browser automation)
- TTL: 1 hour
- Propagated immediately (verified with dig)
VPS Details (from earlier session)
- Hostname: hostkey50304 / zurich.inou.com
- IP: 82.22.36.202
- Location: Zürich, Switzerland (likely Equinix ZH, Josefstrasse 225)
- Upstream: Cogent Communications
- Specs: 4 vCore, 6GB RAM, 120GB SSD
- OS: Fresh Debian install
- Purpose: Security infrastructure - geographic diversity for monitoring, SOC2 compliance
- NOT for hosting inou.com (that stays on Johan's home IP 47.197.93.62)
Uptime Kuma Setup
- Installed Docker + Docker Compose on zurich.inou.com
- Deployed Uptime Kuma at http://zurich.inou.com:3001
- Created admin account (johan / standard password)
- Webhook Integration:
- Configured Clawdbot hooks to receive Kuma alerts
- Webhook URL:
http://100.123.216.65:18789/hooks/kuma?token=kuma-alert-token-2026 - Alerts forwarded to Signal (+31634481877)
- Template:
🚨 **Uptime Kuma Alert**\n\n{{body.msg}}
- First monitor: inou.com (HTTPS, 60s interval)
- All alerts configured to auto-enable for new monitors
Webhook Template Fix (09:47 UTC)
- Initial alert at 09:43 came through with empty
body.msg(monitor resume event) - Updated Clawdbot hook template with fallback logic:
- Shows
body.msgif present - Falls back to "Monitor: {name} | Status: UP/DOWN" otherwise
- Shows
- inou.com confirmed UP at 100%
Updated Files
- TOOLS.md - added zurich.inou.com hostname and location details
- Clawdbot config - added hooks.mappings for Kuma webhook → Signal delivery
Task Queue Created (09:58 UTC)
Johan assigned major work queue. Written to memory/tasks-queue.md.
Immediate Tasks:
- X/Twitter Go Scraper - Build headless browser tool in Go (chromedp/rod) for timeline reading, search. Read-only. Browser approach failed (bot detection).
- Port scan Zurich → Home - nmap from 82.22.36.202 → 47.197.93.62
- OpenVAS SOC2 - Container running on Zurich, needs config + scans
- Flutter work - Project at
/home/johan/dev/inou/app/:- Separate header/footer components
- Login flow with biometric
- Static pages: landing, privacy, security, FAQ, DPA, connect, invite
- Framework for deep pages (dashboard, dossier)
- Critical: Mandatory login on every app activation, biometric at start
Work Strategy:
- Use Johan's sleep windows (5:15am-10am ET, 7:30pm-10:15pm ET)
- Async progress, only ping for blockers/completions
- Every minute counts
Config Updates:
- Added Brave API key to Clawdbot config
- Claude Code updated 2.1.19 → 2.1.20
Work Session: 10:00-10:17 UTC (Johan sleeping)
Port Scan Complete ✅
- Full TCP scan from Zurich → Home (47.197.93.62)
- Results saved to
memory/portscan-home-20260127.md - Open ports: 80 (Caddy), 443 (Caddy TLS), 2283 (Immich), 8123 (Home Assistant)
- SOC2 flag: Home Assistant publicly exposed on 8123
OpenVAS Ready ✅
- Container running on zurich.inou.com:9392
- Credentials: admin/admin
- Ready for vulnerability scans
Flutter Work ✅ (Major Progress)
New files created (all compile with 0 errors):
Layout/Scaffolding:
lib/design/widgets/inou_header.dart- Responsive header with nav, auth, mobile menulib/design/widgets/inou_footer.dart- Footer with link groupslib/design/widgets/inou_page.dart- Three page scaffolds (public, auth, auth-flow)lib/core/router.dart- Central routing setup
Auth Pages:
lib/features/auth/login_page.dart- Login with biometric support skeletonlib/features/auth/signup_page.dart- Full signup flow with DOB, sex, terms
Static Pages (all 7 complete):
lib/features/static/landing_page.dart- Marketing landing pagelib/features/static/security_page.dart- Security featureslib/features/static/privacy_page.dart- Privacy policylib/features/static/faq_page.dart- FAQ with expandable itemslib/features/static/dpa_page.dart- Data Processing Agreementlib/features/static/connect_page.dart- Contact formlib/features/static/invite_page.dart- Invite friends flow
Updated:
lib/design/widgets/inou_input.dart- Added validator, suffixIcon, autofillHints, maxLineslib/design/widgets/widgets.dart- Updated exportslib/main.dart- Now uses central router
Still TODO:
- X/Twitter Go scraper (not started - lower priority)
- OpenVAS scans (container ready, need to run)
- Integrate Flutter auth with Go backend
- Add local_auth for real biometric
- Dashboard/Dossier pages