Files
obsidian-vault/300 areas/360 Dev-Ops Network Computers/Home Network Map Overview.md

11 KiB

created, modified, type, tags, aliases
created modified type tags aliases
2026-07-30 2026-08-02 note
network
dev-ops

Home Network Map

Overview

Network Router/Gateway
Subnet 192.168.20.0/24
Gateway 192.168.20.1
DNS Pi-hole on .13 (primary) + .35 (secondary)

Machines

.27 — sam-4screen-desktop (Main Desktop)

Property Value
IP 192.168.20.27
Hostname sam-4screen-desktop
OS NixOS
SSH sam@192.168.20.27
Tailscale 100.65.228.31 (sam-4screen-desktop-1)
Role Daily driver. 4 monitors, 62GB RAM, Nvidia GPU. Zellij, Neovim, pi coding agent.
Key services pi, pi-dashboard, Neovim, Zellij (with falcode + attention plugins), Home Manager managed
MCP tools codebase-memory-mcp v0.9.0, code-review-graph v2.3.7 (per-project, installed via uv tool install)
Tunnels ssh -fNL 7437:127.0.0.1:7437 192.168.20.13 (engram — must re-establish after reboot)
Docker containers
Archon AI project flow coordinator (:3090)
Supabase Local dev auth + database (kong :8001, postgres :5434, studio, meta :8080, rest, auth)
knowledge-service Custom Python API (:8080)
langgraph-service LangGraph agent framework (:8090)
opencode-brain OpenCode AI service (:5000)
airflow Workflow orchestration

.13 — nixos-desktop (Server)

Property Value
IP 192.168.20.13
Hostname nixos-desktop
OS NixOS
SSH sam@192.168.20.13
Tailscale 100.114.62.46 (nixos-desktop)
Role Docker host, OmniRoute LLM proxy, always-on server. 15.5GB RAM.
Key services Open WebUI v0.11.0 :3000 (NixOS native, not Docker)
Docker containers
OmniRoute LLM proxy with combo routing (port 20128/20129). All pi LLM traffic routes through it. Combo default-opencode-go-ds-flash prioritises OpenCode-Go before falling through OpenRouter → DeepSeek direct → Google Gemini. See Pi Agent Extensions & Skills#OmniRoute — LLM Provider Router
Langfuse LLM observability — traces, evals, cost tracking (port :3001, bumped from 3000 by Open WebUI)
worldmonitor Geopolitical news dashboard (port 3002)
mosquitto MQTT broker
pihole DNS ad-blocking (primary)
nebula-sync Pi-hole Gravity sync
headroom Context compression proxy (port 8787)
engram Journaling service (port 7437)
n8n Workflow automation
voice_bridge + voice_whisper MQTT audio bridge
piper_tts Text-to-speech
Plus: pocketbase, doorbell_media, litellm, langfuse, airflow, trigger_dev, garage, t3_stack_react, sams-home-network

See Docker Containers for full container list.

.51 — sam-thinkpad (Laptop)

Property Value
IP 192.168.20.51
Hostname sam-thinkpad
OS NixOS
SSH sam@192.168.20.51
Tailscale 100.88.161.102 (sam-thinkpad)
Role Portable laptop. Used on-the-go and at home. pi, Neovim, Home Manager managed.
MCP tools codebase-memory-mcp v0.9.0, code-review-graph v2.3.7 (installed via nix-shell -p uv)

Proxmox — Hypervisor

Property Value
URL https://proxmox.home.lab
Role Hypervisor hosting .35 (Caddy/Ubuntu) and Home Assistant as VMs

Home Assistant

Property Value
Role Home automation VM on Proxmox. Smart home control, automations, dashboards.

Routers

.35 — caddy-server (Reverse Proxy)

Property Value
IP 192.168.20.35
Hostname caddy-server
OS Ubuntu Server
SSH sam@192.168.20.35
Tailscale Not installed
Role Caddy reverse proxy. Runs ~50 Docker containers (apps, dashboards, media, monitoring).

Proxied domains:

Domain Proxied to
omniroute.lab.audasmedia.com.au .13:20129
omniroute.home.lab .13:20129
worldmonitor.lab.audasmedia.com.au .13:3002
worldmonitor.home.lab .13:3002

See Docker Containers for full container list on .35.

.150 — Phone (Android)

Property Value
IP 192.168.20.150 (static)
Device Android phone
SSH Termux → ssh from/to other machines (port 8022, user: uO_a499)
Tailscale 100.101.49.17 (google-pixel-8a)
Role Mobile access. Termux for SSH, Tailscale for remote, NTFY for notifications.

SSH Access Matrix

From ↓ / To → .27 desktop .13 server .51 laptop .35 caddy .150 phone
.27 desktop sam@192.168.20.13 sam@192.168.20.51 sam@192.168.20.35 uO_a499@192.168.20.150:8022
.13 server sam@192.168.20.27 sam@192.168.20.51 sam@192.168.20.35 uO_a499@192.168.20.150:8022
.51 laptop sam@192.168.20.27 sam@192.168.20.13 sam@192.168.20.35 uO_a499@192.168.20.150:8022
.150 phone sam@192.168.20.27 sam@192.168.20.13 sam@192.168.20.51 sam@192.168.20.35 — (Termux local)

SSH config shortcut (~/.ssh/config):

Host phone
    HostName 192.168.20.150
    Port 8022
    User uO_a499

(Added to .27 and .51. .13 needs home.nix update — ~/.ssh/config is a Nix store symlink.)


Key Apps & Ports

Port Service Machine
22 SSH All
53 DNS (Pi-hole) .13, .35
80/443 Caddy reverse proxy .35
1883 MQTT (Mosquitto) .13
3002 worldmonitor .13
8022 SSH (Termux) .150 phone
20129 OmniRoute API .13
20128 OmniRoute dashboard .13
7437 engram .13
8787 Headroom proxy .13
8079 Netcom Router admin Router (192.168.20.1)
254 Secondary Router admin Router (192.168.20.1)
3000 Open WebUI .13
3001 Langfuse .13
3090 Archon .27
8001 Supabase Kong .27
8001 ai-resume-backend .13
8080 knowledge-service .27
8090 langgraph-service .27
5000 opencode-brain .27
1780 Snapcast (audio control) .13
8765 python3 (unidentified) .27

Web Apps by Machine

.27 — sam-4screen-desktop (Docker host)

App URL Notes
Archon http://192.168.20.27:3090/chat AI project flow coordinator
Supabase Studio http://192.168.20.27:8001/project/default Local dev auth + database GUI
knowledge-service http://192.168.20.27:8080 Custom Python API
langgraph-service http://192.168.20.27:8090 LangGraph agent framework
opencode-brain http://192.168.20.27:5000 OpenCode AI endpoint
knowledge-service http://192.168.20.27:8080 Custom Python API
langgraph-service http://192.168.20.27:8090 LangGraph agent framework
opencode-brain http://192.168.20.27:5000 OpenCode AI endpoint

.13 — nixos-desktop (Docker host)

App URL Notes
Open WebUI http://192.168.20.13:3000 Chat UI for LLMs — connect to OmniRoute at http://192.168.20.13:20129/v1
Snapcast http://192.168.20.13:1780/ Multi-room audio control — needs Caddy DNS
Langfuse http://192.168.20.13:3001/auth/sign-in LLM observability (traces, evals, cost)
ai-resume-backend http://192.168.20.13:8001 Resume AI backend (Docker)

.35 — caddy-server (Reverse Proxy)

App URL Notes
OmniRoute dashboard http://omniroute.home.lab LLM routing proxy GUI
OmniRoute API http://omniroute.lab.audasmedia.com.au Public LLM API endpoint

Proxmox

App URL Notes
Proxmox VE https://proxmox.home.lab Hypervisor — hosts .35 VM and Home Assistant VM
Home Assistant (VM on Proxmox) Home automation

lan-mouse — Cross-Machine Mouse/Keyboard Sharing

Detail Value
Version v0.10.0 (pre-encryption, from GitHub releases)
Binary ~/.local/bin/lan-mouse (same binary on all three)
Service ~/.config/systemd/user/lan-mouse.service (enabled, auto-starts)
Config ~/.config/lan-mouse/config.toml
Port UDP 4242
Encryption None. v0.11.0 DTLS is broken — Alert is Fatal or Close Notify even on identical binaries.

Layout: .13 ← .27 → .51

  • .27: [left] ips = ["192.168.20.13", "192.168.20.46"] .46 is .13's Wi-Fi — required.
  • .27: [right] ips = ["192.168.20.51"]
  • .13: [right] ips = ["192.168.20.27"]
  • .51: [left] ips = ["192.168.20.27"]

Startup flags:

  • .27/.51: --daemon --capture-backend layer-shell
  • .13: --daemon --emulation-backend libei (KDE), uses wrapper script for NixOS libs

Release key: Press ASDF together to free trapped mouse back to .27.

⚠️ Gotchas:

  • Never use hostnames — Tailscale resolves to virtual IPs. Raw IPs only.
  • v0.11.0 does NOT work — DTLS broken everywhere.
  • .13 needs both IPs (wired .13 + Wi-Fi .46) in other machines' client list.
  • v0.10.0 limitation: Modifier keys (Super/Alt/Ctrl) not forwarded on wlroots. Basic typing/mouse works.
  • KDE (.13): Accept input emulation permission dialog on first run.

Tailscale (Tailnet)

Machine Tailscale Name Tailscale IP Status
.27 desktop sam-4screen-desktop-1 100.65.228.31 Active
.13 server nixos-desktop 100.114.62.46 Active
.51 laptop sam-thinkpad 100.88.161.102 Active
.150 phone google-pixel-8a 100.101.49.17 ⚠️ Offline (last seen 1d ago)
.35 caddy Not installed

Account: samuelrolfe@gmail.com


DNS

Server IP Role
Pi-hole (primary) 192.168.20.13 DNS ad-blocking, local DNS for .home.lab domains
Pi-hole (secondary) 192.168.20.35 DNS ad-blocking, failover

Local domains needing DNS records

Domain Target Status
omniroute.home.lab .13:20128 Created
omniroute.lab.audasmedia.com.au .35.13:20129 Caddy proxied
worldmonitor.home.lab .13:3002 Needs Pi-hole record
worldmonitor.lab.audasmedia.com.au .35.13:3002 Needs DNS + Caddy done