Sponsor

In the past I’ve tested ownCloud a good solution for hosting a personal solution of cloud storage for your files, or perhaps your team, but there is also an interesting alternative: Seafile another open source file synchronization tool, it comes with Dropbox-like file syncing, but is designed to be better suited to teamwork with some of the features that are oriented to this such as:

1) Users can create and join groups, then share files to the group. This makes it convenient for teamwork.
2) Files are organized into libraries, each be selectively synced to your computer. Libraries can be synced with any local folders.
3) Online file collaboration features, such as PDF and Office file preview and file commenting.

You can build a file sharing and syncing service for your team on your servers with ease.

Internal

Seafile uses GIT’s version control model, but simplified for automatic synchronization, and doesn’t depend on GIT. Every library is like a GIT repository. It has its own unique history, which consists of a list of commits. A commit points to the root of a file system snapshot. The snapshot consists of directories and files. Files are further divided into blocks for more efficient network transfer and storage usage.

Differences to GIT:

Automatic syncing.

Clients do not store file history, thus avoids the overhead of storing data twice. GIT is not efficient for larger files (such as images).

Files are further divided into blocks for more efficient network transfer and storage usage.

File transfer can be resumed.

Support different storage backends on the server side.

Support downloading from multiple block servers for accelerating file transfer.

More user-friendly file conflicts handling similar to Dropbox (Add user’s name as suffix to conflicted file).

Installation

The sources of this project are hosted on github, or as alternative you can grab a .tar.gz from official download page.

In this example I’ll do an installation on a Centos 6/RHEL 6 server at 64 bit.

The benefit of this layout is that we can place all the config files for Seafile server inside “seafile” directory.
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.

Setup script

Now it’s time to setup our seafile server, as first thing create a new user that will be used to run the seafile services:

A textual wizard will ask some information for the correct setup of your seafile server:

-----------------------------------------------------------------
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
...

Now, just press enter and you should see the successfull end of the first phase, in the second part you’ll be asked for an email address and a password for Seahub, the web interface for seafile server and at the end you should a summary like this one:

you will be redirected to the Login page. Enter the username and the password you provided during Seafile setup:

After the login you will be returned to the `Myhome` page where you can create libraries, these are used in seafile to organize your files. For example, you can create one for each of your projects. Each library can be synchronized and shared separately.

Congratulations! Now you have successfully setup your private Seafile server.

Seafile client

Seafile client are available for Windows, Mac OS X, Linux (ubuntu 12.04 or newer), android and Ipad/Iphone.
Or it’s possible to install the client, directly from the source.

At the moment the Seafile Linux client consists of an AppIndicator/tray icon that displays the sync status and lets you open the client (in the browser), disable autosync or restart Seafile, displays sync notifications, and a pretty basic web interface.

This is just a basic setup but there are other options, such as using mysql server or Apache/nginx as webserver that should allow to scale up easily the number of users that can use simultaneously your service:

5 Responses to “Installation of Seafile, open source Dropbox alternative for teams”

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.

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

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.