Inhaltsverzeichnis der Serie
- Artikel: Joplin Notes (Einleitungs-Artikel)
- Artikel: Installation
- Artikel: Joplin Server auf Docker-Basis installieren und einrichten
- Artikel: Grundfunktionen
Eine Information vorab:
Eigentlich wäre es im dritten Artikel der Serie um die Grundfunktionen gegangen. Aber dann kam Oliver um die Ecke und hat uns mit diesem tollen Artikel überrascht. Da er thematisch zum zweiten Artikel »Installion« passt, schieben wir ihn ein. Im nächsten Artikel wird es dann um die Grundfunktionen gehen, damit alle, die mit Joplin neu starten, endlich beginnen können.
An alle Linux- und IT-Neulinge: Der Artikel von Oliver richtet sich eher an die fortgeschrittenen Nutzer. Wenn Ihr gerade erst startet, schaut Euch den zweiten Artikel (siehe oben) an und nehmt eine einfachere Variante zum Betrieb von Joplin Notes.
Vielen Dank an Oliver für diesen Artikel! Wir hoffen auf Nachahmende. Eine Artikel-Einreichung geht ganz unkompliziert über unser Artikel-Formular.
Die Nutzung unserer Daten auf jedem Gerät ist heutzutage Standard. Die Kontrolle darüber, wo diese Daten gespeichert werden, ist eine andere Sache – in Bezug auf Joplin kannst Du neben WebDAV auch andere Plattformen verwenden, um Deine Daten zu synchronisieren: Eine davon ist der Joplin Server, der recht einfach zu implementieren ist, sofern man sich der Hilfe von Docker bedienen kann.
Joplin ist eine kostenlose Open-Source-Anwendung für die Erstellung von Notizen und die Verwaltung von Aufgaben, die eine große Anzahl von in Notizbüchern organisierten Notizen verarbeiten kann. Die Notizen sind durchsuchbar, können kopiert, getaggt und verändert werden – entweder direkt aus der Anwendung oder aus Deinem eigenen Texteditor heraus. Die Notizen werden im Markdown-Format abgelegt und Clients für alle modernen Betriebssysteme (Desktop und Mobile) sind entsprechend verfügbar.
Während Joplin die Synchronisierung von Notebooks und Daten mit verschiedenen privaten und öffentlichen Cloud-Diensten und (natürlich) der eigenen Joplin Cloud vereinfacht, ist es auch möglich, mit ein wenig Hilfe von Docker einen eigenen Sync-Server zu hosten. Auch wenn sich die Verbindung dazu offiziell noch in der Beta-Phase befindet, möchte ich Dir in diesem Tutorial zeigen, wie Du Deinen eigenen Joplin-Server im Handumdrehen einrichten kannst. Im vorliegenden Anwendungsfall hoste ich einen kleinen Debian-basierten VPS zu Hause (und setze damit den allgemeinen #selfhosted-Trend fort) und verwende den Nginx Proxy Manager (NPM), um das Reverse Proxying und die Ausstellung des gewünschten SSL-Zertifikats zu übernehmen. Alles, was Du noch zusätzlich benötigst, ist eine Domain oder Subdomain und die offenen Ports 80/tcp und 443/tcp, die ordnungsgemäß an die interne IP des Reverse Proxys weitergeleitet werden.
Die Serverinstallation
Nachdem wir unsere bevorzugte Linux-Distribution installiert haben, um die Grundlage für unseren Joplin-Server zu schaffen (in meinem Fall ist es Debian), müssen zunächst ein paar Vorbereitungen getroffen werden. Die nachfolgenden Schritte beziehen sich, wie gerade erwähnt, auf Debian 12 und auch meinen Standard in Bezug auf die Dateiablage (hier im /opt-Verzeichnis). Das kann bei Dir entsprechend anders aussehen und sollte entsprechend berücksichtigt werden.
- Installiere die aktuellste Docker-Engine – siehe https://docs.docker.com/engine/install/
- Lege ein Verzeichnis z. B. in /opt an und nenne es zum Beispiel joplin-server, sodass der Basispfad /opt/joplin-server existiert und Docker dort die Daten der PostgreSQL-Datenbank ablegen kann: Mehr Verzeichnisse benötigen wir hier nicht, da Joplin alles in der Datenbank und nicht auf Dateiebene außerhalb von PostgreSQL speichert
- Wechsele dann in das just erstellte Verzeichnis und erstelle die Datei docker-compose.yml mit dem Beispielinhalt aus https://git.pifferi.io/oliver/docker/src/commit/c6752206728acbd29b6bf9ac42e81852da819c90/docker_joplin_server.yaml – bitte passe hier die entsprechenden Werte für Datenbank-/Benutzername und Kennwort der PostgreSQL-Datenbank oder andere Parameter wie die benötigten E-Mail-Einstellungen entsprechend Deiner Umgebung an. Das Dockerfile an sich ist recht überschaubar und selbsterklärend, sodass das recht schnell erledigt sein sollte.
- Starte den fertigen Stack durch Eingabe von docker compose up -d!
Jetzt kannst respektive solltest Du überprüfen, ob beide Container laufen, indem Du docker ps auf der Kommandozeile eingibst oder Du kannst Dir die entsprechenden Protokolle durch den Befehl docker logs anzeigen lassen. Der erste initiale Start bzw. die Hintergrundprozesse dauern ein wenig, da die Datenbank erst einmal befüllt werden muss und dann der Applikations-Container dann darauf aufsetzt: Habe also gegebenenfalls ein wenig Geduld, denn wie immer kann es je nach System kann dieser Prozess oder auch das vorherige Herunterladen ein wenig Zeit in Anspruch nehmen!
Der Reverse Proxy
Sobald die Dienste auf dem Zielsystem eingerichtet sind (oder während dies geschieht), kannst Du Dich mit dem Reverse-Proxy beschäftigen. Dieser sorgt dafür, dass Dein Joplin Server nicht nur über die interne IP und den definierten Port, sondern über die vorher ausgesuchte Domain verfügbar gemacht wird. In dem hier vorliegenden Beispiel soll der bereits vorhandene Nginx Proxy Server dafür sorgen, die interne IP samt des Ports auf unsere gewählte https-URL zu mappen und sich sowohl um die Zuweisung eines Let’s Encrypt-Zertifikates als auch die notwendige Verlängerung zu kümmern. Hierfür wird natürlich vorausgesetzt, dass die Ports 80/tcp und 443/tcp in Deinem Router respektive Firewall via NAT an Deinen Reverse Proxy weitergeleitet werden. Ist das bisher nicht geschehen, oder Du hast noch keinen Reverse Proxy im Einsatz, ist das eine vorab zu erledigende „Pflichtaufgabe“, um den Joplin Server von aussen verfügbar zu machen, sofern Du das willst!
Dazu melde Dich einfach am Nginx Proxy Manager an, wähle dann „Proxy Hosts“ und dann „Add Proxy Host“, um einen neuen Host hinzuzufügen. Es öffnet sich ein neues Fenster, in das Du den entsprechenden Domänennamen (z. B. joplin.meinedomain.de), das Protokoll („Scheme“), den Weiterleitungshostnamen/IP und den Zielport eingeben musst. Das Schema ist http, der Port ist 22300, wie in der Datei docker-compose.yml konfiguriert, und die IP ist die interne Ziel-IP des Hosts, auf dem der Joplin Server läuft. Aktiviere nun noch die angezeigten Optionen für das Caching von Assets, das Blockieren gängiger Exploits und die Unterstützung von Web-Sockets und klicke dann auf „Save“.
Sobald der Host erstellt wurde, editiere ihn direkt und wechsele dann zur Registerkarte „SSL“. Wähle jetzt „Request new SSL Certificate“ und aktiviere die Optionen „Force SSL“, „HTTP/2-Support“ und „HSTS aEnabled“ an und klicke anschliessend auf „Save“ – natürlich solltest Du den Nutzungsbestimmungen für Let’s Encrypt auch entsprechend zustimmen. Sobald das Zertifikat abgerufen wurde, kann die restliche Arbeit dann im Browser erledigt werden, da der Joplin Server über https und das passende, frisch erstellte Zertifikat auch von aussen erreicht werden kann.
Das erste Anmelden und das Ändern des initialen Benutzers
Nach der Erstinstallation und der (hoffentlich erfolgreichen) Konfiguration Deines Reverse-Proxys kannst Du dann Deinen Joplin Server über die offizielle URL wie https://joplin.meinedomain.de öffnen – natürlich entsprechend der (Sub-)Domain, für die Du Dich anfangs entschieden hast. Verwende nun die Standard-Zugangsdaten admin@localhost als Benutzername und admin als Passwort – im Nachgang solltest Du nach dem ersten Log-in diese Werte entsprechend ändern, idealerweise in einem anderen Benutzernamen und unter Verwendung eines sicheren Kennwortes. Durch die Eingabe einer korrekten E-Mail-Adresse und der vorherigen richtigen Konfiguration in der docker-compose.yml-Datei solltest Du diese E-Mail-Adresse dann noch bestätigen: Joplin verschickt dann eine entsprechende Mail. Unter dem Abschnitt „Admin“ findest Du dann verschiedene Optionen, darunter den Abschnitt „Benutzer“, in dem Du Deinen ersten individuellen Benutzer für Deinen Joplin-Desktop- und/oder Mobil-Client anlegen kannst. Auch hier gilt: Lege besser pro User dedizierte Accounts an, sodass Du nicht mit dem Administrator arbeiten musst, was eben immer ein Sicherheitsrisiko darstellt!
Sobald Du eine der offiziellen Anwendungen installiert hast, öffne einfach den Konfigurationsbildschirm und gehe zum Abschnitt „Synchronisation“. Wähle dort „Joplin Server (Beta)“ als Synchronisationsziel aus, gebe dann die gewählte URL mit dem entsprechenden Benutzernamen und dem gesetzten Passwort ein, teste und speichere diese einmal und schon hast Du Deinen Client erfolgreich mit Deiner persönlichen Joplin Server-Instanz verbunden! Natürlich gibt es noch erweiterte Optionen wie den Synchronisationsintervall, die Behandlung von Anhängen, Proxy-Einstellungen oder die maximale Anzahl gleichzeitiger Verbindungen zu Deinem Joplin Server: Auch hier ist eine Feinabstimmung auf Deine speziellen Bedürfnisse möglich und auch die Ende-zu-Ende-Verschlüsselung ist ein weiterer Sicherheitsaspekt, den Du bei Bedarf aktivieren solltest!
Geschafft!
Du hast es erfolgreich geschafft, einen selbst gehosteten Joplin Server auf einem Debian VPS samt Reverse-Proxy zu installieren – sicherlich nicht ganz trivial, allerdings schon in kürzester Zeit und mit weniger Aufwand als vielleicht ursprünglich erwartet. Deine spezifischen Bedürfnisse werden sicherlich unterschiedlich sein und es gibt auch andere Lösungen in Bezug auf einen Reverse-Proxy wie den klassischen Nginx, Apache oder viele andere. Am Ende liegt die Wahl (natürlich) letztlich bei Dir und Deinen speziellen Anforderungen. Übrigens funktioniert auch der auf Nginx basierende Reverse-Proxy auf Synology NAS-Systemen hervorragend mit dieser Art des Deployments!
Quellen:
Coverfoto - https://joplinapp.org
GNU/Linux.ch ist ein Community-Projekt. Bei uns kannst du nicht nur mitlesen, sondern auch selbst aktiv werden. Wir freuen uns, wenn du mit uns über die Artikel in unseren Chat-Gruppen oder im Fediverse diskutierst. Auch du selbst kannst Autor werden. Reiche uns deinen Artikelvorschlag über das Formular auf unserer Webseite ein.