- Published on
Obsidian Sync und Publish Selfhosted
- Authors
- Name
- Tobias Steltner
Intro
Obsidian ist ein leistungsstarkes Notizwerkzeug auf Markdown-Basis und findet vor allem in der Tech-Community großen Anklang.
Durch die Möglichkeit, Dateien direkt auf der Festplatte zu speichern und Notizen mithilfe von Backlinks und Graphen zu verbinden, eignet es sich perfekt für das Organisieren komplexer Informationen und das Erstellen eines „zweiten Gehirns“.
- Obsidian Sync – Notizen sicher synchronisieren
- Obsidian Publish – Inhalte online veröffentlichen
- Selbstgehosteter Obsidian Sync mit Seafile
- Selbstgehosteter Obsidian Publish mit Perlite
- Installation Seafile per Docker
- Einrichtung der Obsidian-Bibliothek und Installation des Plugins
- Perlite Installation per Docker
- Seafile CLI-Client für den Server
- Grundlegende Verwendung
- Bibliothek herunterladen und synchronisieren
- Perlite und Seafile verknüpfen
Obsidian Sync – Notizen sicher synchronisieren
Obsidian Sync ist der offizielle Synchronisierungsdienst von Obsidian, mit dem Notizen auf verschiedenen Geräten (z. B. Desktop und mobile Geräte) verschlüsselt und sicher synchronisiert werden können. Für User ist das eine einfache Möglichkeit, ihre Notizen stets aktuell zu halten und von überall aus zu bearbeiten, ohne auf externe Cloud-Dienste angewiesen zu sein.
Kostenpunkt: ab 4 € pro Monat.
Obsidian Publish – Inhalte online veröffentlichen
Mit Obsidian Publish bietet Obsidian eine optionale Funktion, mit der Benutzer ihre Notizen und Wissenssammlungen als öffentliche Websites veröffentlichen können. Das eignet sich besonders für Tech-Blogger und Entwickler, die ihre Dokumentationen oder Wissensdatenbanken teilen wollen. Die Lösung ermöglicht ein anpassbares und zugängliches Layout, das ohne zusätzliche Webentwicklungskenntnisse auskommt.
Kostenpunkt: ab 8 € pro Monat.
Selbstgehosteter Obsidian Sync mit Seafile
Statt auf den offiziellen Obsidian Sync zu setzen, kannst du mithilfe von Seafile deine Notizen selbst hosten und synchronisieren. Seafile ist ein Open-Source-Cloudspeicher, der einfach auf einem eigenen Server betrieben werden kann. Durch das Seafile-Obsidian-Plugin kannst du die Markdown-Dateien aus deinem Obsidian-Vault direkt synchronisieren und zwischen verschiedenen Betriebssystemen teilen – ob Linux, Windows 11, Android oder iOS. Dieser Ansatz ermöglicht dir nicht nur die volle Kontrolle über deine Daten, sondern auch die Flexibilität, Notizen plattformübergreifend zu aktualisieren.
- Installation: Richte zunächst einen Seafile-Server ein – entweder auf einem Linux-Server oder als Docker-Container.
- Konfiguration des Plugins: Im Seafile-Obsidian-Plugin kannst du den Server so einrichten, dass es direkt auf den Vault zugreift und Dateien synchronisiert. So bleiben deine Notizen überall auf dem neuesten Stand.
Selbstgehosteter Obsidian Publish mit Perlite
Für die Veröffentlichung deiner Notizen als statische Website ohne den Obsidian Publish-Dienst kannst du auf Perlite zurückgreifen. Perlite ist ein Open-Source-Tool, das Markdown-Dateien aus Obsidian zu einer statischen, durchsuchbaren Website verarbeitet.
Mit Docker kannst du Perlite einfach als Container laufen lassen und deine Notizen in einer ansprechenden Website öffentlich oder nur für bestimmte Nutzer zugänglich machen:
- Docker-Setup: Starte einen Docker-Container für Perlite und verlinke ihn mit deinem Vault-Verzeichnis.
- Zugänglichkeit und Freigabe: Die Perlite-Website kann so konfiguriert werden, dass nur ausgewählte Inhalte online erscheinen – ideal für das Teilen von spezifischen Notizen oder Dokumentationen mit einem breiteren Publikum.
Installation Seafile per Docker
Für die selbstgehostete Obsidian-Synchronisierung betreibe ich einen Seafile-Server lokal zu Hause in einem Docker-Container. Mithilfe eines Reverse Proxy wird der Server durch ein SSL/TLS-Zertifikat abgesichert und ist unter einer eigenen Domain erreichbar. So können die Notizen sicher und verschlüsselt synchronisiert werden.
Hier ist ein Beispiel für meine docker-compose.yaml
, die ihr als Vorlage für eure eigene Installation verwenden könnt:
services:
db:
image: mariadb:10.11
container_name: seafile-mysql
environment:
- MYSQL_ROOT_PASSWORD=db_dev # Required, set the root's password of MySQL service.
- MYSQL_LOG_CONSOLE=true
- MARIADB_AUTO_UPGRADE=1
volumes:
- /opt/seafile-mysql/db:/var/lib/mysql # Required, specifies the path to MySQL data persistent store.
networks:
- seafile-net
memcached:
image: memcached:1.6.18
container_name: seafile-memcached
entrypoint: memcached -m 256
networks:
- seafile-net
seafile:
image: seafileltd/seafile-mc:11.0-latest
container_name: seafile
ports:
- "80:80"
# - "443:443" # If https is enabled, cancel the comment.
volumes:
- /opt/seafile-data:/shared # Required, specifies the path to Seafile data persistent store.
environment:
- DB_HOST=db
- DB_ROOT_PASSWD=db_dev # Required, the value should be root's password of MySQL service.
- TIME_ZONE=Etc/UTC # Optional, default is UTC. Should be uncomment and set to your local time zone.
- SEAFILE_ADMIN_EMAIL=me@example.com # Specifies Seafile admin user, default is 'me@example.com'.
- SEAFILE_ADMIN_PASSWORD=asecret # Specifies Seafile admin password, default is 'asecret'.
- SEAFILE_SERVER_LETSENCRYPT=false # Whether to use https or not.
- SEAFILE_SERVER_HOSTNAME=docs.seafile.com # Specifies your host name if https is enabled.
depends_on:
- db
- memcached
networks:
- seafile-net
networks:
seafile-net:
Wichtig: Vergesst nicht, eure persönlichen Daten wie Passwörter, E-Mail, Zeitzone etc. in der Konfigurationsdatei anzupassen, bevor ihr den Container startet.
Einrichtung der Obsidian-Bibliothek und Installation des Plugins
Nach der Seafile-Installation könnt ihr in der Seafile-Oberfläche eine neue Bibliothek mit dem Namen Obsidian Sync anlegen. Damit sich Obsidian automatisch mit dieser Bibliothek synchronisieren kann, nutzt das Seafile-Obsidian-Plugin:
- Installiert das Plugin aus dem GitHub-Repository: Seafile Plugin für Obsidian.
- Hinterlegt im Plugin die Zugangsdaten für euren Seafile-Server.
- Nun wird euer Obsidian Vault automatisch synchronisiert!
Mit dieser Konfiguration ist euer Obsidian-Vault jederzeit plattformübergreifend und sicher zugänglich, ideal für die Arbeit auf mehreren Geräten und Betriebssystemen.
Perlite Installation per Docker
Um die Obsidian-Notizen als statische Website zu veröffentlichen, verwende ich Perlite in einem Docker-Container, der ebenfalls auf demselben lokalen Host wie der Seafile-Server läuft. Mit dieser Konfiguration könnt ihr eine durchsuchbare und einfach zugängliche Website für eure Obsidian-Notizen erstellen.
Hier ist ein Beispiel, wie eure docker-compose.yaml
-Datei für Perlite aussehen könnte:
services:
perlite:
image: sec77/perlite:latest
container_name: perlite
restart: unless-stopped
environment:
- NOTES_PATH=Demo
- HIDE_FOLDERS=docs,private,trash
- LINE_BREAKS=true
- ABSOLUTE_PATHS=false
- ALLOWED_FILE_LINK_TYPES=pdf,mp4
- DISABLE_POP_HOVER=false
- SHOW_TOC=true
- SHOW_LOCAL_GRAPH=true
- HOME_FILE=README
- FONT_SIZE=15
- HTML_SAFE_MODE=true
- TEMP_PATH=/tmp
- SITE_TITLE=Demo
- SITE_TYPE=article
- SITE_URL=
- SITE_IMAGE=
- SITE_DESC=
- SITE_NAME=Perlite
- SITE_TWITTER=https://x.com/
- SITE_LOGO=perlite.svg
- SITE_HOMEPAGE=https://perlite.secure77.de/
- SITE_GITHUB=https://github.com/
volumes:
- ./perlite/Demo:/var/www/perlite/Demo:ro
web:
image: nginx:stable
container_name: perlite_web
restart: unless-stopped
ports:
- 80:80
volumes:
- ./web/config/perlite.conf:/etc/nginx/conf.d/default.conf:ro
volumes_from:
- perlite
depends_on:
- perlite
Wichtig um Obsidian und Perlite richtig zu konfigurieren schaut euch bitte den Guide vom Entwickler hier an.
Zudem benötigt ihr die nginx-Konfiguration für den Webserver. Diese könnte wie folgt aussehen:
server {
listen 80;
server_name localhost;
root /var/www/perlite;
index index.php index.html index.htm;
access_log /var/log/nginx/php-access.log;
error_log /var/log/nginx/php-error.log;
# PHP-FPM Configuration Nginx
location ~ \.php$ {
try_files $uri = 404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass perlite:9000;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param REQUEST_URI $request_uri;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
}
location ~ /\.ht {
deny all;
}
location ~* ^/(.*)/.obsidian/appearance.json$ {
allow all;
}
location ~* ^/(.*)/.obsidian/(.*)/theme.css$ {
allow all;
}
location ~ \.(git|github|obsidian|trash) {
deny all;
}
location ~ \.(md|json)$ {
deny all;
}
}
Seafile CLI-Client für den Server
Um Perlite Zugriff auf die synchronisierten Markdown-Dateien in Seafile zu ermöglichen, benötigen wir einen zusätzlichen Schritt. Da Seafile die Daten nicht im Klartext speichert, sondern in Chunks aufteilt, müssen wir ein Tool nutzen, das den Zugriff darauf ermöglicht.
Das Kommandozeilen-Tool seaf-cli
bietet eine einfache Möglichkeit, um auf die in Seafile gespeicherten Daten zuzugreifen.
# Aktuelles AppImage laden
wget https://s3.eu-central-1.amazonaws.com/download.seadrive.org/Seafile-cli-x86_64-9.0.8.AppImage
# Ausführbar machen
chmod +x Seafile-cli-x86_64-9.0.8.AppImage
# Umbenennen
mv Seafile-cli-x86_64-9.0.8.AppImage seaf-cli
# In den richtigen Ordner kopieren
sudo cp seaf-cli /usr/local/bin
Die Seafile-x86_64.AppImage erfordert FUSE Version 2, um ausgeführt zu werden. Falls FUSE auf deinem System nicht installiert ist, findest du unter diesem Link eine Installationsanleitung.
Grundlegende Verwendung
Den Client initialisieren und starten
# Wähle einen Ordner, um die Einstellungen des Seafile-Clients zu speichern, z. B. ~/seafile-client
mkdir ~/seafile-client # Erstelle den Ordner für die Einstellungen
seaf-cli init -d ~/seafile-client # Initialisiere den Seafile-Client mit diesem Ordner
seaf-cli start # Starte den Seafile-Client
Bibliothek herunterladen und synchronisieren
Um eine Bibliothek von einem Server herunterzuladen und zu synchronisieren, gehe wie folgt vor:
- Bibliotheks-ID abrufen: Navigiere zur Bibliothek auf dem Server und finde die ID in der URL (z. B.
f4962ce9-ba07-47b8-a83a-73dd96c2ebfd
). Die ID könnt ihr zB. im Browser aus der Adressleiste kopieren ->https://cloud.seafile.ccom/library/b11c66e8-377d-4b03-85ec-5deeb1ef5045/Data/
- Bibliothek herunterladen:
seaf-cli download -l "Bibliotheks-ID" -s "Server-URL:Port" -d "Zielordner" -u "Benutzername" [-p "Passwort"]
Beispiel:
seaf-cli download -l 0536c006-8a43-449e-8718-39f12111620d -s http://cloud.seafile.com -d /tmp -u freeplant@test.com
Dieser Befehl erstellt einen neuen Ordner mit dem Namen der Bibliothek im angegebenen Zielordner.
NOTE
Hinweis Hinweis: Wenn das Passwort nicht direkt angegeben wird -p "Passwort"
, wird es später abgefragt, was sicherer ist.
Bibliothek mit einem bestehenden Ordner synchronisieren:
seaf-cli sync -l "Bibliotheks-ID" -s "Server-URL:Port" -d "Zielordner" -u "Benutzername" [-p "Passwort"]
Der lokale Ordner wird mit der Bibliothek abgeglichen, wobei bestehende Dateien im Ordner mit denen in der Bibliothek zusammengeführt werden.
Nach Ausführen des download
- oder sync
-Befehls wird der lokale Ordner automatisch mit der Bibliothek synchronisiert.
Perlite und Seafile verknüpfen
Jetzt haben wir den Sync zwischen Obsidian Vault und Seafile eingerichtet und zudem per seaf-cli
direkten Zugriff auf die synchronisierten Daten vom Server aus. Damit können wir Perlite so konfigurieren, dass ausgewählte Notizen direkt über den Browser zugänglich gemacht werden.
Im nächsten Schritt passen wir die docker-compose.yaml
-Datei von Perlite an, sodass Perlite auf den Ordner mit den synchronisierten Markdown-Dateien zugreift. In diesem Beispiel liegt der Obsidian Vault unter /tmp/obsidian-vault
.
docker-compose.yaml
für Perlite
Beispiel Hier die angepasste Konfigurationsdatei:
# docker-compose.yaml (perlite)
[...] # Wir mounten das Verzeichnis wo unser Obsidian Vault liegt
volumes:
- /tmp/obsidian-vault/:/var/www/perlite/Obsidian:ro
[...]
- NOTES_PATH=Obsidian # Name es vaults im Container (rechte Seite des Volume Mappings)
- HIDE_FOLDERS =docs,private # Ordner die ausgeblendet werden sollen
WARNING
Hinweis: Denke daran, dass /tmp/obsidian-vault
mit dem Pfad übereinstimmen muss, den du für die Synchronisierung deiner Obsidian-Notizen mit Seafile eingerichtet hast.
Mit diesen Schritten ist euer Setup mehr oder weniger vollständig, und Perlite stellt die Inhalte aus eurem Obsidian Vault im Browser korrekt dar.
Alle weiteren Variablen sind optional und selbsterklärend.