SPN Commutiy nodes sind Server die nicht von Safing sondern von der Community betrieben werden. Das Erstellen eines nodes hilft allen Nutzern, da dies die Diversität des Server Eigentums erhöt und somit für noch mehr Privatsphäre sorgt und die zur Verfügung stehende Netzwerk Größe der SPN erhöt. Diese Server erhöhen auch die Weltweite Abdeckung, da Menschen ihr Land am besten kennen und wissen wo ein Server benötigt wird.
Abgesehen von einem Aspekt werden Community nodes gleich behandelt wie SPN Nodes die von Safing betrieben werden.
Der einzige Unterschied ist, dass unverschlüsselte Netzwerk Verbindungen - wie normales HTTP - niemals das Netzwerk über SPN Community nodes verlassen werden. Stattdessen verlassen solche Verindungen das Netzwerk bei speziellen Servern, die von Safing betrieben werden.
SPN Community nodes sehen daher nie den Inhalt der Verbindungen, da die Verbindungen immer für den Zielserver verschlüsselt werden. Daher können SPN Community nodes Sicher genutzt werden. Sie sind nicht nur sicher, wir empfehlen sie auch, da diese für bessere Privatsphäre sorgen, da sie die Diversität des Server Eigentums erhöhen.
Bevor du dich entscheidest einen Community node zu betreiben, denk kurz über mögliche juristische Folgen nach. Vor Allem wenn dein ISP in einem Five Eyes (FVEY) Land liegt. Um persönliche Haftung zu limitieren, empfehlen wir nicht einen community node von deinem Zuhause aus zu betreiben. Du solltest dir auch über deine ISP Richtlinien im klaren sein und Sonderaussagen über das betreiben von TOR und VPN Servern. Auch wenn diese anders sind als SPN Community nodes, wird sich dein ISP auf diese Regelungen beziehen, wenn dieser das SPN nicht genau versteht. Daher nutze einen ISP welcher klare Richtlinien hat wie er mit Sicherheits Problemen umgeht und du diese Richtlinien auch befolgen kannst. Sei bedacht bei Problemen zur Verfügung zu stehen um Eskalation aus dem Weg zu gehen. SPN Community nodes updaten automatisch und erforden keine Neustarts oder andere Formen von Wartung. Reagiere schnell falls es zu dem seltenen Fall kommt, dass dein ISP deine Aufmerksamkeit benötigt, aber normalerweise ist einen SPN Community node zu betreiben, eine erstellen-und-vergessen Geschichte.
Du kannst einen SPN Community node einfach installieren, mit Hilfe von unserem Installierer, welcher mit Linux Systemen kompatibel ist. Um gute und Problemfreie Leistung und gute Sicherheit zu gewährleisten, empfehlen wir einen speziellen nur für den SPN Community node gewidmeten Server zu nutzen.
Bevor du den SPN Community node installierst solltest du den Server vor unauthorisierten Zutritt schützen. Wenn du neu im Thema Server betreiben bist, mache bitte etwas Reserche vor dem Start. Das absolute Minimum ist die Firewall des Servers zu aktivieren und alle eingehenden Verbindungen außer die unten beschriebenen zu blockieren.
Der SPN Community node wird versuchen sich selbst zu konfigurieren:
Wenn der Server mehrere öffentliche IP Adressen hat musst du diese selbst konfigurieren in dem du die unten gelisteten Einstellungen in Appendix I nutzt.
Du musst außerdem deine Firewall so konfigurieren, dass sie nur Verbindungen von den ports 17 und 80 zulässt.
Pro Tipp:
Der--no-start
Schalter ist bei der Erstinstallation eines neuen nodes sinnvoll, da dir dieser die Möglichkeit gibt dieconfig.json
Datei anzusehen bevor du den node startest. Das Installations Skript wird dich nach einen Metriks Kommentar fragen bevor die Standardconfig.json
Einstellungen angezeigt werden. Trage Information ein die du öffentlich über deinen node teilen willst. Nutze das unten genannte Skript um den SPN node ohne Services zu starten und zu installieren.
sudo sh -c "$(curl -fsSL https://raw.githubusercontent.com/safing/spn/master/tools/install.sh) --no-start"
Nachdem das Installations Skript ausgeführt ist , überprüfe den Inhalt von der config.json
Datei in /opt/safing/spn
bevor du den node zum ersten mal startest. Für eine mindest Konfiguration ist es empfohlen die IPv4 und IPv6 Zeilen (wenn möglich) zu den IP Adressen die du für SPN Datenverkehr benutzen willst hinzuzufügen. Diese Werte können nicht geändert werden sobald dein System vom Netzwerk gesehen wurde, daher versichere dich, dass Die Werte richtig aufgesetzt sind bevor der node zum ersten Mal gestartet wird. Wenn du die config.json
Datei konfiguriert hast kannst du den Service mit systemctl start spn.service
starten.
Bitte beachte, dass der Server bald nach dem Start Benutzer Verkehr abwickeln wird. Das Starten und Stoppen deines Servers wird sich negativ auf das Nutzer Erlebnis auswirken. Sei also bitte sparsam mit dem Neustarten.
Schau Appendix I an, für Details zu der
config.json
Datei.
Wenn du die SPN node Services ohne Konfiguration der config.json
Datei starten willst führe eines der folgenden Skripte aus:
# Run as root
sudo sh -c "$(curl -fsSL https://raw.githubusercontent.com/safing/spn/master/tools/install.sh)"
# Als eine Alternative kannst du zuerst das Installations Skript runterladen und es danach ausführen:
wget https://raw.githubusercontent.com/safing/spn/master/tools/install.sh
sudo sh ./install.sh
Bitte beachte, dass der Server bald nach dem Start Benutzer Verkehr abwickeln wird. Das Starten und Stoppen deines Servers wird sich negativ auf das Nutzer Erlebnis auswirken. Sei also bitte sparsam mit dem Neustarten.
Nachdem dein Server dem SPN Netzwerk beigetreten ist, könnte es etwas dauern bis er auf der node Karte in Portmaster erscheint. Dieser vermehrungs Prozess beinhaltet das Verteilen der Information deines Servers über das ganze Netzwerk. Allerdings solltest du aktive Verbindungen zu deinem SPN Community node bald nach der ersten Verbindung zum SPN Netzwerk sehen.
Das Installierungs Skript aktzeptiert die folgenden optionalen Schalter (Füge diese zwischen den schließenden Klammern und den Anführungszeichen ein, wenn du das Skript fern-ausführen willst):
-y, --unattended Frage nicht nach Bestätigung.
-n, --no-start Starte das SPN hub nicht direkt.
-t, --target PATH Konfiguriere das Installations Verzeichnis.
-h, --help Zeige diesen Hilf Text an
-a, --arch Konfiguriere die Binärdatei Architektur.
-u, --url URL Setze eine Herunterladungs URL für den Start von Portmaster.
-S, --no-systemd Installiere die systemd service Einheit nicht.
-s, --service-path PATH Standort für die systemd Einheit Datei.
Die minimalste config.json Datei um deinen Server ins Netz zu bringen sieht so aus:
{
"core": {
"metrics": {
"instance": "my-node-name",
"comment": "my-node-description",
"push": ""
}
},
"spn": {
"publicHub": {
"name": "my-node-name",
"ip4": "public-ipv4",
}
}
}
Sobald du mit einer minimalen Konfiguration zufrieden bist, kannst du den node manuell starten (wenn du den --no-start im Installierer benutzt hast) indem du den systemctl start spn.service
Befehl ausführst. Nachdem du bestätigt hast das SPN funktioniert, kannst du zusätzliche Änderungen an der config.json Datei durchführen und den SPN Service Neustarten um die neuen Elemente zu laden.
Um den Community node Betrieb zu verifizieren schau in dein System syslog oder benutze den journalctl -u spn.service
Befehl. Um eine erfolgreiche Erstinstallation zu bestätigen solltest du eine [pmstart]
Nachricht ohne Fehlermeldungen sehen. Warnungen sind okay, da der SPN Community node mit einem aktivierten Warnungsprotokoll startet. Sobald das SPN läuft kannst du die Verbindung bestätigen indem du den ss | grep qotd
ausführst. Der dir alle aktiven SPN Verbindungen zeigt. Wenn du aktive Verbindungen siehst kannst du dir sicher sein, dass dein node sichtbar und verfügbar ist, auch wenn er noch nicht auf der Portmaster SPN Karte aufscheint.
Das häufigste Problem beim starten eines SPN Community node ist das Ändern der IP. Wenn sich die IP ändert wird sich der Server aus dem Netzwerk werfen. Wenn du die SPN Community node IP Adresse änderst, wirst du auch den Namen ändern müssen. Um zu bestätigen das dies das Problem ist, suche in deinem syslog nach “address changed” und “aborting, shutting down” Nachrichten.
Wir sind sehr dankbar für jeden der etwas zu unserem Netzwerk beiträgt und wir planen Community node Betreiber zu Belohnen. Schreib uns bitte eine mail oder tritt dem Discord bei.
Schlüssel stellen den json Pfad in der config Datei dar. Schau dir das Beispiel an.
Schlüssel: spn/publicHub/name
Menschlich lesbarer Name von dem Hub, welcher öffentlich geteilt und für UI Nutzer sichtbar ist.
Schlüssel: spn/publicHub/group
Name der Hub Gruppe zu der dieses Hub gehört. Das wird in der Zukunft genutzt um Privatsphäre durch Routen durch das Netzwerk zu optimieren. Sollte der gleiche sein für alle nodes die von einer Person kontrolliert werden.
Schlüssel: spn/publicHub/contactAddress
Kontakt Adresse wo der Hub Betreiber erreicht werden kann.
Schlüssel: spn/publicHub/contactService
Name der Services die der Kontakt Adresse ensprechen, wenn nicht schreib eine e-mail. Du könntest zum Bestätigen nachschauen, ob die Kontakt Adresse auf Matrix gefunden werden kann.
Key: spn/publicHub/datacenter
Identifikator des Datencenters in dem dieses Hub betrieben wird.
Wir versuchen diesen Style bis wir ein besseres System finden: COUNTRYCODE-COMPANY-INTERNALCODE (eg: DE-Hetzner-FSN1-DC5)
Key: spn/publicHub/hosters
Liste aller beteiligten Personen und Organisationen die im betreiben des Hubs beteiligt sind. Das inkludiert zum Beispiel den Verkäufer, Betreiber des Datencenters und Besitzer des Datencenteers.
Schlüssel: spn/publicHub/ip4
Ipv4 Adresse des Hubs. Muss Global erreichbar sein. Das wird von anderen nodes überprüft. Beachte, dass die IP Adresse von allen unten genannten Transporten erreichbar ist.
Lass sie leer damit sie automatisch bestimmt wird, setze sie als leere Zeichenfolge um sie zwanghaft zu deaktivieren.
Schlüssel: spn/publicHub/ip6
IPv6 Adresse des Hubs. Muss Global erreichbar sein. Das wird von anderen nodes überprüft. Beachte, dass die IP Adresse von allen unten genannten Transporten erreichbar ist.
Lass sie leer damit sie automatisch bestimmt wird, setze sie als leere Zeichenfolge um sie zwanghaft zu deaktivieren.
Schlüssel: spn/publicHub/transports
Liste aller Transporte die dieses Hub unerstützt. Transporte sind Zuhörer mit denen clients und andere nodes in Verbindung treten können.
Transporte nutzen ein URL Format. Einfache Protokolle die du Nutzen kannst sind type:port
, oder tcp:17
.
Unterstützte Transporte sind:
tcp
: Basic tcp Transport, zusätslich mit dem SPN Protokoll.http
: HTTP mit einer Verbindungs Erweiterung zu dem SPN Protokoll. Kann eine Domäne und einen Pfad in der konfigurierten URL definieren damit der node hinter eine http proxy gesetzt werden kann - welcher Verbindungs Erweiterungen unterstüzen muss.Ein guter Standard ist ["tcp:17", "http:80", "http:8080", "tcp:17017", "http:17080"]
.
Schlüssel: spn/publicHub/entry
Definiere eine Eingangs Richlinie. Das Format ist das gleiche für die Endpunkt Liste. Genehmigungen wenn keine Regeln passen.
Schlüssel: spn/publicHub/exit
Beschreibung: Definiere eine Ausgangspunkt Richtlinie. Das Format ist das gleiche für die Endpunkt Liste. Benutze Genehmigungen wenn keine Regeln passen.
Standart ist ["- * TCP/25"]
.
Schlüssel: spn/publicHub/allowUnencrypted
Werbe damit das diese Hub für unverschlüsselte Verbindungen zugänglich ist. Wie von Clients erkannt. Das ist absichtlich opt-in , damit rechtliches Haften reduziert werden kann, um die Betreiber Erfahrung in eingeschränkten Ländern zu verbessern. Beachte das der node auch von Nutzern als vertrauenswürdig eingestuft werden muss.
Schlüssel: spn/publicHub/bindToAdvertised
Verbinde dich nur zu beworbenen IP Adressen. Das ist nützlich falls dein Server merhere IPs hat und du SPN zu den beworbenen beschränken willst. Es ist empfohlen dies wenn möglich ausgeschaltet zu lassen, vor allem mit IPv6, die meisten OSs Server werden automatisch die ausgehenden IP Adressen routieren.
Das ist ein Beispiel für eine konfigurierungs Datei mit einigen ausgetauschten Daten von einem node betrieben von Hetzern in Falkenstein, Deutschland.
{
"core": {
"log": {
"level": "warning"
},
"releaseChannel": "stable",
"metrics": {
"instance": "my-node-name",
"comment": "DE, Falkenstein, Hetzner",
"push": "https://my-victoriametrics-server.example.com/api/v1/import/prometheus"
}
},
"spn": {
"publicHub": {
"name": "my-node-name",
"ip4": "public-ipv4",
"ip6": "public-ipv6",
"group": "my-group-name",
"contactAddress": "my-contact-email",
"contactService": "email",
"hosters": ["Hetzner"],
"datacenter": "DE-Hetzner-FSN",
"exit": ["- * TCP/25"],
"transports": ["tcp:17", "http:80", "http:8080", "tcp:17017", "http:17080"]
}
}
}