Server di sincronizzazione Obsidian self-hosted e gratuito, e app web

InventTasks resta local-first quando la sincronizzazione è attiva: i dispositivi conservano file normali e funzionano offline, mentre il tuo server self-hosted trasferisce le modifiche, mantiene una cronologia limitata, fornisce backup e ospita l'app Web. Il server è destinato ai dispositivi di una persona oppure a più account utente isolati, non alla modifica simultanea della stessa attività da parte di un team.

Distribuire il server#

Scarica il pacchetto server pronto all'uso da https://inventtasks.solidinvent.pl/download/inventtasks-server.zip. Include Docker Compose, la configurazione di Caddy, script di manutenzione e istruzioni dettagliate per la distribuzione. Il pacchetto scarica l'immagine multi-architettura pubblicata ghcr.io/solidinvent-dev/inventtasks-server:latest; fissa un tag di release specifico se desideri aggiornamenti prevedibili. Il container è in ascolto sulla porta 8480 e memorizza i dati SQLite e i blob dei file in /data.

  1. Crea un volume persistente per /data.
  2. Al primo avvio imposta ADMIN_USER e una ADMIN_PASSWORD di almeno otto caratteri. Questi valori creano il primo account soltanto se il database non contiene ancora account.
  3. Posiziona Caddy, Traefik, Nginx o un altro reverse proxy davanti al container. Usa HTTPS ogni volta che il traffico esce dal computer locale o da una rete privata attendibile; i token dei Workspace sono credenziali bearer.
  4. Apri l'URL del server, accedi e crea un oggetto Task manager o Vault. Il relativo token di sincronizzazione viene mostrato una sola volta; salvalo in un gestore di password. La rotazione invalida il token precedente.

L'opzione di emergenza ADMIN_RESET=1 reimposta al successivo avvio la password di ADMIN_USER usando il valore di ADMIN_PASSWORD; rimuovila e riavvia subito dopo. Imposta ENABLE_VAULT_SYNC=0 se vuoi disabilitare la creazione di nuovi oggetti Vault. Tra le impostazioni di capacità utili ci sono MAX_FILE_MB (50 MB per impostazione predefinita) e MAX_WORKSPACE_MB (senza limite per impostazione predefinita).

La dashboard può esportare un file ZIP con i file correnti o con l'intera cronologia, importare uno ZIP in modalità merge o replace, ripristinare file eliminati ed eseguire backup manuali o pianificati. I backup pianificati possono essere eseguiti ogni giorno a un'ora fissa oppure ogni N ore e conservare il numero di copie scelto in BACKUP_DIR. Il pacchetto di distribuzione include inoltre uno strumento di esportazione leggibile che converte /data o un backup del server in un normale vault Obsidian, facoltativamente con la cronologia, solo i contenuti, link relativi, l'ora di scadenza nei nomi dei file e intestazioni in inglese o polacco.

Per un backup affidabile dell'infrastruttura, usa queste funzioni di esportazione e backup oppure crea uno snapshot coerente di /data mentre il servizio è arrestato. Non fare affidamento sulla semplice copia della directory di un database SQLite in esecuzione senza garantire la coerenza dello snapshot. Controlla /healthz dopo la distribuzione e gli aggiornamenti.

Sincronizzare un Workspace InventTasks#

Crea sul server un oggetto di tipo Task manager, quindi apri Impostazioni → InventTasks → Sincronizzazione file (self-hosted) per il Workspace locale:

Campo Significato
Abilita sincronizzazione Avvia la riconciliazione in background dei file sotto la radice di questo Workspace InventTasks
URL del server Per esempio, https://sync.example.com
Token API Il token di sincronizzazione mostrato una volta nella dashboard del server; non è una chiave della External API
ID Workspace sul server L'ID dell'oggetto Task manager; usa lo stesso ID su tutti i dispositivi che lo condividono
Intervallo controllo completo Scansione completa periodica ogni 1–120 minuti; le modifiche locali vengono accodate prima
Aggiornamenti in tempo reale Mantiene una connessione WebSocket per rilevare rapidamente le modifiche provenienti dagli altri dispositivi
Mantieni copie dei conflitti Dopo un conflitto scrive anche la versione locale perdente accanto al file

Usa Prova connessione, quindi Sincronizza ora. Al primo collegamento tra due parti non vuote, InventTasks chiede se unire i dati, sovrascrivere il server, sovrascrivere i file locali o annullare. Unisci è in genere la scelta più sicura. Un nuovo oggetto server vuoto accetta direttamente il primo caricamento locale.

Quando due dispositivi modificano lo stesso file, vince la versione con la data di modifica più recente e il contenuto perdente viene conservato nella cronologia versioni del server. La cronologia è limitata: i valori predefiniti sono 30 giorni e 20 versioni per percorso, configurabili dall'operatore del server. Una protezione dalle eliminazioni di massa mette in pausa un download sospetto e consente di ripristinare i file del server, accettare l'eliminazione locale o decidere in seguito. Le copie di conflitto opzionali offrono un'ulteriore protezione locale, ma non sostituiscono i backup.

Sfoglia e ripristina le versioni precedenti da Impostazioni → Sincronizzazione file → Cronologia versioni oppure tramite il comando di ripristino nella palette. Quando ripristini una versione, InventTasks conserva prima nella cronologia il contenuto corrente che verrà sostituito, se i limiti di conservazione lo consentono.

Sincronizzazione self-hosted gratuita dell'intero vault Obsidian#

Vault sync è indipendente dal Workspace delle attività e può essere utilizzato anche senza configurare alcun Workspace InventTasks. Offre un'alternativa gratuita e self-hosted a Obsidian Sync per il resto del vault: note, allegati, immagini e altri file. Le radici dei Workspace InventTasks, .git, il cestino e lo stato di esecuzione di InventTasks sono esclusi, così i file delle attività non vengono trasferiti due volte.

  1. Crea sul server un oggetto di tipo Vault e copia il relativo token, mostrato una sola volta.
  2. Apri Impostazioni → InventTasks → Vault sync (self-hosted) su ogni dispositivo partecipante e inserisci l'URL del server, il token e l'ID dell'oggetto Vault.
  3. Controlla le impostazioni facoltative di inclusione ed esclusione:
Opzione Significato
Sync Obsidian settings (.obsidian) Include temi, snippet e impostazioni supportate dell'app; il layout del Workspace e i file di cache specifici del dispositivo restano esclusi. Disattivato per impostazione predefinita
Sync community plugins (.obsidian/plugins) Include codice e dati degli altri plugin; impostazioni e credenziali InventTasks specifiche del dispositivo restano escluse. Disattivato per impostazione predefinita
Skip new files larger than (MB) Limite di caricamento locale per i file che il server non ha ancora visto; 0 significa nessun limite sul lato plugin, ma il limite del server continua ad applicarsi
Excluded paths Un modello per riga: Folder/ ignora un sottoalbero, *.mp4 corrisponde a quell'estensione e # avvia un commento

Vault sync usa le stesse scelte iniziali, gli aggiornamenti in tempo reale, la risoluzione dei conflitti in favore dell'ultima scrittura, la cronologia limitata, gli strumenti di ripristino e la protezione dalle eliminazioni di massa della sincronizzazione del Workspace delle attività. Evita di sincronizzare contemporaneamente gli stessi file con InventTasks Vault sync e un altro servizio bidirezionale come Obsidian Sync.

App Web e browser del Vault#

Lo stesso container pubblica l'app Web in /. Accedi con il nome utente e la password di un account; i cookie di sessione sono HttpOnly. Gli account sono isolati e ciascuno può possedere più oggetti Task manager e Vault.

Un oggetto Task manager apre l'interfaccia InventTasks con List, Board, Calendar, Table, Gantt, Timeline, Docs, ricerca e modifica basate sulla copia del server. Gli aggiornamenti in tempo reale riflettono le modifiche degli altri client connessi. Al momento l'app Web non offre notifiche esterne, sincronizzazione calendario, backup incrementali del plugin o link obsidian:// e non espone un editor .md grezzo per le risorse delle attività.

Un oggetto Vault apre un browser di file. Può mostrare l'anteprima di Markdown, immagini, audio, video e PDF; creare note e cartelle; modificare Markdown o testo; caricare, scaricare, rinominare, spostare ed eliminare file; seguire wikilink; consultare o ripristinare le versioni dei file. Queste operazioni modificano la copia del server e vengono sincronizzate con i dispositivi configurati.

API esterna#

Per le automazioni, abilita la External API separatamente su ciascun oggetto del server scegliendo la modalità Off, Read-only o Full. Usa una chiave dedicata nel formato ITX.…, non il token di sincronizzazione; la chiave viene mostrata una sola volta e memorizzata sul server sotto forma di hash. La console API si trova in /api-console, la specifica OpenAPI 3.1 in /api/ext/v2/openapi.json e la guida completa nella documentazione API. Mantieni disabilitato l'accesso API quando non serve, usa la modalità con i privilegi minimi necessari e ruota qualsiasi chiave che potrebbe essere stata esposta.