Setup Obsidian Self Hosting LiveSync
Ich suchte für eine Sync Lösung für meine Notizen und wurde bei Obsidian fündig. Obsidian hat einen Großen Pool an Add-ons und einer der Spannenden ist wohl LiveSync.
Zum aufsetzten, habe ich mich für die Self Hosting Version entschieden, bei der man eine Docker mit CouchDB aufsetzt und in meinem Fall hinter einen Nginx für https betreibt.
docker-compose.yml
Für den CouchDB docker habe ich mich für diesen entschieden docker-obsidian-livesync-couchdb und lege eine docker-compose.yml in einem Directory an was für die Daten der DB gedacht ist.
services:
couchdb-obsidian-livesync:
image: docker.io/oleduc/docker-obsidian-livesync-couchdb:master
container_name: couchdb-obsidian-livesync
restart: always
environment:
SERVER_URL: $example.domain
COUCHDB_USER: myadminuser
COUCHDB_PASSWORD: mytopsecretadminpw
COUCHDB_DATABASE: obsidian
ports:
- "127.0.0.1:5984:5984"
volumes:
- "${LD_HOST_DATA_DIR:-./data}:/opt/couchdb/data"
Systemd service
Erzeugen eines Services der beim Reboot gestartet wird. Dazu legen wir das File oder Symlink nach /etc/systemd/system/obsidian-livesync-couchdb.service an.
[Unit]
Description=%p container
PartOf=docker.service
After=network.target docker.service
StartLimitIntervalSec=0
[Service]
Type=oneshot
RemainAfterExit=true
User=user
WorkingDirectory=/$dataLocationpath$/obsidian-livesync-couchdb/
ExecStart=/usr/bin/docker compose up -d --remove-orphans
ExecStop=/usr/bin/docker compose down
[Install]
WantedBy=multi-user.target
$dataLocationpath$ muss durch den Path ersetzt werden in dem das docker-compose.yml File liegt und in den unter /data die DB Daten liegen werden.
User=user ist der Service User unter dem die File rechte liegen und kann angepasst werden.
Starten des Services
systemctl start obsidian-livesync-couchdb.service
systemctl enable obsidian-livesync-couchdb.service
Nginx VHost
server {
server_name $example.domain;
root /dummy/default/root;
# Add index.php to the list if you are using PHP
index index.html index.htm;
location / {
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_pass http://127.0.0.1:5984;
}
listen 80;
}
Let's Encrypt
Und nach dem nun noch das SSL Certificat mit Let's Encrypt
certbot --nginx -d $example.domain
Nun sollte man auf die DB zugreifen können die Url ist:
https://$example.domain/_utils
Die aktuell Config ist hier zu finden:
https://$example.domain/_node/_local/_config
DB Setup
Für das Setup der CouchDB gibt es ein init Script welsches die erste schritte übernimmt, wenn der Docker dies noch nicht von selber erledigt hatte.
export hostname=https://$example.domain
export username=myadminuser
export password=mytopsecretadminpw
curl -s https://raw.githubusercontent.com/vrtmrz/obsidian-livesync/main/utils/couchdb/couchdb-init.sh | bash
Setup-URI Generieren
Mit der Setup URI kann man den Server und die Obsedian APP Verheiraten damit man nicht alles Manuel eintragen muss. Zusätzliche env variable zu den obere von DB Setup.
export passphrase=enryptpassword
Erzeugen der Setup-URI
deno run -A https://raw.githubusercontent.com/vrtmrz/obsidian-livesync/main/utils/flyio/generate_setupuri.ts
Mit diesen Script bekommt man jetzt ein password und eine obsidian://setuplivesync?settings= welsche man in das Obsidian Add-on eingeben muss.
Obsidian Setup
Jetzt geht man bei Obsidian in Preference → Extrenal Add-ons, sucht dort nach Lifesync und installiert es.
Jetzt kann man die setuplivesync URI dort bei Optionen hinzufügen und wird nach dem Setup-URI Password gefragt und danach kommen ein wichtiges Setup Wizard, den man je nach Client richtig durchspielen muss, damit man ja nicht seine alten Daten verliert. Genau dasselbe muss man dann auch bei allen anderen Client durchspielen und aufpassen das man Merge verwendet um somit auf allen Clients denselben stand hat.
Viel Spaß