# T00-DRIP Network Configuration

## Architecture

```
                    INTERNET (T-Mobile 5G)
                         │
                    ┌────┴────────────────────┐
                    │  GL-X3000 Spitz AX       │
                    │  • 5G/4G cellular uplink  │
                    │  • WiFi 6 AP (2 SSIDs)   │
                    │  • OpenWrt                │
                    │  • WAN: cellular          │
                    │  • LAN: 2.5G → G11 NIC1  │
                    └────┬────────────────────┘
                         │ Ethernet (2.5G)
                         │
                    ┌────┴────────────────────┐
                    │  GMKtec G11 (Fedora)     │
                    │  NIC1 (WAN): from Spitz  │
                    │  NIC2 (LAN): to switch   │
                    │                          │
                    │  ┌─────────────────┐     │
                    │  │ VyOS VM          │     │
                    │  │ • NAT/Firewall   │     │
                    │  │ • DHCP server    │     │
                    │  │ • WireGuard      │     │
                    │  │ • VLAN routing   │     │
                    │  │ • QoS/traffic    │     │
                    │  └─────────────────┘     │
                    │                          │
                    │  Podman Containers:       │
                    │  • Frigate (NVR)          │
                    │  • Home Assistant         │
                    │  • nginx (captive portal) │
                    └────┬────────────────────┘
                         │ Ethernet (2.5G) - NIC2
                         │
                    ┌────┴────────────────────┐
                    │  TP-Link TL-SG208PE      │
                    │  8-port PoE (65W)        │
                    │                          │
                    │  Port 1: Uplink (G11)    │
                    │  Port 2: Camera 1 (PoE)  │
                    │  Port 3: Camera 2 (PoE)  │
                    │  Port 4: Camera 3 (PoE)  │
                    │  Port 5-8: spare         │
                    └──────────────────────────┘
```

## IP Addressing (per trailer)

| Subnet | Purpose | DHCP Range |
|--------|---------|------------|
| 10.T.0.0/24 | Management/Infrastructure | .1-.10 static |
| 10.T.10.0/24 | VLAN 10 — Security (cameras, lock, NVR) | .100-.150 |
| 10.T.20.0/24 | VLAN 20 — Operations (POS, staff devices) | .100-.150 |
| 10.T.30.0/24 | VLAN 30 — Guest WiFi (isolated, internet only) | .100-.200 |

Where T = trailer number (0 for T00-DRIP, 1 for T01-ROAST, etc.)

## Static IPs

| Device | IP | VLAN | MAC |
|--------|-----|------|-----|
| G11 (gateway) | 10.0.0.1 | Mgmt | — |
| GL-X3000 (WAN gateway) | DHCP from carrier | — | — |
| Camera 1 (interior) | 10.0.10.1 | 10 | TBD |
| Camera 2 (exterior) | 10.0.10.2 | 10 | TBD |
| Camera 3 (drive-through) | 10.0.10.3 | 10 | TBD |
| ULTRALOQ (lock) | 10.0.10.10 | 10 | TBD |
| Square POS | 10.0.20.100 | 20 | DHCP |
| Staff devices | 10.0.20.101+ | 20 | DHCP |

## VLANs

| VLAN ID | Name | Purpose | Firewall Rules |
|---------|------|---------|----------------|
| 10 | Security | Cameras, lock, NVR | No internet access. Talk to G11 (NVR) only. |
| 20 | Operations | POS, staff WiFi, management | Internet access. Can reach Home Assistant. |
| 30 | Guest | Customer WiFi (captive portal) | Internet only. Isolated from all other VLANs. Rate-limited. |

## WiFi SSIDs (GL-X3000)

| SSID | VLAN | Security | Purpose |
|------|------|----------|---------|
| `DailyPour-Staff` | 20 | WPA3-Personal | POS, staff devices, management |
| `The Daily Pour` | 30 | Open (captive portal) | Customer WiFi — branded splash page → internet |

## WireGuard Tunnel

| Setting | Value |
|---------|-------|
| Server | Home (ws, 100.96.11.9 via NetBird) or cloud endpoint |
| Client | VyOS on G11 |
| Tunnel IP | 10.200.T.1/32 (per trailer) |
| Keepalive | 25s |
| Purpose | Remote management, NVR remote view, fleet config push |

## Firewall Rules (VyOS)

```
# WAN → LAN: deny all (default)
# LAN → WAN: allow (NAT masquerade)
# VLAN 10 (Security) → WAN: DENY (cameras never reach internet)
# VLAN 10 → G11 (NVR): ALLOW (cameras stream to local Frigate)
# VLAN 20 (Ops) → WAN: ALLOW
# VLAN 20 → VLAN 10: DENY (POS can't see cameras)
# VLAN 30 (Guest) → WAN: ALLOW (rate limited 5Mbps)
# VLAN 30 → VLAN 10: DENY
# VLAN 30 → VLAN 20: DENY
# WireGuard → ALL: ALLOW (remote management)
```

## Services on G11 (Fedora Workstation + Podman)

G11 runs **Fedora Workstation** (GNOME desktop) — provides GUI for video calls
and dashboard display. Server workloads run in VyOS VM + Podman containers.
Managed remotely via **Cockpit** (web UI).

| Container/VM | Image | Port | Purpose |
|-----------|-------|------|---------|
| vyos (VM) | VyOS qcow2 | — | Router/firewall/WireGuard/DHCP/VLAN/QoS |
| frigate | ghcr.io/blakeblackshear/frigate | 5000, 8554 | NVR — records cameras, AI detection |
| homeassistant | ghcr.io/home-assistant/home-assistant | 8123 | Lock control, automations, dashboard |
| nginx-portal | nginx:alpine | 80 | Captive portal splash page |

**Desktop apps (browser):**
- Jitsi Meet (video calls — `meet.jit.si/dailypour-drip`)
- Dashboard view (Frigate live feeds, HA status, sales)
- Cockpit (`localhost:9090`) for local management

## Automation (Home Assistant)

| Automation | Trigger | Action |
|------------|---------|--------|
| Auto-lock | 2:30 PM (closing) | Lock ULTRALOQ |
| Auto-unlock | 4:45 AM (pre-open) | Unlock ULTRALOQ |
| Motion alert | Frigate detects person after hours | Push notification to Sam |
| Power alert | UPS switches to battery | Push notification to Sam |

## Fleet Scaling

Each trailer is a clone of this config with:
- Trailer number (T) incremented in all IPs
- Unique WireGuard keys
- Same VyOS config template (Ansible playbook)
- Same Podman containers (compose file)
- Same GL-X3000 OpenWrt config (backup/restore)

Deploy a new trailer's network: flash configs → plug in → WireGuard auto-connects → fleet dashboard sees it.

## Video Conferencing (Jitsi)

| Setting | Value |
|---------|-------|
| Platform | Jitsi Meet (meet.jit.si — public, free) |
| Room naming | `dailypour-T00` (per trailer) |
| Hardware | G11 (Fedora WS) + 27" monitor + USB webcam |
| Use cases | Management check-ins, inter-trailer comms, staff meetings |
| Future | Self-host at `video.snsnetlabs.com` when 5+ trailers |

No accounts needed. Staff opens browser → `meet.jit.si/dailypour-drip` → instant video call.

## Files in this directory

```
T-00/network/
├── README.md              (this file)
├── vyos/
│   └── config.boot        (VyOS configuration — TODO)
├── openwrt/
│   └── backup.tar.gz      (GL-X3000 config backup — TODO)
├── ansible/
│   └── deploy-trailer.yml (fleet deployment playbook — TODO)
└── captive-portal/
    └── index.html          (branded splash page — TODO)
```
