Farm โ€” Brownsville 93-acre property infrastructure and automation

The Farm is on its own network (192.168.0.x), connected back to home (192.168.8.x) via NetBird mesh. Farm Proxmox (fpve) is a NetBird peer and acts as the subnet router for 192.168.0.0/24.

Network

Router/Switch: TP-Link Omada ER8411 (router) + Omada Controller at 192.168.0.2. ISP: Starlink in Bypass Mode; native IPv6 delegated via DHCPv6-PD (/56) to Omada.

Device IP URL Notes
Omada Gateway 192.168.0.1 โ€” Router (unchangeable)
Omada Controller 192.168.0.2 omada.edmd.me Site: “Bee Different”
Farm Pi-hole (CT102) 192.168.0.5 pihole-farm.edmd.me LAN + NetBird DNS
Farm Docker-Host (CT100) 192.168.0.6 fportainer.edmd.me Portainer, Uptime-Kuma, Gotify, TeamSpeak, Matrix
Tempest Weather 192.168.0.8 โ€” WeatherFlow Tempest
Home Assistant 192.168.0.10 ha.edmd.me Smart home automation
Farm Caddy (CT103) 192.168.0.54 โ€” Reverse proxy for *.edmd.me
Farm Proxmox (fpve) 192.168.0.191 fpve.edmd.me Hypervisor; NetBird peer

All of these have DHCP reservations in Omada (Settings โ†’ Wired Networks โ†’ LAN โ†’ Address Reservation).

TeamSpeak Voice (Push-to-Talk)

Self-hosted voice / push-to-talk server for farm crews โ€” a walkie-talkie replacement for people working around the property. Installed 2026-06-17 on the Farm Docker-Host (CT100). Farm-only by design โ€” not exposed to the internet or the Granville home network.

Item Value
Connect to phone.edmd.me (or 192.168.0.6) โ€” default port 9987, leave password blank
Apps Official TeamSpeak 3 on iOS + Android (free); desktop at teamspeak.com/downloads
First-time admin Enter the ServerAdmin privilege key once to claim admin (stored in ~/Sync/ED/Files/SECRETS.md)
Capacity Free license โ€” up to 32 users
Container teamspeak ยท compose at /opt/teamspeak/ (sqlite, restart: unless-stopped, Watchtower disabled)
Ports 9987/udp (voice), 10011/tcp (ServerQuery), 30033/tcp (file transfer)
DNS phone.edmd.me โ†’ 192.168.0.6 via farm Pi-hole host-record (/etc/dnsmasq.d/03-local-records.conf). Farm LAN is IPv4-only, so the name resolves to the local server.
Monitor Uptime Kuma “Farm - TeamSpeak” (TCP probe 192.168.0.6:10011)

Full connection walkthrough: ~/Sync/ED/TeamSpeak โ€” Farm Voice Setup.md.

If a phone can’t connect, confirm it’s on the farm WiFi (not a guest/separate VLAN from 192.168.0.x).

Matrix (Synapse) โ€” Chat & Calls

Self-hosted Matrix homeserver โ€” your own private chat/files/voice/video hub (Slack/WhatsApp-style). Installed 2026-06-17 on the Farm Docker-Host (CT100), fronted by the farm Caddy at matrix.edmd.me. Internal-only (farm LAN + NetBird).

Item Value
Homeserver matrix.edmd.me (enter this in the app)
Apps Element X โ€” iOS / Android (current app, required for calls); Element/Element X desktop & web also work
Your account @delgross:matrix.edmd.me (admin; password in ~/Sync/ED/Files/SECRETS.md)
Signing in Element X defaults to matrix.org โ€” change the account provider to matrix.edmd.me (or type the full ID @delgross:matrix.edmd.me to auto-discover). Must be on farm WiFi or have NetBird connected (server is private, not public). Reachability test: open https://matrix.edmd.me/.well-known/matrix/client in a browser (JSON = reachable).
Sign-up No self-service sign-up by design โ€” enable_registration is off, so Element shows no “Create account”. Accounts are admin-created. (Options if wanted: token-gated sign-up, or fully open โ€” neither enabled.)
Add a user Run on farm CT100 (192.168.0.6, where matrix-synapse runs): ssh root@fpve โ†’ pct exec 100 -- bash โ†’ docker compose -f /opt/matrix/docker-compose.yml exec synapse register_new_matrix_user -c /data/homeserver.yaml -u NAME -p PASS http://localhost:8008 (add -a for admin). Or via farm Portainer โ†’ matrix-synapse โ†’ Console โ†’ register_new_matrix_user -c /data/homeserver.yaml -u NAME -p PASS http://localhost:8008. Does not run from the Mac/home LAN directly.
Stack matrix-synapse + matrix-postgres, compose /opt/matrix/ (Watchtower off)
Proxy / TLS farm Caddy (CT103) matrix.edmd.me โ†’ 192.168.0.6:8008, *.edmd.me wildcard cert
DNS matrix.edmd.me โ†’ 192.168.0.54 (farm + home Pi-hole)
Calls backend Element Call (MatrixRTC): self-hosted LiveKit SFU + lk-jwt-service at /opt/matrixrtc/, fronted at matrixrtc.edmd.me (/livekit/sfu + /livekit/jwt). Synapse .well-known advertises it via org.matrix.msc4143.rtc_foci.
Monitors Uptime Kuma: “Farm - Matrix (Synapse)” (:8008/health), “Farm - LiveKit (Element Call)” (:7880), “Farm - Matrix RTC JWT” (:8071/healthz)

โœ… Voice & video calls are enabled via Element Call โ€” use Element X on iOS/Android. No separate coturn/TURN server is needed: LiveKit’s SFU handles media relay (LiveKit’s own TURN disabled). Media ports UDP 50100-50200 + TCP 7881 on 192.168.0.6, reachable on the farm LAN and over NetBird.

Full guide: ~/Sync/ED/Matrix โ€” Farm Chat Setup.md.

Farm Proxmox (fpve)

Host: 192.168.0.191 (also reachable via NetBird mesh as fpve.netbird.cloud / 100.123.49.175).

LXCs:

VMID Name IP Services
100 docker-host 192.168.0.6 Portainer, Uptime-Kuma, Gotify, TeamSpeak, Matrix
102 pihole 192.168.0.5 Pi-hole DNS
103 caddy 192.168.0.54 Caddy reverse proxy (*.edmd.me)

SSH: ssh root@192.168.0.191 (on LAN) or ssh root@100.123.49.175 (via NetBird).

NetBird Mesh

Replaced Pangolin on April 19, 2026. Current peers (8 total): hpve, fpve, vps, studio, macbook, iphone, ipad, roon (CT105). See Remote Access for the full peer table with NetBird IPs.

Subnet routes (NetBird dashboard โ†’ Networks):

  • 192.168.0.0/24 โ†’ via fpve (farm LAN)
  • 192.168.8.0/24 โ†’ via hpve (home LAN)

Distribution group: BeeDifferent (contains all peers allowed cross-site access).

Check fpve status:

ssh root@192.168.0.191 "netbird status"

Restart if needed:

ssh root@192.168.0.191 "systemctl restart netbird"
Docker Services (CT 100 โ€” 192.168.0.6)
Service Port URL
Portainer 9443 https://192.168.0.6:9443 โ€” fportainer.edmd.me
Uptime Kuma 3001 http://192.168.0.6:3001 โ€” fkuma.edmd.me
Gotify 8070 http://192.168.0.6:8070 โ€” fgotify.edmd.me
Home Assistant

HA is the automation hub for the Farm โ€” smart plugs, sensors, the Tempest weather station, Zigbee/Z-Wave devices, and Reolink cameras.

Local URL http://192.168.0.10:8123
Pretty URL ha.edmd.me
mDNS homeassistant.local:8123

Zigbee/Z-Wave coordinators (SLZB over Ethernet):

Device Role Notes
SLZB-MRW10U (house) Zigbee + Z-Wave Multiradio; Z-Wave firmware is prototype/non-certified
SLZB-06P7 (outbuilding) Zigbee TCP :6638
SLZB-06P7-2 (outbuilding) Zigbee TCP :6638
Sunkown1 (sic) Zigbee TCP :6638
IPv6

IPv6 is fully enabled end-to-end at the farm.

  • Starlink delegates a /56 to Omada (currently 2605:59ca:2b5f:d300::/56)
  • Omada LAN advertises SLAAC+RDNSS for 2605:59ca:2b5f:d300::/64 on vmbr0-equivalent
  • fpve picks up a global v6 address via RA

โš ๏ธ Proxmox sysctls are NOT persistent across reboots. After any fpve reboot, manually run:

sysctl -w net.ipv6.conf.vmbr0.accept_ra=2
sysctl -w net.ipv6.conf.vmbr0.autoconf=1
sysctl -w net.ipv6.conf.vmbr0.accept_ra_defrtr=1
sysctl -w net.ipv6.conf.vmbr0.accept_ra_pinfo=1

Or add to /etc/sysctl.d/99-ipv6.conf to make persistent.

Property Notes
Size 93 acres
Location Brownsville, Ohio โ€” Licking County, Zone 6b
Coordinates 39.947ยฐN 82.256ยฐW (ZIP 43721)
Primary goal Pollinator paradise โ€” ecological, agricultural, and conservation development
Beekeeping Active hives on property
Weather station Tempest (at 192.168.0.8) + Davis Vantage Pro 2 (“Orchard Weather”)

Infrastructure projects: solar-powered PoE for remote sensors, Meshtastic nodes for off-grid communication coverage across the property.