Bei linuxserver/docker-wireguard automatisch WireGuard-Clients im laufenden Betrieb hinzufügen

Für die Realisierung eines WireGuard-VPN in Sterntopologie nutze ich linuxserver/docker-wireguard. Das Docker Container-Image ist eines von vielen ganz hervorragenden Container-Images von linuxserver.io, welches mit einem gefestigten Featureset und regelmäßigen Updates kommt.

Leider sieht es im Standard nur vor, dass WireGuard-Peers per Umgebungsvariable „PEERS“ mit Komma getrennt eingestellt werden. Peers, die nicht mehr oder noch nicht in der Liste sind, werden auch nicht als solche in der vom Server verwendeten wg01.conf eingetragen und sind damit nicht in der Lage, eine Verbindung aufzubauen. Wie ich das unkompliziert gelöst habe, ohne das Container-Image anzupassen, möchte ich hier zeigen:

Wir binden eine zusätzliche env-Datei ein (peers.env):

services:
  wireguard:
    image: lscr.io/linuxserver/wireguard:arm64v8-latest
    env_file: "peers.env"
[...]

Wir legen eine Datei „peers.env“ im jeweiligen Arbeitsverzeichnis an:

PEERS="
standard01,
standard02,
extra01,
"

Wir wollen nun einen neuen Peer hinzufügen, aber nur, wenn der noch nicht in der Liste steht:

grep -q 'extra02,' peers.env || sed -i '$s/"$/extra02,\n"/' peers.env

Sollte der Peer „extra02“ noch nicht existieren, wird er nun vor dem Anführungszeichen eingetragen. Anschließend laden wir den Container neu:

docker compose up -d

Die bestehenden WireGuard-Verbindungen brechen hier kurz ab und verbinden sich dann wieder.

Die beiden letzteren Kommandos lassen sich einfach von automatischen Systemen ausführen. Ganz schön finde ich die Lösung nicht, aber eine vorhergehende Anfrage im linuxserver.io-Discord ergab, dass es derzeit keine standardisierte Lösung zum hinzufügen von WireGuard-Peers im Image gibt. Verwiesen wurde auf mögliche Alternativen.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert