Kamrui E2 · Ubuntu 26.04 · always-on Linux home server & unified Claude brain
Clients — interact from anywhere (over Tailscale)
VSCode Remote-SSH · Finder SMB · can sleep
Termius SSH → brain · Files app SMB
Sushi/Kai bots later phase
Mini PC — minipc · 100.72.42.97 · Intel N150 · 16GB · Ubuntu 26.04 · Docker
Docker · :8123 · ZHA/ZBT-2 Zigbee
Docker · :8096 · QuickSync transcode
tmux brain · Node 24 · MCP
:9090 · system dashboard
:445 · shares the 8TB
workspace + .memory mesh
Storage
exFAT · /mnt/8tb by UUID · Media 674G (Movies+TV) · Backups · Justin · Orielle · home-assistant-backups
OS · Docker · HA config + ZHA keys · workspace + .memory
Smart home → Home Assistant (Zigbee + WiFi/LAN)
Google Cast (Home Minis) · Wemo plug
TP-Link Kasa ×6 (no account)
ecobee ×2 · Nest Cam · Tuya · SmartThings · Alarm.com
ZBT-2 coordinator ready · pair per-device
Mesh peers & cloud
n8n · Caddy · Uptime Kuma · Syncthing relay
HA backups offsite (rclone, SA) · nightly
watches the box ping + HA backup heartbeat
Claude brain · subscription (interactive)
| Service | Access | Purpose | Status | Left to do |
|---|---|---|---|---|
| Home Assistant | :8123 · http://100.72.42.97:8123 | Smart-home hub · Zigbee via ZBT-2 | Live | Pair devices (you, in UI) |
| Jellyfin | :8096 · http://100.72.42.97:8096 | Media server · QuickSync HW transcode · 674G library | Live | First-run wizard (admin + add library) |
| Claude brain | ssh minipc → brain → claude | Unified Claude Code (same workspace + memory everywhere) | Needs login | /login (your subscription) |
| Cockpit | :9090 · https://100.72.42.97:9090 | Browser system/Docker management | Live | Log in as justin |
| Samba | smb://100.72.42.97/8tb | File access to the 8TB from Mac/iPhone | Live | — |
| Syncthing | local :8384 | Sync workspace + .memory across Mac/VPS/box | 100% synced | — |
| HA backups | cron 4am → 8TB + Google Drive | Two-tier, byte-verified, Kuma-watched | Live | — |
| From | Do this |
|---|---|
| Terminal / iPhone (Termius) | ssh minipc then brain (attaches the Claude session) — or any admin command |
| Mac — full Claude UI | VSCode Remote-SSH into minipc, open /home/justin/claude-workspace, run the Claude Code extension on the host |
| Files (8TB) | Finder/Files → smb://100.72.42.97/8tb · user justin (same mini-PC password, in 1Password) |
| Web dashboards | HA :8123 · Jellyfin :8096 · Cockpit :9090 (all over Tailscale) |
| Item | Detail |
|---|---|
| Box | Kamrui E2 · Intel N150 (4c) · 16GB RAM · 477GB SSD · QuickSync (/dev/dri/renderD128) |
| OS | Ubuntu 26.04 LTS · headless · TZ America/Winnipeg · passwordless sudo (justin) |
| 8TB drive | Seagate exFAT "BlackBackup" · /mnt/8tb by UUID 00DA-9156 · never format |
| 8TB layout | Media 674G (Movies 107G + TV 568G) · Backups · Home · Justin · Orielle · home-assistant-backups |
| Zigbee radio | Nabu Casa ZBT-2 → mapped into HA as /dev/zigbee |
| Device(s) | HA integration | Effort |
|---|---|---|
| Google Home Mini ×3 | Google Cast | Connected |
| Wemo smart plug | Wemo | Connected |
| TP-Link Kasa ×6 (KP400 + 5× KS225) | TP-Link Smart Home (local) | 1-click, no account — do first |
| ecobee thermostat ×2 | ecobee | Cloud auth |
| Nest Cam | Google Nest | OAuth + $5 Google fee |
| Tuya · Samsung fridge · Alarm.com/Qolsys · SkyBell · MyQ | respective | Cloud (MyQ/SkyBell poor — skip) |
| Zigbee devices (bulbs/sensors/plugs) | ZHA | Physical pairing per device |
.memory/ are kept identical on Mac, VPS and the box by Syncthing; continuity across sessions comes from .memory/ + /start-session / /end-session, not a live process.
(2) Shared live session — Claude runs in the tmux brain session; attach from any device to pick up the same live context. The Mac can sleep; the brain stays on the box.
| Component | Detail |
|---|---|
| Runtime | Node 24 (system) · claude 2.x global · tmux brain session (linger on = survives logout) |
| Attach | ssh minipc → brain → claude |
| MCP servers | n8n-mcp (HTTP) · ghl-mcp · figma · canva · (chrome-devtools omitted — no Chrome) |
| Secrets | .env mirrored from Mac (600). Hardening TODO: 1Password service-account token for dynamic pulls (op installed) |
| Billing | Interactive = subscription. Unattended/cron = API key (not subscription) |
| Future | When Mac mini M5 arrives, brain role migrates there; box reverts to HA + media + voice |
| # | Action | Where |
|---|---|---|
| 1 | Log Claude in on the box | ssh minipc → brain → claude → /login |
| 2 | Connect smart-home devices (TP-Link Kasa first) | HA UI → Settings → Devices & Services |
| 3 | Jellyfin first-run (admin + add Movies/TV libraries) | http://100.72.42.97:8096 |
| 4 | Pair Zigbee devices | HA → ZHA → Add device (physical pairing) |
| 5 | Tailscale: approve exit node + disable key expiry | login.tailscale.com/admin/machines |
| 6 | optional gws auth login (Google CLI) · 1P service-account token (secret hardening) | on the box |