Come installare Self-Hosted LiveSync per Obsidian
Una guida completa per configurare la sincronizzazione self-hosted su Obsidian. Impara a usare il plugin LiveSync e CouchDB per avere le tue note sempre aggiornate su tutti i dispositivi, senza costi e con il pieno controllo dei tuoi dati.
Come ho scritto nel primo post di questo blog, ho sempre avuto l'abitudine di prendere appunti, ma l'ho trasformata in una vera e propria necessità spinto dalla frustrazione: troppe volte mi sono scontrato con documentazione tecnica carente o guide scritte senza pensare alle reali difficoltà del lettore. Ho quindi iniziato a scrivere manuali per me stesso, per poter ripercorrere i miei passi quando necessario.
Nel mio percorso ho utilizzato per un periodo Joplin, nella sua variante self-hosted, ma sono sempre stato intrigato da Obsidian per la sua flessibilità, la cura nei dettagli e il suo vasto ecosistema di plugin. L'ostacolo principale al passaggio è sempre stato uno: a differenza di Joplin, che offre la sincronizzazione self-hosted gratuita, il servizio di sincronizzazione ufficiale di Obsidian è a pagamento.
La svolta è arrivata con la scoperta del plugin Self-Hosted LiveSync. Ho capito subito che era l'occasione perfetta per migrare, unendo la potenza di Obsidian alla libertà di una sincronizzazione gestita in autonomia.
Tuttavia, come spesso accade con progetti di nicchia, la documentazione del plugin può essere difficile da navigare. Per questo, ho deciso di scrivere una guida chiara e passo-passo. Vediamo insieme come configurare Self-Hosted LiveSync e godere finalmente di uno dei migliori software di note-taking con la comodità della sincronizzazione in tempo reale.

Prerequisiti
Per come è strutturato il plugin Self-Hosted LiveSync, avremo bisogno di:
- Un host con Docker su cui installare CouchDB, il Database di appoggio per Obsidian
- Un dispositivo su cui installare il client di Obsidian
- (se vogliamo usare Obsidian anche su smartphone) un Reverse Proxy come NGINX
Vuoi usare NGINX ma non l'hai ancora installato? Non ti preoccupare, puoi seguire le mie guide!



Installazione
1. Installazione di CouchDB
Self-Hosted LiveSync necessita di un DB di appoggio su cui fare le sincronizzazioni, e nello specifico è integrato con CouchDB.
Questa caratteristica lo rende il motore DB ideale per una applicazione come Obsidian.
Per installare CouchDB, invece di predisporre un intero host, possiamo creare un container di Docker. Procediamo!
- Create una cartella couchdb contenente una cartella couchdb-data ed una couchdb-etc.
sudo mkdir couchdb
sudo mkdir couchdb/couchdb-data
sudo mkdir couchdb/couchdb-etc
- Impostate le seguenti variabili di ambiente per riutilizzarle nei prossimi comandi.
export hostname=localhost:5984
export username=%username%
export password=%password%
- Eseguite in shell il container di CouchDB.
sudo docker run --name couchdb --rm -it -e COUCHDB_USER=${username} -e COUCHDB_PASSWORD=${password} -v ${PWD}/couchdb/couchdb-data:/opt/couchdb/data -v ${PWD}/couchdb/couchdb-etc:/opt/couchdb/etc/local.d -p 5984:5984 couchdb
Attendete che le operazioni di inizializzazione si concludano, poi stoppate il container con la combinazione di tasti CTRL + C
- Una volta appurato che CouchDB non dia alcun errore, per ricreare il container e lasciarlo girare in automatico, eseguire il seguente comando docker run:
sudo docker run --name couchdb -d --restart unless-stopped -e COUCHDB_USER=${username} -e COUCHDB_PASSWORD=${password} -v ${PWD}/couchdb/couchdb-data:/opt/couchdb/data -v ${PWD}/couchdb/couchdb-etc:/opt/couchdb/etc/local.d -p 5984:5984 couchdb
- Eseguite ora il seguente comando per inizializzare CouchDB per l'utilizzo con il nostro plugin
curl -s https://raw.githubusercontent.com/vrtmrz/obsidian-livesync/main/utils/couchdb/couchdb-init.sh | bash
L'output del comando dovrebbe essere come questo
-- Configuring CouchDB by REST APIs... -->
{"ok":true}
""
""
""
""
""
""
""
""
""
<-- Configuring CouchDB by REST APIs Done!
- Modificate i diritti sulle cartelle couchdb-data e couchdb-etc assegnando la proprietà delle cartelle a root, ed assegnando i diritti di lettura/scrittura solamente a root (l'utente con cui docker esegue il container)
sudo chown 0:0 couchdb/couchdb-data couchdb/couchdb-etc
sudo chmod 700 couchdb/couchdb-data couchdb/couchdb-etc
2. Configurare HTTPS per l'utilizzo da Smartphone
- Create il seguente site su NGINX
Scegliete un FQDN da associare a couchdb. Ovviamente, avrete bisogno di un certificato SSL valido.
Nell'esempio di seguito, utilizzerò obsidiansync.firenetwork.it
server {
listen 443 ssl;
listen [::]:443 ssl http2;
server_name obsidiansync.firenetwork.it;
client_max_body_size 525M;
ssl_certificate /etc/nginx/certs/dash.firenetwork.it/fullchain.pem;
ssl_certificate_key /etc/nginx/certs/dash.firenetwork.it/privkey.pem;
location / {
proxy_pass http://indirizzo.IP.macchina.Docker:5984;
proxy_redirect off;
proxy_buffering off;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
3. Installare il plugin su Obsidian
Installazione del Plugin
Aprite Obsidian e premete sul pulsante Settings

Navigate in Plugin di terze parti e premete su Plugin della comunità → Sfoglia

Cercate ed installate il plugin Self-hosted LiveSync

Abilitare il plugin, comparirà un messaggio dove viene chiesto se si ha un Setup URI. Noi procederemo a configurare LiveSync manualmente, quindi selezionate No, I do not have

Alla prossima schermata, selezionare Set it up all manually


Configurazione
Configurazione della connessione a CouchDB
Selezionate dalla barra laterale il plugin Self-hosted LiveSync e premete in alto sull'icona del wizard 🧙🏻♂️.
Premete Start alla voce Manual Setup

Configurare la schermata coi seguenti parametri:
- Remote Type → CouchDB
- Server URI → https://FQDN.impostato.sul.reverse.proxy
- Username → l'username di CouchDB impostato nel docker compose
- Password → la password di CouchDB impostata nel docker compose
- Database Name → il nome da dare al Database di CouchDB, rigorosamente con lettere minuscole
Premere Test alla voce Test Database Connection
Se il test va a buon fine, premere Check alla voce Validate Database Configuration
Se anche questo test va a buon fine, premere su Apply per salvare la configurazione
Seguendo quanto indicato sulla pagina del progetto github del plugin, vi consiglio fortemente di abilitare anche le seguenti impostazioni, che non sono comunque obbligatorie:
- End-to-End Encryption → attiva
- Passphrase → impostare una password per criptare i dati storicizzati in CouchDB
- Path Obfuscation → attiva

Premete ora su Check alla voce Validate Database Configuration per controllare che CouchDB sia configurato correttamente.

Se necessario, premete Fix sulle righe relative ad errori di configurazione per tentare di correggerli automaticamente.
Premete infine su Fetch per leggere le impostazioni necessarie da CouchDB (se si tratta del primo dispositivo che si configura, non dovrebbe risultare niente)
Configurazione della Sincronizzazione
Andare nuovamente nelle Impostazioni, selezionare il plugin e spostarsi sulla scheda dedicata alla sincronizzazione 🔄️
Selezionare LiveSync se si vuole avere una sincronizzazione in tempo reale, oppure selezionare e configurare Periodic w/ Batch per una sincronizzazione programmata su base temporale.

Test di funzionamento
Per effettuare un test di funzionamento abbastanza banale, in assenza di un secondo dispositivo, basta:
- Creare una nota ed attendere qualche secondo.
- Chiudere Obsidian
- Accedere tramite Esplora Risorse alla cartella dove risiede localmente il Vault di Obsidian
- Eliminare la nota appena creata
- Aprire nuovamente Obsidian
Se dopo qualche secondo la nota compare nuovamente, allora la sincronizzazione funziona!

Conclusioni
Ecco fatto! Con una configurazione basata su Docker e CouchDB, abbiamo replicato la funzionalità premium di Obsidian Sync in modo gratuito e autogestito.
Ora potete sfruttare al massimo la potenza di Obsidian, combinando la sua incredibile flessibilità con la comodità di una sincronizzazione in tempo reale.


