Was Sie tatsächlich ersetzen und was nicht
Nextcloud ist, entkleidet von seinem Marketing, eine PHP-Anwendung, die eine Datenbank mit Datei-Metadaten und ein Verzeichnis mit Dateiinhalten pflegt und genügend Protokolle spricht, dass gewöhnliche Geräte es wie ein normales Cloud-Konto behandeln. Diese Beschreibung untertreibt, wie viel von Ihrem digitalen Leben es still und leise abdeckt. Die Dateisynchronisierung ist der sichtbare Teil, und es ist der Teil, für den man es installiert. Die Teile, die sich sechs Monate später als wichtig erweisen, sind die, die niemand vorführt: Kalender und Kontakte über CalDAV und CardDAV, sodass die eingebauten Apps Ihres Handys aufhören, mit einem Mail-Anbieter zu sprechen; eine Fotobibliothek mit automatischem Kamera-Upload, was einen Haushalt tatsächlich von Google Photos wegbringt; sowie Notizen, Aufgaben und Lesezeichen, die nicht mehr über vier Konten verstreut sind, die Sie nicht kontrollieren.
Es lohnt sich, bei diesem Vergleich präzise zu sein, denn die übliche Darstellung ist falsch. Niemand betreibt Self-Hosting, um bei Gigabytes Geld zu sparen — ein Endkundentarif mit zwei Terabyte kostet etwa so viel wie ein VPS der mittleren Preisklasse und bringt überhaupt keine Arbeit mit sich. Sie betreiben Self-Hosting, weil die Alternative eine Beziehung ist, in der die Gegenpartei die Daten hält, die Bedingungen festlegt, die Inhalte auf Richtlinienkonformität durchsucht und rechtliche Forderungen über Sie bearbeitet, ohne verpflichtet zu sein, Sie vorher zu informieren. Diese Gegenpartei zu entfernen ist das eigentliche Produkt. Alles andere ist ein Nebeneffekt, manches davon angenehm, manches davon Ihre neue Verantwortung.
Was Sie nicht bekommen und auch nicht erwarten sollten, ist der unsichtbare betriebliche Unterbau, den ein Hyperscaler kostenlos mitliefert. Es gibt keine Multi-Region-Replikation, außer Sie bauen sie selbst. Es gibt kein Edge-Netzwerk, das einen großen Download von der anderen Seite des Planeten schnell macht. Es gibt keine Support-Warteschlange, die Ihre Datei findet, wenn Sie sie löschen und noch am selben Nachmittag den Papierkorb leeren. Wenn die Festplatte um drei Uhr morgens vollläuft, zeigen die Sync-Clients auf fünf Geräten rote Symbole, und die Person, die das behebt, sind Sie. Das ist kein Argument dagegen, es zu tun — es ist die Beschreibung des Jobs, den Sie damit übernehmen.
Worüber man sich zuletzt im Klaren sein sollte, ist der Update-Rhythmus. Nextcloud veröffentlicht mehrmals im Jahr Hauptversionen, Upgrades müssen jeweils eine Hauptversion nach der anderen eingespielt werden, und Apps von Drittanbietern, auf die man sich verlassen hat, hinken manchmal einer Version hinterher. Das ist keine schwierige Arbeit, und mit dem eingebauten Updater plus einem vorherigen Snapshot ist es eine Sache von fünfzehn Minuten, aber es ist wiederkehrende Arbeit mit einer angehängten Frist: Eine Instanz, die drei Hauptversionen hinterherhinkt, lässt sich nicht mehr in einem Schritt aktualisieren und sollte in der Zwischenzeit auch nicht dem Internet ausgesetzt sein.
Die Maschine: dimensioniert für einen Dateiserver, nicht für eine Website
Die meisten Self-Hosting-Leitfäden bemessen einen Server nach seiner Anwendung. Bei diesem hier ist die Anwendung fast irrelevant, und die Bibliothek ist alles. Der PHP-Prozess, der Webserver, die Datenbank und der Cache passen zusammen bei Haushaltslast bequem in ein bis zwei Gigabyte RAM; was Ihren Tarif bestimmt, ist, wie viele Bytes Sie auf die Festplatte legen und in wie viele einzelne Dateien sich diese Bytes aufteilen: zwei getrennte Beschränkungen, die auf zwei unterschiedliche Arten versagen.
Beginnen Sie mit der ehrlichen Inventur statt mit der wunschgemäßen. Dokumente und Tabellen sind Rauschen — ein Jahrzehnt davon überschreitet selten zehn Gigabyte. Die Kamerarolle ist kein Rauschen: Ein modernes Smartphone produziert pro Person und Jahr irgendwo zwischen fünfzehn und vierzig Gigabyte, sobald Videos mitgezählt werden, und den automatischen Upload für eine vierköpfige Familie einzuschalten ist eine Verpflichtung zu etwa hundert Gigabyte pro Jahr, die ankommen, ob Sie daran denken oder nicht. Rechnen Sie dann noch Overhead auf die reine Bibliothek obendrauf: generierte Vorschauen für Bilder und Videos, Dateiversionen, die für bearbeitete Dokumente aufgehoben werden, und ein Papierkorb, der gelöschte Dateien standardmäßig bis zu dreißig Tage lang aufbewahrt und dabei auf dieselbe Festplatte zählt. Ein brauchbarer Richtwert ist die Bibliothek plus zwanzig Prozent, und die zwanzig Prozent sind der Teil, den man vergisst, bis die Festplatte bei fünfundneunzig steht.
Arbeitsspeicher ist die zweite Beschränkung, und sie ist deutlich billiger zu erfüllen. Vier Gigabyte betreiben eine Einzelnutzer-Instanz ohne Drama. Acht ist die komfortable Zahl für einen Haushalt oder ein kleines Team, weil sie es erlaubt, PHP-FPM genug Worker zu geben, um mehrere gleichzeitig aufwachende Sync-Clients abzufedern, der Datenbank einen echten Buffer Pool zu geben und trotzdem noch Platz für den Page-Cache des Betriebssystems zu lassen, damit die heißen Metadaten im Speicher bleiben. Die Zahl ändert sich nennenswert nur, wenn Sie Nextcloud Office hinzufügen, das eine vollständige Dokumentenkonvertierungs-Engine in einem eigenen Container betreibt und zwei bis vier Gigabyte für sich allein will, bevor überhaupt jemand eine Tabelle öffnet.
Die CPU fällt im Dauerbetrieb kaum ins Gewicht und ist dann für etwa eine Woche intensiv gefordert. Das Generieren von Vorschauen für eine bestehende Fotobibliothek ist das Aufwendigste, was dieser Server tun wird — jedes Bild wird in mehreren Größen dekodiert und neu kodiert —, und auf einem kleinen Tarif kann dieser erste Durchlauf tagelang dauern. Danach ist das Ausliefern von Dateien fast kostenlos: Die Arbeit ist I/O-lastig, und die Geschwätzigkeit des Sync-Protokolls kostet mehr an Round-Trips als an Rechenzyklen. Kaufen Sie Kerne für den Import, nicht für die laufende Instanz, und wenn der Import der einzige Grund wäre, hochzustufen, betreiben Sie ihn einen Monat lang auf einem größeren Tarif und stufen Sie danach wieder herunter. Monatliche Abrechnung ohne Vertragsbindung ist genau das, was dieses Manöver billig macht.
| Art der Instanz | Nutzer | Bibliothek | RAM | Sinnvoller Tarif |
|---|---|---|---|---|
| Dokumente, Kontakte, Kalender, wenig Fotos | 1–3 | Unter 40 GB | 4 GB | Starter (60 GB) |
| Haushalt mit Kamera-Upload vom Handy | 3–6 | 80–180 GB | 8 GB | Growth (120 GB) / Business (240 GB) |
| Kleines Team, Versionen und Vorschauen aktiv | 5–15 | 200–450 GB | 16 GB | Business (240 GB) / Pro (400 GB) |
| Nextcloud Office für Live-Bearbeitung hinzugefügt | 5–15 | unverändert | +2–4 GB | Pro (400 GB) / Scale (640 GB) |
| Medienarchiv im Terabyte-Bereich | beliebig | 1 TB+ | 16 GB+ | Dediziert — kein VPS-Tarif geht über 640 GB hinaus |
Diese letzte Zeile ist die, die es sich lohnt, zweimal zu lesen, denn genau hier verschätzen sich Leute bei der Form der Maschine. Ein VPS ist hervorragend darin, ein Sync-and-Share-Hub für den Arbeitsbestand zu sein, den eine Gruppe von Menschen anfasst. Er ist ein schlechtes Gefäß für ein Medienarchiv: Der größte Tarif, den wir verkaufen, endet bei sechshundertvierzig Gigabyte lokalem NVMe, und sobald Ihre Bibliothek im Terabyte-Bereich liegt, ist dedizierte Hardware die richtige Antwort, bei der ein gespiegeltes Laufwerkspaar Ihnen ein bis zwei Terabyte mit Redundanz darunter gibt. Das vor dem Start zu entscheiden, ist weit weniger schmerzhaft, als eine bereits befüllte Instanz umzuziehen, nachdem der Platz ausgegangen ist.
Die Datenbankentscheidung, die Sie einmal treffen
Der Installer bietet Ihnen SQLite an, und es wird funktionieren. Nutzen Sie es für eine Demo, die Sie ohnehin wieder löschen wollen, und für nichts sonst. SQLite serialisiert Schreibvorgänge über die gesamte Datenbank hinweg, und diese Anwendung schreibt ständig — jede Abfrage eines Sync-Clients, jede gescannte Datei, jeder Aktivitätseintrag —, sodass sich in dem Moment, in dem zwei Clients aktiv sind, die Anfragen hintereinander aufstauen und die Oberfläche eine Verzögerung bekommt, die kein Tuning mehr entfernt. Die offiziellen Systemanforderungen sagen genau das, nur höflicher.
MariaDB und PostgreSQL sind beide erstklassig, und die Wahl zwischen beiden ist fast reine Geschmackssache. MariaDB ist das, was die meisten Installationen betreiben und wovon die meisten Community-Antworten ausgehen, was etwas wert ist, wenn Sie um Mitternacht eine Fehlermeldung googeln; es braucht eine Datenbank, die mit dem 4-Byte-UTF-8-Zeichensatz angelegt wurde, damit Emoji in Dateinamen keine Zeile abschneiden, und es will seine Transaktionsisolation auf Read Committed gesetzt haben, was die Dokumentation unmissverständlich sagt und was gerne übersprungen wird. PostgreSQL ist bei Nebenläufigkeit still und leise besser und braucht weniger Zureden, auf Kosten eines etwas kleineren Fundus an Copy-Paste-Antworten. Beides ist richtig; das zu betreiben, von dem Sie bereits wissen, wie man es sichert, ist richtiger als beides.
Setzen Sie sie auf dieselbe Maschine und verbinden Sie sich über einen Unix-Socket. Das ist einer der wenigen Fälle, in denen die naheliegende Architektur auch die richtige ist: Eine Einzelinstanz gewinnt nichts durch eine Datenbank auf einem anderen Host und verliert bei jeder der vielen kleinen Abfragen, die die Anwendung stellt, einen Netzwerk-Roundtrip. Binden Sie die Datenbank an das Loopback-Interface, niemals an das öffentliche — die Härtungs-Checkliste erklärt, warum eine lauschende Datenbank die mit Abstand häufigste Art ist, wie ein kleiner Server seinem Besitzer entrissen wird.
Was man an dieser Datenbank verstehen muss: Sie ist klein an Bytes und riesig an Konsequenz. Ihre zentrale Tabelle enthält eine Zeile pro Datei und Nutzer — hunderttausend Dateien über vier Konten hinweg sind ein paar hunderttausend Zeilen, was für eine moderne Datenbank-Engine nichts ist, und ein paar hundert Megabyte auf der Festplatte. Aber diese Tabelle ist das Einzige, was die Struktur Ihrer Daten kennt. Verlieren Sie die Datenbank und behalten die Dateien, haben Sie einen Verzeichnisbaum ohne Freigaben, ohne Versionen, ohne Kommentare, ohne Tags und ohne Sync-Status. Der Rescan über die Kommandozeile baut daraus einen brauchbaren Baum wieder auf, was beim ersten Mal, wenn Sie es brauchen, eine echte Erleichterung ist, und er bringt keinen einzigen Freigabelink und keine Versionshistorie zurück. Sichern Sie die beiden immer zusammen, und behandeln Sie ein Backup des einen ohne das andere als gar kein Backup.
Warum sich die Standardinstallation langsam anfühlt — und die vier Einstellungen, die das beheben
Eine frisch installierte Instanz wird meist als träge beschrieben, und die Leute, die das sagen, liegen nicht falsch. Es liegt nicht an der Hardware und nicht an PHP: Es sind vier Werkseinstellungen, die auf maximale Kompatibilität mit Shared Hosting ausgelegt sind statt auf eine Maschine, die Sie kontrollieren. Sie zu ändern dauert zwanzig Minuten und bringt die mit Abstand größte gefühlte Verbesserung, die jemand je an dieser Installation vornehmen wird.
Die erste sind die Hintergrundjobs. Im Auslieferungszustand laufen sie im AJAX-Modus, was bedeutet, dass die Warteschlange nur voranschreitet, wenn ein Mensch im Browser eine Seite lädt — sodass Vorschauen nicht generiert, der Papierkorb nicht geleert, föderierte Freigaben nicht aktualisiert und Suchindizes nicht gebaut werden, bis zufällig jemand vorbeischaut. Wechseln Sie zu einem System-Cron-Eintrag, der den Job-Runner alle fünf Minuten als Webserver-Nutzer ausführt, genau wie es die Dokumentation zu Hintergrundjobs beschreibt. Die Hälfte der rätselhaften Beschwerden, Nextcloud tue einfach nichts, geht auf diese Einstellung zurück.
Die zweite ist Caching und Dateisperren. Ohne einen geteilten Cache liest die Anwendung ständig Konfiguration und App-Metadaten neu ein, und ohne transaktionale Dateisperren, abgesichert durch Redis, fällt sie zurück auf das Sperren von Zeilen in der Datenbank, genau dort, wo Sie keine Konkurrenz haben wollen. Installieren Sie Redis, lassen Sie es auf einem Unix-Socket statt auf einem TCP-Port lauschen, damit nichts im Netzwerk es erreichen kann, und richten Sie sowohl den verteilten Cache als auch das Backend für Dateisperren darauf aus, während Sie den schnellen lokalen Cache auf APCu belassen. Die Referenz zur Caching-Konfiguration gibt den genauen Block dafür an.
Die dritte ist der PHP-Opcode-Cache. Die werksseitigen Puffergrößen wurden für eine kleine Anwendung bemessen, und das hier ist keine — die Verwaltungsübersicht sagt Ihnen unverblümt, dass der Interned-Strings-Puffer fast voll ist, und ein voller Puffer bedeutet, dass der Interpreter bei jeder Anfrage vermeidbare Arbeit leistet. Den opcache-Speicher und den Interned-Strings-Puffer zu erhöhen und die maximale Anzahl beschleunigter Dateien deutlich über den Standardwert anzuheben, kostet ein paar hundert Megabyte RAM und ist sofort bei jedem Seitenaufruf spürbar. Die vierte ist der Process Manager von PHP-FPM: Die Standard-Kindprozessanzahl ist auf eine Maschine mit weit weniger Speicher als Ihrer abgestimmt, und ein Haushalt mit mehreren Sync-Clients staut sich dahinter. Bemessen Sie die Worker-Anzahl anhand Ihres tatsächlichen RAM und des Speicherbedarfs pro Worker, was die eine Berechnung in diesem Abschnitt ist, die es wert ist, auf Papier durchgerechnet zu werden.
Eine verwandte Falle verdient einen eigenen Absatz, weil sie ein verwirrendes Symptom erzeugt. Das Hochladen einer großen Datei über die Weboberfläche schlägt fehl, während dieselbe Datei über den Desktop-Client anstandslos hochlädt. Das ist kein Bug: Der Desktop-Client zerlegt Uploads in Chunks und setzt sie serverseitig wieder zusammen, sodass er unter jedem Limit hindurchschlüpft, während der Browser eine einzige große Anfrage sendet, die PHPs Upload- und Post-Größenlimits, die eigene maximale Body-Größe des Webservers und jedes Timeout dazwischen überstehen muss. Wenn große Dateien bei Ihnen über den Browser in die Instanz gelangen, müssen all diese Werte gemeinsam angehoben werden — nur einen davon zu erhöhen, verschiebt lediglich, welche Komponente Nein sagt.
Drei unterschiedliche Dinge heißen Verschlüsselung, und sie schützen vor drei unterschiedlichen Akteuren
Das ist der Abschnitt, in dem die meisten selbst gehosteten Installationen etwas falsch machen, und sie tun es auf eine nachvollziehbare Weise: Drei voneinander unabhängige Funktionen teilen sich ein Wort, die Verwaltungsoberfläche bietet alle drei an, und mehr davon zu aktivieren klingt sicherer als weniger. Ist es nicht. Jede verteidigt gegen einen bestimmten Gegner, jede kostet etwas, und eine der drei ist aktiv schädlich, wenn sie auf den Fall angewendet wird, für den Leute sie normalerweise einsetzen.
Volldatenträgerverschlüsselung ist die Schicht unter allem anderen. Sie schützt Daten auf einer ausgeschalteten Maschine — eine aus einem Rack gezogene Festplatte, ein ausgemustertes Laufwerk, ein aus dem Kaltspeicher kopiertes Image. Während der Server läuft, bewirkt sie überhaupt nichts, weil das Volume entsperrt ist und das Betriebssystem es als gewöhnliche Dateien liest. Sie ist billig, unsichtbar, hat keine Auswirkung auf irgendeine Nextcloud-Funktion, und es gibt keinen guten Grund, sie nicht zu haben. Was sie verlangt, ist einen Plan für die Remote-Entsperrung, denn ein Server, der um vier Uhr morgens neu startet, bleibt unten, bis jemand eine Passphrase eintippt; der Leitfaden zur Volldatenträgerverschlüsselung behandelt das initramfs-SSH-Arrangement, das das überlebbar macht.
Serverseitige Verschlüsselung ist diejenige, über die man am gründlichsten nachdenken sollte. Sie verschlüsselt Dateiinhalte mit Schlüsseln, die auf demselben Server liegen, verwaltet von derselben Anwendung, und ihr eigentlicher Entwurfszweck ist der Schutz von Daten, die Sie auf Speicher legen, der jemand anderem gehört — ein Object Store, ein gemieteter externer Mount, ein Backend eines Drittanbieters. Angewandt auf lokalen primären Speicher auf einer Maschine, die Sie ohnehin schon kontrollieren, schützt sie Sie vor sehr wenig, da jeder, der die Dateien lesen kann, auch die Schlüssel lesen kann; und sie kostet Sie etwa ein Drittel mehr Speicherplatz, verkompliziert jedes Wiederherstellungsszenario und deaktiviert Funktionen, die Dateiinhalte lesen müssen. Die Dokumentation zur Verschlüsselung ist ungewöhnlich direkt bei diesem Kompromiss. Wenn Ihr Speicher lokales NVMe auf einem Server ist, den Sie allein mieten, lassen Sie sie aus und nutzen Sie stattdessen die Datenträgerebene.
Ende-zu-Ende-Verschlüsselung ist die echte Sache, und sie ist die einzige der drei, die Sie vor dem Server selbst schützt. Dateien in einem Ende-zu-Ende-verschlüsselten Ordner werden vom Client verschlüsselt, bevor sie das Gerät verlassen, und der Server speichert Chiffretext, den er nicht öffnen kann — genau das, was Sie für die kleine Teilmenge an Material wollen, bei der das Zwingen des Hosts keine lesbaren Daten hervorbringen darf. Der Preis dafür ist hart und nicht verhandelbar: Diese Ordner haben keine Weboberfläche, keine serverseitige Suche, keine Miniaturansichten, keine öffentliche Freigabe und keine Wiederherstellung, wenn Sie die Mnemonic-Phrase verlieren, die sie entsperrt. Das ist keine Einschränkung, die man umgehen sollte, das ist die Definition der Garantie. Nutzen Sie sie für den Ordner, der sie wirklich braucht, und lassen Sie die Familienfotobibliothek außen vor, wo Vorschauen funktionieren und das Leben angenehm ist.
| Ebene | Schützt vor | Nutzlos gegen | Was es Sie kostet |
|---|---|---|---|
| Volldatenträger (LUKS) | Eine Festplatte, die im ausgeschalteten Zustand entfernt, beschlagnahmt oder kopiert wird | Rein gar nichts, solange die Maschine läuft | Einen Remote-Entsperrschritt bei jedem Neustart |
| Serverseitige Verschlüsselung | Den Betreiber von externem Speicher oder Object Storage, den Sie mieten | Jeden mit Root-Zugriff auf diesem Server — die Schlüssel liegen auch hier | ~35% mehr Speicherplatz, schwierigere Wiederherstellung, Funktionen, die Dateiinhalte lesen |
| Ende-zu-Ende-Verschlüsselung | Den Server selbst, seinen Host und jeden, der einen von beiden dazu zwingen kann | Einen kompromittierten Client — dort liegt der Klartext | Kein Webzugriff, keine Suche, keine Vorschauen, keine Freigabe, keine Wiederherstellung ohne die Mnemonic-Phrase |
| TLS bei der Übertragung | Jeden, der das Netzwerk zwischen Client und Server beobachtet | Alles, was an einem der beiden Enden gespeichert ist | Nichts. Es ist Pflicht; die mobilen Clients verweigern reines HTTP |
Die Clients und die Teile, mit denen andere Leute tatsächlich zu tun haben
Ob dieses Projekt gelingt, entscheiden fast ausschließlich Leute, die sich nie am Server anmelden werden, und ihr Urteil bildet sich in der ersten Woche anhand von drei Softwarestücken. Der Desktop-Client ist derjenige, der am meisten zählt. Konfigurieren Sie ihn mit virtuellen Dateien statt einer vollständigen lokalen Kopie — Dateien erscheinen im Dateimanager, belegen keinen Platz, bis sie geöffnet werden, und werden bei Bedarf heruntergeladen —, denn genau das macht eine zweihundert Gigabyte große Bibliothek auf einem Laptop mit kleiner Festplatte nutzbar, und es ist das Verhalten, das man von den kommerziellen Clients bereits gewohnt ist.
Die mobile App trägt das Feature, das Skeptiker überzeugt: den automatischen Upload der Kamerarolle. Schalten Sie es für die Leute in Ihrem Haushalt ein, weisen Sie es auf einen Ordner pro Nutzer, und innerhalb eines Monats ist die Diskussion über den Abschied von Google Photos vorbei. Es ist, aus genau demselben Grund, auch das, was Ihre Festplatte nach einem Zeitplan füllt, den Sie nicht gewählt haben, weshalb der Dimensionierungsabschnitt oben seine Zeit auf Kameras statt auf Dokumente verwendet. Setzen Sie von Anfang an ein Kontingent pro Nutzer — nicht weil Sie vorhaben, es durchzusetzen, sondern weil ein Kontingent aus einer still und leise vollaufenden Festplatte eine klare Nachricht auf jemandes Handy macht.
Kalender und Kontakte sind der stille Gewinn und das, was am häufigsten nur halb konfiguriert bleibt. Nextcloud spricht CalDAV und CardDAV, was jedes Handy und jeder Desktop nativ unterstützt, sodass niemand eine neue App braucht — aber die Erkennung hängt von einem Paar Weiterleitungen unter /.well-known/caldav und /.well-known/carddav ab, die in Ihrer Webserver-Konfiguration liegen und nicht in der Anwendung. Stellt man sie falsch ein, schlägt die Kontoeinrichtung unter iOS mit einer wenig hilfreichen Fehlermeldung fehl, während sie unter Android klaglos funktioniert. Die Verwaltungsübersicht weist ausdrücklich darauf hin, was ein weiterer Grund ist, diese Seite zu bereinigen, bevor sonst noch jemand dazukommt.
Zwei kleinere Hinweise sparen echte Zeit. Das Einbinden per WebDAV wird unterstützt und ist für gelegentlichen Zugriff von einer Maschine aus, auf der Sie nichts installieren möchten, wirklich praktisch; es ist aber auch langsam, weil jede Operation ein HTTP-Roundtrip ist, also eine schlechte Wahl für ein Arbeitsverzeichnis und eine gute, um schnell mal eine Datei zu holen. Und legen Sie für jedes Gerät ein App-Passwort an, statt das Kontopasswort herauszugeben: Ein verlorenes Handy zu sperren bedeutet dann, ein einzelnes Token zu löschen, statt ein Passwort zu ändern und jeden anderen Client, den Sie besitzen, neu zu authentifizieren. Kombinieren Sie das mit Zwei-Faktor-Authentifizierung auf den Konten, und halten Sie ein Administratorkonto, das im Alltag niemand benutzt, getrennt von dem Konto, mit dem Sie tatsächlich synchronisieren.
Wo die Jurisdiktion aufhört, eine Abstraktion zu sein
Bei den meisten Dingen, die man selbst hosten könnte, ist der Standort der Maschine eine Latenzentscheidung mit einer rechtlichen Fußnote. Bei Ihrem gesamten Dokumentenarchiv, Ihren Fotos, Ihren Kontakten und Ihrem Kalender kehrt sich die Priorität um — das ist die eine Maschine, bei der die rechtliche Frage die Netzwerkfrage übertrumpft, weil die Daten darauf genau die Art sind, für die behördliche Anordnungen tatsächlich ausgestellt werden.
Verstehen Sie, was sich ändert, wenn Sie einen Hyperscaler hinter sich lassen. Wenn Ihre Dateien bei einem großen Anbieter liegen, wird eine Anfrage dafür bei diesem Anbieter zugestellt, von dessen Rechtsabteilung gegen deren eigene Interessen abgewogen und öfter als nicht unter einem Schweigegebot erfüllt — Sie erfahren womöglich nie, dass es passiert ist. Wenn die Dateien auf einem Server liegen, den Sie mieten, gibt es keine solche Abteilung und keinen solchen Reflex, und die Anfrage muss erst jemanden finden. Das ist kein magischer Schutzschild; es ist eine strukturelle Veränderung darin, wer gefragt wird, wie sichtbar das Fragen ist und wie viel Reibung zwischen einer Anfrage und einer Kopie Ihrer Daten steht. Unser rechtlicher Leitfaden geht im Detail durch, worin diese Reibung besteht und worin nicht.
Daraus folgen zwei praktische Konsequenzen. Die erste ist, dass die Jurisdiktion bewusst gewählt werden sollte statt aus Latenzreflex — der Vergleich der Jurisdiktionen und der Hinweis zum 14-Eyes-Abkommen legen dar, wie sich die vier Standorte unterscheiden, und für ein persönliches Archiv ist die Antwort meist der stärkste rechtliche Boden, dessen Round-Trip-Zeit Sie noch tolerieren können. Die zweite ist, dass der Host immer nur gezwungen werden kann, das herauszugeben, was der Host erreichen kann, weshalb die Verschlüsselungsebenen oben keine Dekoration sind: Volldatenträgerverschlüsselung plus Ende-zu-Ende-Verschlüsselung auf den Ordnern, die sie brauchen, bedeutet, dass die ehrliche Antwort auf eine Anordnung ein Disk-Image aus Chiffretext ist.
Es gibt einen Latenz-Kompromiss, und er ist kleiner, als man befürchtet. Sync ist ein Hintergrundprozess — niemand schaut einem Foto-Upload zu —, also kosten hundert Millisekunden zusätzlicher Round-Trip bei dem, was Sie den ganzen Tag über tun, nichts spürbar. Bemerkbar wird es beim Öffnen eines Dokuments im Web-Editor oder beim Scrollen durch eine große Galerie, was interaktiv ist und wo dieselben hundert Millisekunden bei jeder Aktion zu spüren sind. Wenn die Menschen in Europa sind, halten Amsterdam oder Zürich beide Erlebnisse flott; wenn es bei der rechtlichen Aufstellung um die Sache selbst geht, kostet Reykjavík Sie ein spürbares, aber tolerierbares Maß an interaktiver Reaktionsfreude und beim Sync gar nichts.
Eine Verpflichtung sollte man klar benennen, denn Self-Hosting überträgt sie still und leise auf Sie. In dem Moment, in dem die Dateien anderer Leute auf Ihrem Server liegen — die Fotos eines Familienmitglieds, die Dokumente eines Kollegen, die Verträge eines Kunden —, sind Sie zur verantwortlichen Stelle dafür geworden, und in Europa hat diese Verantwortung einen Namen und einen Satz daran hängender Pflichten. Im Haushaltsmaßstab ist das nicht drückend, und es ist nichts, das man erst mitten in einem Streit entdecken sollte: Entscheiden Sie, wer worauf Zugriff hat, sagen Sie den Leuten, deren Daten es sind, wo diese liegen, und halten Sie das Administratorkonto aus der alltäglichen Nutzung heraus, sodass das Lesen des Ordners von jemand anderem eine bewusste Handlung ist statt ein Versehen.
Backups und die Wiederherstellung, die Sie proben müssen
Es gibt genau drei Dinge zu bewahren, und alle drei müssen aus demselben Zeitpunkt stammen: das Datenverzeichnis mit den Dateiinhalten, die Datenbank mit sämtlichen Metadaten dazu, und config.php, die die Instanz-ID, die Datenbank-Zugangsdaten und — falls Sie serverseitige Verschlüsselung aktiviert haben — die Werte enthält, ohne die der Rest unlesbar ist. Kopieren Sie zwei von dreien, haben Sie eine interessante archäologische Übung statt einer Wiederherstellung.
Konsistenz ist der Teil, bei dem man leicht auf subtile Weise etwas falsch macht. Eine Datei, die kopiert wird, während in die Datenbank geschrieben wird, erzeugt ein Backup, dessen zwei Hälften sich widersprechen, und der Widerspruch taucht Wochen später als Dateien auf, die auf der Festplatte existieren, aber nicht in der Oberfläche, oder als Einträge in der Oberfläche, die ins Leere zeigen. Die einfache Lösung ist, die Instanz in den Wartungsmodus zu versetzen, die Datenbank zu dumpen, das Datenverzeichnis zu sichern und den Wartungsmodus wieder auszuschalten — ein kurzer Ausfall, den um vier Uhr morgens niemand bemerkt. Die Backup-Dokumentation legt die Reihenfolge im Detail dar, und ein Dateisystem-Snapshot, der aufgenommen wird, während die Anwendung ruhiggestellt ist, erreicht dasselbe in kürzerer Zeit, falls Ihr Speicher das unterstützt.
Schicken Sie es dann anderswohin, verschlüsselt, bevor es die Maschine verlässt. Restic und Borg verschlüsseln beide clientseitig und deduplizieren gut gegen einen Datensatz, der sich an den Rändern ändert, was der Form eines Dateiservers entspricht. Machen Sie das entfernte Repository append-only, sodass ein kompromittierter Host seine eigene Historie nicht löschen kann — das ist es, was aus einem Backup eine Verteidigung gegen Ransomware macht statt nur gegen eine ausgefallene Festplatte —, und legen Sie das entfernte Ende in eine andere Jurisdiktion als das nahe Ende, denn eine Kopie, die in derselben Aktion wie das Original beschlagnahmt werden kann, ist keine wirkliche zweite Kopie. Bewahren Sie die Repository-Passphrase an einem Ort auf, der nicht der Server ist.
Die beiden Funktionen, die man mit Backups verwechselt, verdienen es, beim Namen genannt zu werden. Dateiversionen und der Papierkorb sind Annehmlichkeiten, die innerhalb derselben Instanz, auf derselben Festplatte, in derselben Datenbank leben; sie stellen ein versehentliches Überschreiben wunderbar wieder her und überleben absolut nichts, was dem Server zustößt. Ebenso sind stündliche Anbieter-Snapshots — die hier bei jedem Tarif mit siebentägiger Aufbewahrung inbegriffen sind — hervorragend, um ein missglücktes Upgrade rückgängig zu machen, aber kein Offsite-Backup, weil sie dasselbe Schicksal teilen wie die Infrastruktur, auf der sie sitzen. Nutzen Sie alle drei. Verlassen Sie sich auf das eine, das woanders liegt.
Proben Sie zum Schluss die Wiederherstellung, einmal, solange nichts kaputt ist. Provisionieren Sie einen Wegwerf-Server, stellen Sie die Datenbank und das Datenverzeichnis darauf wieder her, korrigieren Sie den Trusted-Domain-Eintrag in config.php, und melden Sie sich an. Sie werden etwas entdecken — ein fehlendes PHP-Modul, einen Datenbank-Nutzer, den Sie nie notiert haben, einen Verschlüsselungsschlüssel, der an einem Ort lag, den Sie vergessen haben —, und Sie werden es an einem Nachmittag entdecken, an dem es Sie eine Stunde kostet, statt an dem Tag, an dem es Sie das Archiv kostet. Falls die Wiederherstellung auch einen Datei-Rescan braucht, um den Baum abzugleichen, ist genau dafür das Kommandozeilen-Tool da, und das im Voraus zu wissen, ist der ganze Sinn der Übung.
Nach außen freigeben, ohne nach innen etwas preiszugeben
Das Feature, das dies für andere Leute wirklich nützlich macht, ist auch dasjenige, das eine URL zu Ihren Dateien ins öffentliche Internet stellt, also lohnen sich fünf Minuten bewusster Konfiguration mehr als die Standardwerte. Öffentliche Links sollten aus Prinzip ein Passwort und ein Ablaufdatum tragen, statt das pro Link zu entscheiden — beides lässt sich instanzweit erzwingen, was bedeutet, dass die Einstellung einmal von Ihnen vorgenommen wird, statt jedes Mal von jemand anderem vergessen zu werden. Upload-only-Drop-Ordner sind der unterschätzte Fall: Ein Link, der Dateien entgegennimmt, ohne preiszugeben, was bereits im Ordner liegt, ersetzt jeden umständlichen E-Mail-Anhang-Workflow, den Sie derzeit haben.
Hinter einem Reverse Proxy — so betreiben fast alle das hier — sorgt ein einziger Konfigurationswert für unverhältnismäßig viel Verwirrung. Wenn der Anwendung nicht mitgeteilt wird, welchen Adressen als Proxys zu vertrauen ist, scheint jede Anfrage vom Proxy selbst zu kommen. Rate Limiting zählt dann die ganze Welt als einen einzigen Besucher, der Brute-Force-Schutz drosselt irgendwann diese eine Adresse, und das Ergebnis ist eine Instanz, die sich auf rätselhafte Weise verlangsamt oder legitime Nutzer aussperrt, während die Logs zeigen, dass eine einzige IP alles tut. Die Trusted-Proxy-Liste und die Protokoll-Übersteuerung zu setzen, wie es die Dokumentation zum Reverse Proxy beschreibt, behebt die Logs und den Schutz mit je einer Zeile.
Die Trusted-Domains-Liste ist der andere Wert, den man verstehen sollte statt nur zu kopieren. Sie ist eine Allow-List von Hostnamen, auf die die Instanz antwortet, und sie existiert, weil die Anwendung absolute URLs — Links zum Zurücksetzen des Passworts, Freigabelinks, Federation-Callbacks — aus dem Host-Header baut, den sie empfängt. Offen gelassen, ist das ein bekannter Weg, wie die eigenen Links plötzlich woanders hinzeigen. Fügen Sie die Hostnamen hinzu, die Sie tatsächlich benutzen, einschließlich der Onion-Adresse, falls Sie eine veröffentlichen, und sonst nichts.
Wenn manches davon überhaupt nicht aus dem offenen Internet erreichbar sein sollte, lösen Sie das nicht mit einer Firewall-Regel und Hoffnung. Es gibt zwei saubere Antworten: Stellen Sie die Instanz hinter einen WireGuard-Tunnel, sodass sie nur von Geräten erreichbar ist, die einen Schlüssel besitzen, was für ein persönliches Archiv gut und für die Freigabe an Außenstehende schlecht funktioniert; oder veröffentlichen Sie sie als Onion-Dienst neben dem Clearnet-Hostnamen, was die Sync-Clients über Tor am Laufen hält, ohne überhaupt eine Adresse offenzulegen. Beides ist additiv — Sie können jedes von beiden neben einem normalen öffentlichen Hostnamen betreiben und das sensible Material hinter dem privaten Pfad leben lassen.
Wann Sie das nicht selbst hosten sollten
Ein Leitfaden, der das nie sagt, verkauft Ihnen etwas, also hier die Liste. Wenn die Daten einem Unternehmen gehören, dessen Betrieb stillsteht, sobald der Dateiserver es tut, unterschreiben Sie eine Verfügbarkeitsgarantie mit einer Maschine und der Aufmerksamkeit einer Person, und ein einzelner VPS ist dafür nicht das richtige Instrument. Hochverfügbarkeit für diese Anwendung ist wirklich aufwendig — geteilter Speicher, eine replizierte Datenbank, ein Load Balancer, der Sticky Sessions versteht —, und wenn Sie das brauchen, brauchen Sie ein Budget und eine zweite Person, nicht einen größeren Tarif.
Wenn niemand die monatliche Wartung übernimmt, fangen Sie gar nicht erst an. Die Arbeit ist klein — Updates einspielen, einen Blick auf die Verwaltungsübersicht werfen, bestätigen, dass das Backup gelaufen ist, eine Hauptversion nach der anderen aktualisieren, wenn eine neue erscheint —, aber sie verzeiht es nicht, ein Jahr lang übersprungen zu werden. Eine Instanz, die mehrere Hauptversionen hinterherhinkt, lässt sich nicht mehr in einem einzigen Schritt aktualisieren und sollte in der Zwischenzeit nicht dem Internet ausgesetzt sein, und der Ausweg aus dieser Lage ist mehr Arbeit, als die Wartung gewesen wäre.
Wenn Ihre Bibliothek in Terabyte gemessen wird und weiterwächst, stimmt die Form nicht, nicht die Größe. Kein VPS-Tarif, den wir verkaufen, erreicht ein Terabyte lokales NVMe, und Object Storage hinten an die Instanz anzuflanschen verschiebt das Problem, statt es zu lösen: Die Datenbank wird noch kritischer, die Latenz bei jeder Dateioperation steigt, und Sie haben still und leise einen Dritten wieder in ein Design eingeführt, dessen ganzer Zweck es war, einen zu entfernen. Kaufen Sie dedizierte Hardware mit gespiegelten Laufwerken, oder akzeptieren Sie, dass das Archiv und der Sync-Hub zwei unterschiedliche Systeme sind.
Und wenn Sie eigentlich Google Docs wollen — dreißig Leute, die mit Cursorn im Sekundenbruchteil-Takt in derselben Tabelle tippen —, seien Sie ehrlich: Der selbst gehostete Office-Stack ist gut, aber nicht gleichwertig, und er will seinen eigenen Speicher und seine eigene CPU. Betreiben Sie ihn, weil Sie die Dokumente auf Ihrer eigenen Festplatte haben wollen, nicht weil Sie erwarten, dass sich die Zusammenarbeit identisch anfühlt.
Für alle anderen — einen Haushalt, der es leid ist, Miete für seine eigenen Fotos zu zahlen, ein kleines Team, das seine Verträge lieber nicht von einem Unternehmen mit eigener Richtlinienabteilung indizieren lässt, eine Einzelperson, die die Dateien einfach an einem selbst gewählten Ort haben will — ist das eines der lohnendsten Dinge, die man auf einen Server stellen kann. Die Software ist ausgereift, die Clients sind gut, die Fehlermodi sind dokumentiert, und der einzige wirklich unversöhnliche davon ist das Backup, das nie getestet wurde. Ein Server ist in etwa einer Minute provisioniert, die Vorschauen generieren noch, während Sie mit dem Einrichten der Handys fertig werden, und Sie können dafür mit derselben Privatsphäre-Haltung bezahlen, für die Sie es überhaupt kaufen.