Unnikked - Esperienze personali in campo informatico

Seafile – Cloud Storage Open Source e Self Hosted

Seafile è un sistema di archiviazione cloud open source con le caratteristiche di protezione privacy e supporto per gruppi di lavoro.

Le collezioni di file sono chiamate librerie e ogni libreria può essere sincronizzata separatamente. Una libreria può anche essere crittografata attraverso una password scelta dall’utente.

Seafile permette anche agli utenti di creare gruppi e facilita la condivisione dei file tra i gruppi stessi.

Caratteristiche di Seafile

Seafile dispone delle seguenti caratteristiche:

Sincronizzazione file

  • Sincronizzazione selettiva dei file delle librerie. Ogni libreria può essere sincronizzata separatamente.
  • Gestione della correttezza dei conflitti dei file basata sulla storia invece che sul timestamp.
  • Trasferimento solo per i file che non sono nel server, i trasferimenti incompleti posso essere ripresi.
  • Sincronizzazione con due o più server.
  • Sincronizzazione con le cartelle esistenti.
  • Sincronizzazione delle sottocartelle.

File sharing e collaborazione

  • Condivisione dei file tra utenti o gruppi.
  • Condivisione delle sottocartelle tra utenti o gruppi.
  • Download tramite link protetti da password.
  • Link per upload.
  • Controllo della versione tramite numeri di revisione configurabili.
  • Ripristino dei file cancellati dal cestino, storia o istantanee.

Protezione privacy

  • Crittografia di librerie tramite password scelta dall’utente.
  • Crittografia lato client quando viene usato la sincronizzazione desktop.

Meccanismo interno

Il modello di controllo di versione di Seafile è basato su Git, ma è semplificato per la sincronizzazione automatica per cui non richiede che Git sia installato.

Ogni libreria di Seafile si comporta come una repository di Git. Ha la sua storia unica che consiste in una lista di commit. Un commit punta alla radice dell’istantanea del file system.

Una istantanea consiste in cartelle e file. I file sono divisi ulteriormente in blocchi per rendere il trasferimento dei file più efficiente e ottimizzare l’uso del disco.

Le differenze da Git sono:

  • Automatic synchronization.Sincronizzazione automatica.
  • I client non salvano la storia del file, così evitano l’overhead di salvare più dati. Git non è efficiente per il salvataggio di grandi file come immagini.
  • I file sono divisi ulteriormente in blocchi per rendere il trasferimento dei file più efficiente e ottimizzare l’uso del disco.
  • Il trasferimento dei file può essere messo in pausa e ripreso.
  • Supporto per diversi tipi di archiviazione su lato server.
  • Supporto per il download da più blocchi server per accelerare il trasferimento dei file.
  • Risoluzione dei conflitti più user-friendly (Seafile aggiunge il nome utente come suffisso per i file in conflitto).
  • Gestione progressiva dei file durante la modifica mentre l’auto-sincronizzazione è attiva. Git non è stato progettato per funzionare in questi casi.

seafile-dashboard

Installazione di Seafile

Prima di procedere con il download del pacchetto server è necessario installare alcune dipendenze:

sudo apt-get install python-setuptools python-simplejson python-imaging sqlite3
 

Una volta installate le dipendenze scarichiamo il pacchetto del server, per installare le ultime versioni guarda qui:

wget https://bitbucket.org/haiwen/seafile/downloads/seafile-server_4.1.2_x86-64.tar.gz

Tramite lo strumento tar estraiamo il pacchetto appena scaricato:

tar xvf seafile-server_4.1.2_x86-64.tar.gz

Entriamo nella directory estratta:

cd seafile-server-4.1.2/

E lanciamo lo script di installazione:

./setup-seafile.sh 

seafile-setup

Dopo alcuni controlli sulle dipendenze ci verrà chiesto di dare un nome al server.

seafile-server-name

Successivamente bisogna specificare a quale indirizzo IP o nome dominio il server fa riferimento:

What is the ip or domain of this server?
For example, www.mycompany.com, or, 192.168.1.101

[This server's ip or domain]:seafile.local

Chiederà di specificare le porte per il server ccnet.

What tcp port do you want to use for ccnet server?
10001 is the recommended port.
[default: 10001 ]

Una directory per il salvataggio dei dati.

Where do you want to put your seafile data? 
Note: Please use a volume with enough free space.
[default: /home/vagrant/seafile-data ] 

La porta TCP presso il quale il server si metterà in ascolto.

What tcp port do you want to use for seafile server?
12001 is the recommended port.
[default: 12001 ] 

La porta TCP presso il quale il web server si metterà in ascolto.

What tcp port do you want to use for seafile httpserver?
8082 is the recommended port.
[default: 8082 ] 

Mostrerà un riepilogo dei dati inseriti fin ora.

seafile-configuration

L’installazione procederà fornendo alcune informazioni finali generate durante l’installazione.

Per avviare il server bisogna eseguire dalla cartella principale di progetto:

./seafile.sh { start | stop | restart }

Per avviare l’interfaccia web invece:

./seahub.sh  { start <port> | stop | restart <port> }

Al primo avvio di seahub verranno chieste alcune informazioni per la configurazione di un account amministratore per l’interfaccia web.

seafile-seahub-admin

Una volta avviato seafile e seahub è possibile collegarsi all’interfaccia ed iniziare ad usare l’applicazione.