Feb 252013
 

In passato ho provato ownCloud una buona soluzione per realizzare una soluzione personale di cloud storage per i propri file, o forse per il vostro gruppo, ma c’è anche una interessante alternativa: Seafile un altro strumento open source di sincronizzazione, tipo Dropbox , ma che è stato progettato per essere più adatto al lavoro di squadra con alcune caratteristiche che sono orientate a questo obiettivo come ad esempio:

1) Gli utenti possono creare e partecipare a gruppi, quindi condividere i file al gruppo. Questo facilita il lavoro di squadra.
2) I file sono organizzati in librerie, ognuna sincronizzato in maniera selettiva con il client sul proprio computer. Le librerie possono essere sincronizzati con qualsiasi cartella locale.
3) funzioni di collaborazione on-line per i file, come anteprima dei file PDF ed Office e la possibilità di lasciare commenti.

Con seafile è possibile creare un servizio di condivisione e sincronizzazione di file per il vostro team con facilità.



Internal

Seafile usa Il modello di controllo di versione di GIT, ma semplificato per la sincronizzazione automatica, e non dipende da GIT. Ogni libreria è come un repository GIT. Ha la sua storia unica, che consiste in un elenco di commit. Un commit punta alla radice di uno snapshot del file system. Lo snapshot è composto da directory e file. I file sono ulteriormente suddivise in blocchi per un trasferimento di rete ed utilizzo dello storage più efficiente

Differenze da git:

  1.      La sincronizzazione automatica.
  2.      I client non conserva la cronologia dei file, evitando così il sovraccarico di memorizzazione dei dati due volte. GIT non è efficiente per file di grosse dimensioni (come le immagini).
  3.      I file sono ulteriormente suddivise in blocchi per il trasferimento in rete e l’utilizzo dello storage più efficiente.
  4.      Il trasferimento dei file può essere ripreso.
  5.      Supporta backend di memorizzazione differenti lato server.
  6.      Supporta il download da server di più blocchi per accelerare il trasferimento di file.
  7.      La gestione dei conflitti tra file è più user-friendly e simile a Dropbox (Aggiunge nome dell’utente come suffisso al file in conflitto).

Installazione

I sorgenti di questo progetto sono ospitati su github, o in alternativa si può scaricare un archivio .tar.gz dalla pagina di download .

In questo esempio farò un installazione su un server CentOS 6/RHEL 6 a 64 bit.

cd /tmp/
wget http://seafile.googlecode.com/files/seafile-server_1.4.5_x86-64.tar.gz

Pre-requisiti

Prima di proseguire è il momento di installare i software necessari a Seafile (versione server).
Il pacchetto del server Seafile richiede i seguenti pacchetti installati su sistema

  • python 2.6 or 2.7
  • python-setuptools
  • python-simplejson
  • python-imaging
  • sqlite3

Per installarli su CentOS/RHEL 6 è possibile utilizzare il seguente comando:

yum -y install sqlite python-simplejson python-setuptools python-imaging

Ora decomprimere il pacchetto tar che abbiamo scaricato nella directory /tmp e creiamo una struttura per mantenere i sorgenti ed il file di configurazione

cd /opt/
mkdir seafile  
mv /tmp/seafile-server_* seafile
cd seafile
tar -xzf seafile-server_*
mkdir installed
mv seafile-server_* installed

Questa sequenza di comandi creerà una struttura come questa:

#tree seafile -L 2
seafile
├── installed
│   └── seafile-server_1.4.5_x86-64.tar.gz
└── seafile-server-1.4.5
    ├── reset-admin.sh
    ├── runtime
    ├── seafile
    ├── seafile.sh
    ├── seahub
    ├── seahub.sh
    ├── setup-seafile.sh
    └── upgrade

Il vantaggio di questa configurazione è che siamo in grado di mettere tutti i file di configurazione per il server Seafile all’interno della cartella “seafile”.
Quando eseguirà l’aggiornamento a una nuova versione di Seafile, sarà sufficiente decomprimere il pacchetto più recente nella directory “seafile”. In questo modo è possibile riutilizzare i file di configurazione esistenti nella directory “seafile” e non è necessario configurare tutto di nuovo.


script Setup

Ora è il momento di impostare il nostro server di seafile, come prima cosa creare un nuovo utente che verrà utilizzato per far funzionare i servizi seafile:

useradd -d /opt/seafile seafile
chown -R seafile. /opt/seafile
su - seafile
cd /opt/seafile/seafile-server-1.4.5
./setup-seafile.sh

Una procedura guidata testuale vi chiederà alcune informazioni per la corretta configurazione del server seafile:

-----------------------------------------------------------------
This script will guide you to config and setup your seafile server.
 
Make sure you have read seafile server manual at 
 
	https://github.com/haiwen/seafile/wiki
 
Press [ENTER] to continue
-----------------------------------------------------------------
 
Checking packages needed by seafile ...
 
Checking python on this machine ...
Find python: python2.6
 
  Checking python module: setuptools ... Done.
  Checking python module: python-simplejson ... Done.
  Checking python module: python-imaging ... Done.
  Checking python module: python-sqlite3 ... Done.
 
Checking for sqlite3 ...Done.
 
Checking Done.
 
What do you want to use as the name of this seafile server?
Your seafile users would see this name in their seafile client.
You can use a-z, A-Z, 0-9, _ and -, and the length should be 3 ~ 15
[server name]: linuxaria               
 
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]: www.linuxaria.com
 
What tcp port do you want to use for ccnet server?
10001 is the recommended port.
[default: 10001 ] 
 
Where do you want to put your seafile data? 
Note: Please use a volume with enough free space.
[default: /opt/seafile/seafile-data ] 
 
This is your config information:
 
server name:        linuxaria
server ip/domain:   www.linuxaria.com
server port:        10001
...

A questo punto basta premere invio e si dovrebbe vedere la fine della prima fase, nella seconda parte vi verrà chiesto un indirizzo email e una password per Seahub, l’interfaccia web per il server seafile e alla fine si dovrebbe avere una sintesi come questa:

-----------------------------------------------------------------
Your seafile server configuration has been finished successfully.
-----------------------------------------------------------------
 
run seafile server:     ./seafile.sh { start | stop | restart }
run seahub  server:     ./seahub.sh  { start  | stop | restart  }
 
-----------------------------------------------------------------
If you are behind a firewall, remember to allow input/output of these tcp ports:
-----------------------------------------------------------------
 
port of ccnet server:         10001
port of seafile server:       12001
port of seafile httpserver:    8082
port of seahub:               8000

Far partire il Seafile Server
Ora si può diventare l’utente seafile ed avviare il server:

su - seafile
/opt/seafile/seafile-server-1.4.5/seafile.sh start
/opt/seafile/seafile-server-1.4.5/seahub.sh start

Dopo questi comandi 2, è possibile aprire un browser Web e visitare:

http://www.linuxaria.com:8000/

si verrà reindirizzati alla pagina di accesso. Immettere il nome utente e la password che avete fornito durante l’installazione di Seafile:

seafile

Dopo il login sarete rediretti alla pagina Myhome in cui è possibile creare librerie, queste sono utilizzate in seafile per organizzare i file. Ad esempio, è possibile crearne una per ciascuno dei vostri progetti. Ogni libreria può essere sincronizzata e condivisa separatamente.

seafile02

Congratulazioni! Ora avete correttamente configurato il vostro server privato Seafile.

Seafile client

I client per Seafile sono disponibili per Windows, Mac OS X, Linux (Ubuntu 12,04 o più recente), Android e Ipad / Iphone.
Oppure è possibile installare il client, direttamente dai file sorgenti.

Al momento il client Seafile Linux è costituito da un AppIndicator che visualizza lo stato di sincronizzazione e consente di aprire il client (nel browser), disabilitare la sincronizzazione automatica o riavviare Seafile, visualizzare le notifiche di sincronizzazione, ed un’interfaccia web piuttosto semplice.

Questa è solo una configurazione di base, ma ci sono altre opzioni, come l’utilizzo di mysql server o Apache/nginx come server web, opzioni che dovrebbero permettere di scalare facilmente il numero di utenti che possono utilizzare contemporaneamente il servizio:

Riferimenti:

Seafile: Robust File Synchronization And Collaboration Tool That You Can Run On Your Linux Server

Popular Posts:

Flattr this!

  5 Responses to “Installazione di Seafile, una alternative open source a Dropbox per gruppi di lavoro”

  1. When you upgrade to a new version of Seafile, you can simply untar the latest package into “linuxaria” directory. In this way you can reuse the existing config files in “seafile” directory and don’t need to configure everything again.
    What is this “linuxaria” directory of which you speak? Looks like something got mangled in edit.

    • Ouch, sorry I made an example with /opt/linuxaria, but then I’ve thought that a generic seafile would have been beter.

      So it’s seafile.

      Now correcting the article.

      Thanks Tom.

  2. Thank you for this great How-To. I have never heard of SeaFile before, but feel this will work a little better than OwnCloud in my situation. Thank you very much!

  3. Does anyone know of a better sync client for windoze and Linux? I have tried Rsync, Unison but its too slow for larger files. Also webdav used in ownCloud may be compatible, but chokes on big files. What is the solution for syncing large GB files for a digital signage or an offsite backup? I can’t seem to get it faster than 147kbps using rsync over ssh

  4. hi,

    you’re saying that seafile supports a multi-server setup. do you perhaps now where to find a guide or some other documentation about this. Cause i’m wondering if its actually implemented already. If so i would really like to set this up on our own system.

    thanks in advance,
    Tim

 Leave a Reply

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>

(required)

(required)

*