Featured image

Quando un Tool Non Mantiene le Promesse Link to heading

Nell’articolo su AFFiNE ero partito con entusiasmo: una piattaforma all-in-one, self-hosted, che combinava note, whiteboard e database. Sulla carta sembrava la soluzione perfetta. Dopo mesi di utilizzo quotidiano, la realtà si è rivelata diversa.

Perché Ho Abbandonato AFFiNE Link to heading

AFFiNE è un progetto ambizioso e con buone intenzioni, ma al momento presenta limitazioni concrete che lo rendono difficile da adottare come strumento principale.

Warning

Limitazioni riscontrate con AFFiNE

  • Esportazione dati limitata: Non esiste un modo semplice per esportare in massa tutti i documenti. L’export funziona documento per documento, rendendo una migrazione verso altri tool un processo manuale e tedioso.
  • Maturità del progetto: Funzionalità instabili, aggiornamenti che occasionalmente rompono configurazioni esistenti, e un’esperienza utente che cambia frequentemente tra versioni.
  • Database inutilizzabile da mobile: Impossibile aggiungere righe ai database da smartphone. Per uno strumento che dovrebbe essere il centro organizzativo della vita digitale, non poter inserire dati al volo dal telefono è un limite grave.
  • Vendor lock-in mascherato: Nonostante sia open source, il formato proprietario dei dati crea di fatto una dipendenza dal tool. Open source non significa automaticamente open data.

La lezione imparata: un software può essere open source nel codice ma chiuso nei dati. La vera libertà digitale richiede formati aperti e portabili.

Obsidian: File Markdown e Nient’Altro Link to heading

La scelta è ricaduta su Obsidian per una ragione fondamentale: i dati sono semplici file Markdown in una cartella del filesystem. Nessun database, nessun formato proprietario, nessun server da mantenere.

Info

Perché Obsidian

  • File Markdown puri: Ogni nota è un file .md leggibile con qualsiasi editor di testo
  • Zero lock-in: Se domani Obsidian chiude, i file rimangono perfettamente utilizzabili
  • Ecosistema plugin maturo: Community attiva con migliaia di plugin per ogni esigenza
  • Funziona offline: Nessuna dipendenza da server o connessione internet
  • Disponibile su tutte le piattaforme: Desktop (Linux, Mac, Windows) e mobile (Android, iOS)

Obsidian non è open source, ma questo è un compromesso accettabile: i dati sono in un formato completamente aperto. Anche senza Obsidian, i file restano accessibili e utilizzabili. Il vero rischio di lock-in non sta nel software, ma nel formato dei dati.

Installazione Link to heading

L’installazione è banale: scaricare Obsidian dal sito ufficiale, installarlo, e puntarlo a una cartella. Quella cartella diventa il “vault” – l’intero archivio di note. Non serve configurare database, container Docker o servizi di backend.

Sul telefono, l’app Obsidian per Android o iOS funziona allo stesso modo: seleziona una cartella e inizia a scrivere.

Il Problema della Sincronizzazione Link to heading

Obsidian offre un servizio di sincronizzazione a pagamento (Obsidian Sync) che funziona bene, ma contraddice la filosofia homelab: perché affidare la sync dei propri file a un servizio cloud quando abbiamo un’infrastruttura perfettamente funzionante?

La soluzione: Syncthing, un tool di sincronizzazione peer-to-peer, open source, che funziona senza server centrali.

Syncthing: Sincronizzazione Peer-to-Peer Link to heading

Syncthing sincronizza cartelle tra dispositivi in modo diretto, senza passare da alcun cloud. Ogni dispositivo comunica con gli altri tramite protocollo crittografato, e i dati non transitano mai su server di terze parti.

Info

Come funziona Syncthing

  • Ogni dispositivo ha un Device ID univoco (una chiave crittografica)
  • Si configurano cartelle condivise tra due o più dispositivi
  • La sincronizzazione avviene direttamente tra i device, in tempo reale quando sono raggiungibili
  • I dati sono crittografati in transito (TLS)
  • Supporta discovery locale (LAN) e remoto tramite relay server pubblici (solo per stabilire la connessione, i dati restano diretti quando possibile)

Setup su Desktop (Linux/Mac) Link to heading

Su Linux, Syncthing è disponibile nei repository di praticamente ogni distribuzione. Su Mac si installa via Homebrew:

# Linux (Debian/Ubuntu)
sudo apt install syncthing

# Mac
brew install syncthing

Dopo l’installazione, avviare Syncthing:

syncthing

L’interfaccia web è raggiungibile su http://127.0.0.1:8384. Da qui si gestisce tutto: aggiunta dispositivi, configurazione cartelle, monitoraggio stato.

Configurazione Base Link to heading

La configurazione è semplice:

  1. Avviare Syncthing su entrambi i dispositivi
  2. Scambiare i Device ID: ogni dispositivo mostra il proprio ID nella dashboard. Aggiungere il Device ID dell’altro dispositivo su ciascuno
  3. Condividere la cartella: su uno dei dispositivi, aggiungere la cartella del vault Obsidian come “Shared Folder” e selezionare l’altro dispositivo come destinatario
  4. Accettare la condivisione: sull’altro dispositivo apparirà una notifica per accettare la cartella condivisa. Scegliere il path locale dove salvare i file
  5. Attendere la sincronizzazione: Syncthing inizierà a trasferire i file automaticamente
Tip
Consiglio pratico: Al primo collegamento tra due dispositivi, la sincronizzazione iniziale può sembrare lenta. Syncthing indicizza tutti i file prima di trasferirli. Le sincronizzazioni successive sono quasi istantanee perché trasmettono solo le differenze.

Setup su Android Link to heading

Syncthing per Android è disponibile su F-Droid (consigliato) e Google Play. L’app si chiama Syncthing-Fork, un fork mantenuto attivamente dalla community che ha sostituito l’app originale ormai non più aggiornata.

F-Droid: Syncthing-Fork
Google Play: Syncthing-Fork

Una volta installata, la configurazione segue lo stesso principio: scambiare Device ID con il desktop e condividere la cartella del vault.

Warning
Attenzione ai permessi Android Syncthing-Fork necessita dell’accesso completo allo storage per funzionare correttamente. Nelle versioni recenti di Android, è necessario concedere il permesso “Accesso a tutti i file” nelle impostazioni dell’app. Senza questo permesso, la sincronizzazione potrebbe fallire silenziosamente.

Consigli di Configurazione per Android Link to heading

L’uso di Syncthing su Android richiede qualche accorgimento per bilanciare sincronizzazione e consumo batteria.

Tip

Ottimizzazione batteria Android

  • Disabilitare l’ottimizzazione batteria per Syncthing-Fork: Impostazioni Android –> App –> Syncthing-Fork –> Batteria –> “Nessuna restrizione”. Senza questa impostazione, Android uccide il processo in background e la sincronizzazione non avviene.
  • Run Conditions: Nelle impostazioni di Syncthing-Fork, configurare le condizioni di esecuzione. Consiglio di attivare la sincronizzazione solo su WiFi per evitare consumi dati mobili, e di tenere la sincronizzazione attiva anche con batteria scarica se il vault non è troppo grande.
  • Cartella del vault su storage interno: Posizionare il vault Obsidian nella memoria interna del telefono (es. /storage/emulated/0/Obsidian/MioVault), non su SD card. Le performance di sincronizzazione su SD card sono significativamente peggiori.
Note
Conflitti di sincronizzazione: Se modifichi la stessa nota contemporaneamente su due dispositivi, Syncthing non sovrascrive ma crea un file di conflitto (es. nota.sync-conflict-20260204.md). Basta aprire entrambi i file, decidere quale versione tenere, e cancellare il conflitto. In pratica, con un utente singolo, i conflitti sono rarissimi.

Workflow Quotidiano Link to heading

Il flusso di lavoro risultante è naturale:

  1. Desktop: Apro Obsidian, scrivo note, organizzo progetti. I file vivono in una cartella locale.
  2. Telefono: Apro Obsidian su Android, le note sono già sincronizzate. Posso aggiungere appunti al volo, checklist, idee.
  3. Syncthing: Lavora in background, sincronizza le modifiche tra i dispositivi in pochi secondi quando sono sulla stessa rete, o attraverso relay quando sono fuori casa.

Non serve pensarci: funziona e basta. Nessun account cloud, nessun servizio da pagare, nessun dato che esce dal perimetro dei propri dispositivi.

Lezioni Imparate Link to heading

Il passaggio da AFFiNE a Obsidian ha rinforzato un principio chiave dell’approccio homelab: la semplicità vince. Un’app che lavora su file Markdown sincronizzati peer-to-peer è più affidabile, più portabile e più resiliente di un’architettura con database PostgreSQL, Redis e container Docker.

Non sempre la soluzione più sofisticata è quella migliore. A volte, file di testo e una buona sincronizzazione sono tutto ciò che serve.