Das erste Netz

Zwei Geräte, ein Netz, ein paar Minuten. Du legst das Netz auf einem Gerät an, lädst das andere ein, vergleichst vier Wörter und pingst es an.

Worum es geht

Angenommen, du hast zu Hause einen Laptop und ein NAS, beide mit installiertem juist. Der Laptop wird das erste Gerät eines Netzes namens home, danach lädst du das NAS ein.

Ein Netz ist die Gruppe von Geräten, die sich über juist erreichen, und jedes davon ist ein Mitglied. Wer das Netz anlegt, ist sein erster Admin: der Mensch, dessen Schlüssel Änderungen signiert, etwa das Aufnehmen eines Geräts. Siehe So funktioniert juist.

Das Netz anlegen und ein Gerät einladen

1auf laptop, das erste Gerät

Leg das Netz an, als du selbst und ohne sudo: Dein Admin-Schlüssel gehört in deinen eigenen Keystore, das Verzeichnis ~/.config/juist in deinem Home.

$ juist create home
not the operator; run sudo juist set --operator=alice? [Y/n] y
operator alice
created network "home"
  This device   laptop  198.18.36.1  fd84:7a1f:97ee:5630:7c56:12b6:971f:2222
  IPv4 range    198.18.36.0/22
  Quorum        1 of 1 vote
  Admin         alice
  Break-glass   /home/alice/.config/juist/break-glass-home.secrets (keep offline)
  Operator      alice

juist fragt einmal nach sudo, um dich zum Operator des Geräts zu machen: dem lokalen Benutzer, der es von da an ohne sudo verwaltet. Ohne Namen gibt juist create dem Netz zwei zufällige Wörter als Namen.

2auf laptop

Das neue Gerät einladen:

$ juist invite
invite to "home", expires in 1h; on the new device:

  juist join 42-drumbeat-tolerance-glucose  # same LAN

  juist join 'juist:Kx7…@192.168.1.20:41642'

Es gibt einen Code aus, für ein Gerät im selben LAN, und einen Link, für ein Gerät irgendwo sonst. Dann wartet es.

3auf nas, das neue Gerät

Mit dem Code beitreten, oder mit dem Link, wenn das NAS woanders steht:

$ sudo juist join 42-drumbeat-tolerance-glucose
looking for the inviting device on the LAN
connected to 192.168.1.20:41642
tell the inviting admin these words:
  atlas-amulet-banjo-asteroid

Unter sudo wird der Benutzer, der sudo aufgerufen hat, Operator des NAS.

4auf laptop

Auch die Einladung zeigt vier Wörter. Antworte nur dann mit y, wenn sie dieselben sind wie auf dem NAS:

nas wants to join; compare with the words it shows:
  atlas-amulet-banjo-asteroid
same? [y/N] y
admitting nas (nid:fcRW83T_…)
admitted nas at 198.18.36.2
nas joined

Auf dem NAS endet juist join mit den Adressen des Geräts:

nas
joined "home" as nas
  Addresses     198.18.36.2  fd84:7a1f:97ee:21a8:2ab0:e8e:caa0:b306
  Devices       2
  Operator      alice
5auf einem der beiden Geräte

Prüfen, dass sich beide erreichen:

$ juist status
home · connected
  This device   laptop  198.18.36.1  fd84:7a1f:97ee:5630:7c56:12b6:971f:2222
  Devices       1 other, heard from
  Tunnels       1 of 1 live
  Names         home.juist
  Freshness     vouched just now, valid 48h
  Ports         udp/41643
  Updated       just now

NAME                  IPV4         IPV6                                     ROLES    REACHED
laptop (this device)  198.18.36.1  fd84:7a1f:97ee:5630:7c56:12b6:971f:2222  voucher  -
nas                   198.18.36.2  fd84:7a1f:97ee:21a8:2ab0:e8e:caa0:b306   -        direct
$ ping 198.18.36.2

juist devices gibt nur die Liste der Geräte aus. Wo systemd-resolved läuft, geht auch ping nas.home.juist.

Hinter NAT oder mit öffentlicher Adresse

Der Link funktioniert auch, wenn beide Geräte an verschiedenen Orten hinter NAT stehen, etwa der Laptop zu Hause und das NAS bei einem Freund. Sie treffen sich dann über den öffentlichen BitTorrent-DHT, was etwa eine Minute dauert. Das scheitert nur, wenn beide NATs symmetrisch sind. Dann trittst du über einen Internetanschluss bei, der das einladende Gerät erreicht, oder gibst dem Netz vorher ein Relay. Die Einzelheiten stehen unter Geräte einladen.

Hinter NAT musst du in keiner Firewall etwas öffnen. Ein Gerät mit öffentlicher Adresse, etwa ein VPS, braucht 41643/udp offen.

Gut zu wissen

  • juist create home nennt das Netz home; das Gerät heißt wie sein Rechner, außer du gibst --device an.
  • Der IPv4-Bereich ist ein zufälliges /22 in 198.18.0.0/15, etwa 198.18.36.0/22. Mit --ipv4 wählst du einen.
  • Der Code funktioniert nur im selben LAN, und ein falscher Versuch macht ihn ungültig. Der Link funktioniert dann weiter.
  • Eine Einladung nimmt ein Gerät auf und gilt eine Stunde. Für das nächste rufst du juist invite noch einmal auf.
  • Die Break-glass-Datei ist für eine Wiederherstellung gedacht, die es noch nicht gibt. Bewahre sie trotzdem offline auf.
  • Der Laptop ist der erste Voucher des Netzes: ein Gerät, das stündlich bestätigt, dass der Stand des Netzes aktuell ist. Halte einen Voucher online. Siehe Frische.

Wenn etwas nicht klappt

Was du siehstWas zu tun ist
juist: run as alice, without sudo: the admin key belongs in your keystorejuist create ohne sudo aufrufen.
juistd not running in juist statussudo systemctl enable --now juistd
read-only; to manage this device …einmal sudo juist set --operator=$USER
warning: code voided: wrong guess from …Mit dem Link beitreten, der weiter funktioniert. War das nicht dein Gerät, kennt jemand anderes die Einladung.
juist: words not confirmed; nothing signedWaren die Wörter verschieden, ist das fragende Gerät nicht das eingeladene. Starte eine neue Einladung.
no answer from a device in juist statusDas Gerät ist offline, oder sein 41643/udp ist zu.
no tunnel traffic from a device41643/udp auf einem Gerät mit öffentlicher Adresse öffnen, oder einem Gerät relay geben.

Weitere Fälle stehen unter Fehlersuche.