287 lines
11 KiB
Markdown
287 lines
11 KiB
Markdown
---
|
|
created: 2026-07-30
|
|
modified: 2026-08-02
|
|
type: note
|
|
tags:
|
|
- network
|
|
- dev-ops
|
|
aliases: []
|
|
---
|
|
|
|
# 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), Ollama `:11434` (qwen2.5-coder:7b) |
|
|
|
|
| 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`):**
|
|
```text
|
|
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 |
|
|
| `11434` | Ollama (qwen2.5-coder:7b) | .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](https://github.com/feschber/lan-mouse/releases/tag/v0.10.0)) |
|
|
| **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 |
|