Nestwatch

Je eigen relay draaien

De relayserver is één programma zonder database. Heb je een kleine Linux-server met een domeinnaam, dan kun je je eigen relay draaien en je toestellen ernaar laten wijzen.

Stand van zaken

In ontwikkeling

De relayserver (nestwatch-server) en de relay-ondersteuning in de apps worden afgewerkt. Deze pagina beschrijft de geplande installatie zodat je je kunt voorbereiden; details zoals namen van opties kunnen nog veranderen. De volledige, actuele handleiding is docs/self-hosting.md (Engels).

Wat hij doet

De server helpt een luisteraar een zender te bereiken zonder zijn adres te kennen, helpt beide een rechtstreekse verbinding door hun routers te openen, en geeft de versleutelde stroom door wanneer geen rechtstreekse weg werkt. Hij ziet alleen versleutelde gegevens: de handshake tussen de toestellen loopt er end-to-end doorheen. Hetzelfde HTTPS-adres kan ook deze website en de browserluisteraar aanbieden.

Wat je nodig hebt

  • Een Linux-server die bereikbaar is vanaf het internet, met een domeinnaam
  • Een reverse proxy voor HTTPS (nginx of Caddy) die WebSocket-upgrades op /nwr/1 doorgeeft
  • Open poorten in de firewall: TCP 443 (HTTPS) en UDP 3478 (adresdetectie voor rechtstreekse verbindingen)
  • Eén map voor de toestand (de server bewaart er gehashte mailboxgeheimen en verkeerstellers); geen database

Installatie in het kort

  • Download nestwatch-server-linux-x86_64 bij de nieuwste release (zodra beschikbaar) en installeer het als /usr/local/bin/nestwatch-server.
  • Maak een systeemgebruiker en een map voor de toestand aan, bijvoorbeeld /var/lib/nestwatch-server.
  • Start hem met systemd: hij luistert op een lokale HTTP-poort voor de reverse proxy en rechtstreeks op UDP 3478.
  • Stel nginx of Caddy in voor je domein: stuur /nwr/1 met WebSocket-upgrade door naar die lokale poort, en bied voor de rest de statische website en browserluisteraar aan (nestwatch-site.tar.gz, nestwatch-web.tar.gz).
  • Zet op elke zender Reachable through a relay server aan en vul het adres van je server in, bijvoorbeeld https://relay.example.org.
# Caddyfile: HTTPS-certificaten en WebSocket-upgrades gaan automatisch
relay.example.org {
	handle /nwr/1 {
		reverse_proxy 127.0.0.1:8480
	}
	handle {
		# statische bestanden: deze website, browserluisteraar in /app/
		root * /var/www/nestwatch
		file_server
	}
}

De configuratie voor nginx, de systemd-unit en de firewallregels staan in docs/self-hosting.md.

Limieten en logs

De server beperkt hoeveel één zender en één IP-adres kunnen gebruiken (gelijktijdige verbindingen, een snelheid per verbinding en een maandelijks verkeersbudget), zodat één gezin hem niet kan uitputten. Hij logt alleen totalen, nooit inhoud, en bewaart IP-adressen alleen zo lang als misbruikbescherming nodig heeft, hooguit 24 uur.