Outline VPN auf eigenem VPS selbst hosten
Betreiben Sie den Outline-VPN-Server auf Ihrem VPS, nicht die Wiki-App: Installation, Zugriffsschlüssel, Management-API-Port und was Shadowsocks nicht verbirgt.
Was der Outline-VPN-Server ist
Für das Self-Hosting eines Outline-VPN-Servers betreiben Sie auf Ihrem eigenen VPS zwei Komponenten: einen Shadowsocks-Proxyserver und eine kleine REST-Management-API (Representational State Transfer), die davor geschaltet ist. Beide steuern Sie über die Desktopanwendung Outline Manager. Diese erzeugt Zugriffsschlüssel als ss://-Zeichenfolgen, die Sie an andere Personen senden. Outline eignet sich vor allem, um aus einem Netzwerk auf das Internet zuzugreifen, das VPNs blockiert. Die Lösung ist nicht für maximalen Durchsatz ausgelegt.
Zunächst eine Abgrenzung, da Suchergebnisse diese beiden Lösungen häufig verwechseln. Outline VPN ist das auf dieser Seite beschriebene Umgehungswerkzeug unter getoutline.org. Outline ist außerdem der Name eines selbst gehosteten Wikis und einer Wissensdatenbank unter einer anderen Domain, die von anderen Personen betrieben wird. Beide haben nur den Namen gemeinsam. Wenn Sie wegen des Wikis hierher gelangt sind, ist dies die falsche Seite.
Wer entwickelt Outline VPN
Viele Anleitungen bezeichnen Outline noch immer als Google-Produkt. Das traf zu Beginn zu, gilt heute aber nicht mehr. Jigsaw, ein Inkubator innerhalb von Google, startete Outline im Jahr 2018. Seit August 2026 gibt die Website des Projekts an, dass Outline der Outline Foundation gehört, einer unabhängigen gemeinnützigen Organisation. Der Quellcode liegt unter der OutlineFoundation-Organisation auf GitHub. Das ist relevant, wenn Sie entscheiden, ob Sie der Software vertrauen: Die Frage nach der Governance hat heute eine andere Antwort als 2018. Eine Anleitung, die den Eigentümer falsch angibt, nennt wahrscheinlich auch einen Repository-Pfad, der inzwischen geändert wurde.
Was das Installationsprogramm tatsächlich auf Ihrem Server einrichtet
Das Installationsskript kompiliert nichts. Es startet Docker-Container.
shadowboxaus dem Imagequay.io/outline/shadowbox:stable. Dies ist der Verwaltungsserver. Als Datenebene verwendet eroutline-ss-server, das Shadowsocks-Backend des Projekts.watchtower. Dieser Container prüft regelmäßig, standardmäßig einmal pro Stunde, ob ein neueresshadowbox-Image verfügbar ist. Wenn er eines findet, startet er den Container neu.- Ein selbstsigniertes TLS-Zertifikat (Transport Layer Security) und der zugehörige private Schlüssel. Beide werden im Statusverzeichnis des Servers gespeichert. Eine öffentliche Zertifizierungsstelle ist nicht beteiligt. Daher pinnt der Manager dieses Zertifikat anhand seines SHA-256-Fingerabdrucks, statt eine Zertifikatskette zu validieren.
Der Status liegt unter /opt/outline. Die persistenten Dateien befinden sich in /opt/outline/persisted-state.
Bei Watchtower sollten Sie eine bewusste Entscheidung treffen. Automatische Image-Aktualisierungen sorgen dafür, dass Sicherheitskorrekturen ohne Ihr Zutun installiert werden. Gleichzeitig kann sich die von Ihnen geprüfte Version über Nacht ändern, ohne dass Sie ein Changelog gelesen haben. Entscheiden Sie, was für Sie wichtiger ist. Wenn Sie Aktualisierungen selbst steuern möchten, entfernen Sie den Watchtower-Container und laden Sie neue Images nach Ihrem eigenen Zeitplan.
Voraussetzungen, die der Installer tatsächlich prüft
- Eine 64-Bit-x86-Maschine. Das Skript bricht mit
Unsupported machine type: ${MACHINE_TYPE}. Please run this script on a x86_64 machineab. Ein ARM-VPS-Tarif funktioniert mit dem Standard-Image nicht. Prüfen Sie daher die Architektur, bevor Sie den Tarif buchen. - Docker. Wenn Docker fehlt, bietet das Skript die Installation an und gibt
Would you like to install Docker? This will run 'curl https://get.docker.com/ | sh'.aus. Wenn Docker installiert, der Daemon aber gestoppt ist, bricht das Skript mit einer Meldung ab, die fragt, ob der Docker-Daemon ausgeführt wird. Starten Sie ihn mitsudo systemctl enable --now dockerund führen Sie den Installer erneut aus. - Eine öffentliche IPv4-Adresse, die das Skript selbst ermitteln kann. Dazu fragt es externe Dienste ab, derzeit
icanhazip.com,ipinfo.iound einen Google-Endpunkt, um die Adresse zu ermitteln, die es in die Verwaltungs-URL eintragen soll. Hinter NAT (Network Address Translation) oder auf einem System, das ausgehendes HTTP blockiert, schlägt diese Abfrage fehl. In diesem Fall müssen Sie die Adresse mit--hostnameangeben. - root über sudo.
In der Dokumentation des Projekts werden Ubuntu 20.04 LTS und Debian 10 als unterstützte Basis genannt. Da alles in Containern ausgeführt wird, funktioniert ein neueres Ubuntu normalerweise ebenfalls. Dann verwenden Sie jedoch keine vom Projekt getestete Basis.
Outline VPN-Server installieren
Dies ist der Befehl aus der eigenen Projektdokumentation unter developer.getoutline.org, abgerufen im August 2026. Rufen Sie die Dokumentation selbst auf und übernehmen Sie den Befehl von dort, statt einer Kopie aus einer beliebigen Anleitung zu vertrauen, auch nicht aus dieser: Das Repository wurde bereits einmal verschoben, und eine veraltete Kopie dieser Zeile führt dazu, dass von einem archivierten Pfad installiert wird.
sudo bash -c "$(wget -qO- https://raw.githubusercontent.com/OutlineFoundation/outline-apps/master/server_manager/install_scripts/install_server.sh)"Lesen Sie das Skript, bevor Sie es ausführen. Eine Remote-URL in eine root-Shell zu pipen bedeutet, dass Sie alles ausführen, was diese URL zu diesem Zeitpunkt liefert. Das vorherige Prüfen dauert nur eine Minute:
wget -qO- https://raw.githubusercontent.com/OutlineFoundation/outline-apps/master/server_manager/install_scripts/install_server.sh | lessMit drei optionalen Flags können Sie Werte festlegen, statt generierte Werte zu übernehmen:
Usage: install_server.sh [--hostname <hostname>] [--api-port <port>] [--keys-port <port>]
--hostname The hostname to be used to access the management API and access keys
--api-port The port number for the management API
--keys-port The port number for the access keysRechnen Sie nicht mit festen Portnummern. Wenn Sie --api-port und --keys-port nicht angeben, wählt das Skript für jeden Port einen zufälligen Wert oberhalb von 1023. Es gibt keinen allgemein festgelegten Outline-Port. Jede Anleitung, die eine bestimmte Nummer vorgibt, bezieht sich auf ihre eigene Installation, nicht auf Ihre. Lesen Sie die Ports aus der Ausgabe Ihres Durchlaufs ab.
Bei Erfolg gibt das Skript einen Banner aus, der mit CONGRATULATIONS! Your Outline server is up and running. beginnt, und fordert Sie auf, die folgende Zeile einschließlich der geschweiften Klammern in die Outline Manager-Oberfläche zu kopieren. Die Zeile hat diese Form:
{"apiUrl":"https://<your ip>:<api port>/<random secret>","certSha256":"<fingerprint>"}Anschließend teilt es Ihnen genau mit, welche Ports Sie öffnen müssen, und setzt die ausgewählten Nummern ein:
Make sure to open the following ports on your firewall, router or cloud provider:
- Management port ${API_PORT}, for TCP
- Access key port ${ACCESS_KEY_PORT}, for TCP and UDPWenn Sie das Terminal schließen und die Konfigurationszeile verlieren, ist sie weiterhin auf dem Server vorhanden. sudo cat /opt/outline/access.txt gibt sie erneut aus.
Prüfen Sie vor dem Öffnen des Managers, ob die Container tatsächlich laufen:
sudo docker psSie sollten shadowbox und watchtower sehen, beide mit dem Status Up. Ein shadowbox-Container, der ständig neu gestartet wird, verhindert die Verbindung des Managers. sudo docker logs shadowbox zeigt den Grund.
Warum der Port der Verwaltungs-API nicht unüberlegt öffentlich erreichbar sein sollte
Sehen Sie sich noch einmal apiUrl an. Es gibt dort weder einen Benutzernamen noch ein Passwort. Die Authentifizierung erfolgt über den zufälligen Pfadabschnitt in dieser URL. Das ist der gesamte Mechanismus. Jeder, der den Verwaltungsport erreichen kann und diesen Pfad kennt, kann jeden Zugriffsschlüssel auf dem Server auslesen und alle Schlüssel löschen.
Der eigene UFW-Vorschlag des Skripts (ufw ist die unkomplizierte Firewall unter Ubuntu) öffnet den Verwaltungsport für das gesamte Internet:
sudo ufw allow ${API_PORT}/tcpDas ist zwar praktisch, aber mehr als erforderlich. Der Port für Zugriffsschlüssel muss weltweit erreichbar sein, weil sich Ihre Benutzer dort verbinden. Der Verwaltungsport muss nur von dem System aus erreichbar sein, auf dem Sie Outline Manager ausführen. Schränken Sie den Zugriff ein:
sudo ufw allow <keys port>/tcp
sudo ufw allow <keys port>/udp
sudo ufw allow from <your admin ip> to any port <api port> proto tcpNoch besser ist es, den Verwaltungsport an der öffentlichen Firewall geschlossen zu lassen und über einen bereits eingerichteten privaten Tunnel darauf zuzugreifen. Wenn Sie das selbst gehostete WireGuard-VPN auf einem VPS eingerichtet haben, kann der Outline-Server diesem Tunnel beitreten und die API nur über seine Tunneladresse bereitstellen. Bei einem Portscan Ihrer öffentlichen IP-Adresse wird dann nur der Port für Zugriffsschlüssel angezeigt. Denken Sie daran, dass die meisten Anbieter zusätzlich zur Firewall auf dem Server eine Netzwerk-Firewall im Control Panel bereitstellen. Beide Firewalls müssen entsprechend konfiguriert sein.
Zu dieser Konfigurationszeile gibt es noch zwei wichtige Hinweise. Die Outline-Dokumentation bezeichnet sie als vertraulich und empfiehlt, sie nur mit Personen zu teilen, die Verwaltungszugriff benötigen. Verwenden Sie dafür einen verschlüsselten Kanal und nicht unverschlüsselte E-Mails oder Chats. Außerdem lässt sich ein einmal weitergegebener Wert nur schwer zurücknehmen: Bei einer manuell installierten Serverinstanz besteht der dokumentierte Weg zum Ungültigmachen einer weitergegebenen Verwaltungskonfiguration in einer vollständigen Neuinstallation. Dabei werden auch alle bisher ausgegebenen Zugriffsschlüssel zurückgesetzt. Behandeln Sie diese Zeichenfolge wie das root-Passwort des Servers. In der Praxis hat sie genau diese Bedeutung.
Zugriffsschlüssel ausstellen und widerrufen
Outline Manager erstellt Schlüssel per Schaltfläche. Im Hintergrund handelt es sich um gewöhnliche HTTP-Anfragen an den geheimen API-Pfad. Deshalb können Sie den Vorgang skripten:
API="https://SERVER_IP:API_PORT/SECRET_PATH" # the apiUrl from access.txt
curl -k "$API/access-keys"
curl -k -X POST "$API/access-keys"
curl -k -X PUT "$API/access-keys/3/name" -H 'Content-Type: application/json' -d '{"name":"anna-laptop"}'
curl -k -X DELETE "$API/access-keys/3"-k ist erforderlich, weil das Zertifikat selbstsigniert ist. Ohne diese Option beendet curl den Vorgang mit SSL certificate problem: self-signed certificate und sendet die Anfrage nicht. Die API unterstützt außerdem Datenlimits pro Schlüssel: Mit PUT /access-keys/{id}/data-limit legen Sie ein Limit fest, mit DELETE /access-keys/{id}/data-limit heben Sie es wieder auf. Damit verhindern Sie beispielsweise, dass das Telefon-Backup einer Person das gesamte monatliche Bandbreitenkontingent verbraucht.
Stellen Sie pro Person genau einen Schlüssel aus. Diese Regel entscheidet darüber, ob der restliche Ablauf zuverlässig funktioniert. Der Widerruf erfolgt durch Löschen des Schlüssels. Der Server akzeptiert ihn danach sofort nicht mehr. Eine Person, die das Unternehmen verlässt, verliert den Zugriff also unmittelbar nach dem Löschen. Angenommen, zehn Personen verwenden denselben Schlüssel. Dann können Sie nicht nur eine dieser Personen entfernen. Sie löschen den Schlüssel, alle zehn verlieren den Zugriff, und Sie verbringen den Abend damit, neun neue Schlüssel auszustellen. Wenn Sie jeden Schlüssel nach seinem Besitzer benennen, können Sie den Löschbefehl sicher ausführen.
Beachten Sie, was das Löschen nicht bewirkt. Die Zeichenfolge ss:// ist ein Geheimnis, das Sie bereits an jemanden gesendet haben. Durch das Löschen des Schlüssels verhindern Sie, dass Ihr Server dieses Geheimnis weiterhin akzeptiert. Das ist der Teil, den Sie kontrollieren. Die Nachricht, in der Sie das Geheimnis gesendet haben, wird dadurch nicht zurückgerufen. Wenn ein Schlüssel offengelegt wurde, löschen Sie ihn und stellen Sie einen neuen aus. Gehen Sie nicht davon aus, dass die vorhandene Kopie verschwunden ist.
Outline ist ein Proxy, kein vollständiger Tunnel
Dieser Unterschied überrascht viele, die von WireGuard kommen. Shadowsocks leitet TCP- und UDP-Verbindungen über einen Proxy weiter. Auf dem Server gibt es keine Netzwerkschnittstelle, keine Peer-Adresse, keinen Eintrag in der Routing-Tabelle und kein Subnetz hinter dem Server. outline-ss-server transportiert TCP und UDP, sodass Browser, Anwendungen und DNS darüber funktionieren. ping funktioniert dagegen nicht, weil ICMP (Internet Control Message Protocol) nicht zu den Protokollen gehört, die ein Shadowsocks-Proxy weiterleitet. Testen Sie mit curl https://ifconfig.me und prüfen Sie, ob die zurückgegebene Adresse die Ihres Servers und nicht Ihre eigene ist.
Die Folgen sollten klar benannt werden. Sie können kein privates Netzwerk hinter dem Outline-Server erreichen, wie ein WireGuard-Peer 10.20.0.0/16 erreicht, weil Outline keine Route verteilen kann. Sie können damit keine zwei Server miteinander verbinden. Peer-to-Peer-Verkehr zwischen Clients ist nicht möglich. Damit entfällt auch das typische Szenario zu Hause, bei dem ein Telefon seine Kamerabilder über den Tunnel mit einem selbst gehosteten Fotoserver synchronisiert. Wenn das Ihr Ziel ist, wählen Sie den Server zuerst anhand des Vergleichs PhotoPrism gegen Immich aus und statten Sie ihn statt mit einem Proxy mit einem routbaren VPN aus. Wenn Sie ein tatsächliches Netzwerk mit Adressen und Routen benötigen, ist Outline das falsche Werkzeug. Beginnen Sie stattdessen mit dem Vergleich WireGuard gegen OpenVPN.
Was die Verschleierung bewirkt und was nicht
Shadowsocks verschlüsselt und authentifiziert ab dem ersten Byte. Es gibt keinen unverschlüsselten Handshake, kein Protokollversionsfeld, keinen Zertifikatsaustausch und keinen festen Header. Im Netzwerkverkehr sieht eine Verbindung wie ein Strom zufälliger Bytes aus, der an einen hohen Port gesendet wird. Das ist die gesamte Begründung für Outline: Eine DPI-Instanz (Deep Packet Inspection), die darauf eingestellt ist, den WireGuard-Handshake oder den OpenVPN-Opcode im ersten Paket zu erkennen, findet hier keine passenden Merkmale. outline-ss-server bietet außerdem Replay-Schutz, der mit --replay_history aktiviert wird. Damit wird eine Klasse aktiver Prüfungen verhindert, bei denen ein Zensor ein aufgezeichnetes Paket erneut sendet, um zu sehen, wie Ihr Server antwortet.
Nun zum ehrlichen Teil.
- Es verbirgt den Datenstrom nicht. Ihr Netzwerkverkehr geht weiterhin über Stunden an eine einzige Adresse und erreicht dabei ein bestimmtes Volumen. Eine Analyse von Zeitpunkten und Volumen spielt keine Rolle, wenn der Inhalt nicht lesbar ist.
- Es macht Sie nicht anonym. Ihr Provider weiß, wer den Server gemietet hat, und speichert normalerweise Ihre Zahlungsdaten. Außerdem sieht jede von Ihnen besuchte Website die Adresse des Servers. Der Unterschied zwischen dem Mieten eines VPS und dem Kauf eines VPN-Dienstes erklärt, warum ein Server unter Ihrem eigenen Namen das Bedrohungsmodell verändert, anstatt es zu beseitigen.
- Es funktioniert nicht weiter, wenn die Adresse blockiert ist. Wenn ein Zensor die IP-Adresse Ihres Servers blockiert, ist die Verschleierung irrelevant, weil nichts eintrifft, das verschleiert werden könnte.
- Es verhindert die Weitergabe von Schlüsseln nicht. Ein Schlüssel, der in einem öffentlichen Gruppenchat veröffentlicht wird, kann vom Zensor abgerufen und verwendet werden. Dadurch weiß er genau, welche Adresse blockiert werden muss.
Diese letzten beiden Punkte erklären, warum eine Umgehung der Zensur in großem Maßstab viele sorgfältig vergebene und regelmäßig gewechselte Adressen erfordert. Genau dieses Problem soll das Tor-Projekt mit Bridges lösen. Wenn Ihr Angreifer Adressen schneller blockiert, als Sie Server mieten können, lesen Sie wie Tor-Bridges und Pluggable Transports nicht gelistete Einstiegspunkte bereitstellen, bevor Sie einen zweiten VPS mieten.
Auswahl zwischen Outline und den Alternativen
Wählen Sie Outline, wenn das Netzwerk VPN-Protokolle blockiert und die Personen, denen Sie helfen, keine Konfigurationsdatei bearbeiten werden. Sie senden eine Zeichenfolge, und die Empfänger fügen sie in eine App ein. Das ist ein echter Vorteil und der Hauptgrund, aus dem es Outline gibt.
Wählen Sie WireGuard, wenn das Netzwerk den Datenverkehr durchlässt. WireGuard ist schneller, läuft im Kernel, stellt Ihnen ein routbares Netzwerk bereit und erfordert deutlich weniger laufende Verwaltung. Die vollständige Anleitung finden Sie im Leitfaden zum WireGuard-VPN-Server.
Wählen Sie eine Bridge oder einen Pluggable Transport, wenn der Angreifer Adressen statt Protokolle blockiert oder wenn Sie neben der Erreichbarkeit auch Anonymität benötigen.
Wählen Sie ein Mesh mit einer Control Plane, wenn Ihr Problem die Verwaltung einer Geräteflotte und nicht die Zensur ist. Das manuelle Verteilen von Keys und Zuweisen von Adressen ist ab ungefähr einem Dutzend Geräten nicht mehr skalierbar. Ein selbst gehosteter NetBird-Server übernimmt diese Verwaltung für Sie. Wenn Sie keine Control Plane betreiben möchten, prüfen Sie zuerst, was der kostenlose Tailscale-Tarif tatsächlich abdeckt, denn eine Geräteflotte in einem Haushalt oder kleinen Team passt häufig hinein und verursacht keine laufenden Kosten.
FAQ
Ist Outline VPN dasselbe wie das Outline-Wiki?
Nein. Es handelt sich um voneinander unabhängige Projekte, die zufällig denselben Namen tragen. Outline VPN ist das Tool zur Umgehung von Zensur unter getoutline.org. Es besteht aus einem Shadowsocks-Server und einer REST-Verwaltungs-API und wird über die Desktopanwendung Outline Manager gesteuert. Das Outline-Wiki ist eine selbst gehostete Wissensdatenbank für Teams unter einer anderen Domain. Die Suche nach „self-host Outline“ liefert Ergebnisse zu beiden Projekten. Prüfen Sie die Domain, bevor Sie einen Installationsbefehl kopieren.
Ist Outline VPN weiterhin ein Google-Produkt?
Nein, seit August 2026 nicht mehr. Outline wurde 2018 von Jigsaw gestartet, einem Inkubator innerhalb von Google. Daher stammt die Bezeichnung „Google VPN“ in älteren Anleitungen. Auf der eigenen Website weist das Projekt inzwischen darauf hin, dass Outline der Outline Foundation gehört, einer unabhängigen Non-Profit-Organisation. Die Quellcode-Repositories liegen unter der Organisation OutlineFoundation auf GitHub.
Welche Ports verwendet der Outline-Server?
Dafür gibt es absichtlich keine feste Vorgabe. Wenn Sie --api-port und --keys-port nicht an das Installationsprogramm übergeben, wählt es für die Verwaltungs-API einen zufälligen Port über 1023 und einen weiteren Port für Zugriffsschlüssel. Am Ende des Vorgangs gibt es beide Ports aus. Außerdem weist es Sie an, den Verwaltungsport für TCP sowie den Zugriffsschlüssel-Port für TCP und UDP in Ihrer Firewall und in der Netzwerk-Firewall Ihres Providers freizugeben. Wenn Sie diese Ausgabe verloren haben, gibt sudo cat /opt/outline/access.txt die Verwaltungs-URL einschließlich ihres Ports zurück.
Kann ich mit Outline auf mein privates Netzwerk zugreifen?
Nein. Shadowsocks proxyt TCP- und UDP-Verbindungen, statt einen Layer-3-Tunnel aufzubauen. Daher verfügt der Server über keine Schnittstelle und keine Routen in dahinterliegende Netzwerke. Ein WireGuard-Peer kann mit AllowedIPs = 10.20.0.0/16 konfiguriert werden und diesen Bereich erreichen. Eine entsprechende Einstellung gibt es in Outline nicht, weil Outline keinen Datenverkehr dorthin routet. Verwenden Sie WireGuard für den Zugriff auf private Netzwerke. Verwenden Sie Outline für den Zugriff auf das öffentliche Internet.
Wie entferne ich den Zugriff einer Person?
Löschen Sie deren Zugriffsschlüssel in Outline Manager oder mit DELETE /access-keys/{id} über die Verwaltungs-API. Der Server akzeptiert diesen Schlüssel sofort nicht mehr. Das funktioniert nur zuverlässig, wenn jede Person einen eigenen Schlüssel besitzt. Erstellen Sie daher pro Person einen Schlüssel und benennen Sie ihn nach der jeweiligen Person. Den Verwaltungszugriff zu widerrufen, ist deutlich problematischer: Die dokumentierte Lösung für eine Verwaltungskonfiguration, die Sie auf einem manuell installierten Server weitergegeben haben, ist eine vollständige Neuinstallation. Dabei werden gleichzeitig alle Benutzerschlüssel zurückgesetzt.