Mini PC Home Server — System Map

Kamrui E2 · Ubuntu 26.04 · always-on Linux home server & unified Claude brain

Internal reference · reachable at ssh minipc (Tailscale 100.72.42.97) · v1.0 · 2026-06-19

Live / healthy Built, waiting on Justin The box / its services Storage Data flow

Clients — interact from anywhere (over Tailscale)

MacBook Pro

VSCode Remote-SSH · Finder SMB · can sleep

iPhone

Termius SSH → brain · Files app SMB

Telegram

Sushi/Kai bots later phase

▼   Tailscale mesh (tail7ece8b.ts.net) — encrypted, no public ports   ▼

Mini PC — minipc · 100.72.42.97 · Intel N150 · 16GB · Ubuntu 26.04 · Docker

Home Assistant up

Docker · :8123 · ZHA/ZBT-2 Zigbee

Jellyfin up

Docker · :8096 · QuickSync transcode

Claude brain needs login

tmux brain · Node 24 · MCP

Cockpit up

:9090 · system dashboard

Samba up

:445 · shares the 8TB

Syncthing up

workspace + .memory mesh

▲ reads/serves  |  QuickSync /dev/dri  |  SQLite/config on internal SSD ▲

Storage

8TB drive mounted

exFAT · /mnt/8tb by UUID · Media 674G (Movies+TV) · Backups · Justin · Orielle · home-assistant-backups

Internal SSD 477G

OS · Docker · HA config + ZHA keys · workspace + .memory

Smart home → Home Assistant (Zigbee + WiFi/LAN)

Already connected

Google Cast (Home Minis) · Wemo plug

Local, 1-click waiting

TP-Link Kasa ×6 (no account)

Cloud-auth waiting

ecobee ×2 · Nest Cam · Tuya · SmartThings · Alarm.com

Zigbee physical

ZBT-2 coordinator ready · pair per-device

Mesh peers & cloud

VPS (justedo-vps)

n8n · Caddy · Uptime Kuma · Syncthing relay

Google Drive

HA backups offsite (rclone, SA) · nightly

Uptime Kuma

watches the box ping + HA backup heartbeat

Anthropic

Claude brain · subscription (interactive)

Services — itemized

ServiceAccessPurposeStatusLeft to do
Home Assistant:8123 · http://100.72.42.97:8123Smart-home hub · Zigbee via ZBT-2LivePair devices (you, in UI)
Jellyfin:8096 · http://100.72.42.97:8096Media server · QuickSync HW transcode · 674G libraryLiveFirst-run wizard (admin + add library)
Claude brainssh minipcbrainclaudeUnified Claude Code (same workspace + memory everywhere)Needs login/login (your subscription)
Cockpit:9090 · https://100.72.42.97:9090Browser system/Docker managementLiveLog in as justin
Sambasmb://100.72.42.97/8tbFile access to the 8TB from Mac/iPhoneLive
Syncthinglocal :8384Sync workspace + .memory across Mac/VPS/box100% synced
HA backupscron 4am → 8TB + Google DriveTwo-tier, byte-verified, Kuma-watchedLive

How to reach it

FromDo this
Terminal / iPhone (Termius)ssh minipc then brain (attaches the Claude session) — or any admin command
Mac — full Claude UIVSCode 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 dashboardsHA :8123 · Jellyfin :8096 · Cockpit :9090 (all over Tailscale)

Hardware & storage

ItemDetail
BoxKamrui E2 · Intel N150 (4c) · 16GB RAM · 477GB SSD · QuickSync (/dev/dri/renderD128)
OSUbuntu 26.04 LTS · headless · TZ America/Winnipeg · passwordless sudo (justin)
8TB driveSeagate exFAT "BlackBackup" · /mnt/8tb by UUID 00DA-9156 · never format
8TB layoutMedia 674G (Movies 107G + TV 568G) · Backups · Home · Justin · Orielle · home-assistant-backups
Zigbee radioNabu Casa ZBT-2 → mapped into HA as /dev/zigbee

Smart-home devices (from LAN scan)

Device(s)HA integrationEffort
Google Home Mini ×3Google CastConnected
Wemo smart plugWemoConnected
TP-Link Kasa ×6 (KP400 + 5× KS225)TP-Link Smart Home (local)1-click, no account — do first
ecobee thermostat ×2ecobeeCloud auth
Nest CamGoogle NestOAuth + $5 Google fee
Tuya · Samsung fridge · Alarm.com/Qolsys · SkyBell · MyQrespectiveCloud (MyQ/SkyBell poor — skip)
Zigbee devices (bulbs/sensors/plugs)ZHAPhysical pairing per device

Unified Claude brain — how it works

Two layers. (1) Shared knowledge — the workspace + .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.
ComponentDetail
RuntimeNode 24 (system) · claude 2.x global · tmux brain session (linger on = survives logout)
Attachssh minipcbrainclaude
MCP serversn8n-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)
BillingInteractive = subscription. Unattended/cron = API key (not subscription)
FutureWhen Mac mini M5 arrives, brain role migrates there; box reverts to HA + media + voice

What's left (needs you — can't be headless)

#ActionWhere
1Log Claude in on the boxssh minipcbrainclaude/login
2Connect smart-home devices (TP-Link Kasa first)HA UI → Settings → Devices & Services
3Jellyfin first-run (admin + add Movies/TV libraries)http://100.72.42.97:8096
4Pair Zigbee devicesHA → ZHA → Add device (physical pairing)
5Tailscale: approve exit node + disable key expirylogin.tailscale.com/admin/machines
6optional gws auth login (Google CLI) · 1P service-account token (secret hardening)on the box