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

7.5 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)

.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.
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
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)

.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
8022 SSH (Termux) .150 phone
20129 OmniRoute API .13
20128 OmniRoute dashboard .13
7437 engram .13
8787 Headroom proxy .13

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