Skip to main content

Seafile, a self-hosted Dropbox alternative

Seafile is an open-source alternative to Cloud drive services like Dropbox, OneDrive (formerly Skydrive), Google Drive, etc. However those services often require you to accept their terms and conditions in order to authorize the provider to access your private data… which is why I prefer to host my own solution. Remember when a product is free, it is often because YOU are the product… It is never too late to take control back of your privacy and you can build & manage your own Dropbox-like solution thanks to Seafile !

The desktop client is light and the interface simple. It displays the list of librairies (owned by you or shared by another user), synchonize it automatically and that’s pretty much it. You cannot do much with the client appart from synching libraires which keeps the client easy to use. The advanced features like versioning, sharing, etc are available from Seafile’s server UI. The desktop client is available on Windows, Mac OS X and Linux and there is also a mobile app available on iOS and Android. I have only tested the iOS one which is fine but some users may find annoying the lack of offline synchronization.

Seafile desktop clientIf you feel like testing Seafile before setting up your own server (which is not really complicated) you can always try their free offer here. You can also stay with me a little bit more to get through an overview of Seafile server.

I host my Seafile instance on a dedicated server running on an Intel Atom N2800, 2GB of RAM and a 500 GB hard drive. Its footprint is really small and only consumes a few MB of RAM. You can even host it on a Raspberry Pi as they have a specific package for it. Compressing large file with Seafile is the only CPU-intensive operation I noticed. It took a few minutes on my server to compress a 1 GB file which is acceptable given it relies on a low consumption CPU meant for mobile usage (Intel Atom).

Seafile server’s UI is great. It is simple, minimal and reactive. There is no fancy or useless features and it is easy to understand. After logging in, you will land on the homepage displaying your librairies:

Seafile server

You can notice a small lock under “My secured library” – that’s because it is encrypted. You need the passphrase to open it which is different from your seafile’s password. The data is encrypted on the server side so if someone hacks your server, he won’t be able to access your files easily.

Browsing a librairy is simple, just click on it and the content will be displayed. It is possible to keep an history of the modifications and customize the retention period for each library. If you want to restore a previous version of a file, just click retore and Seafile will list all the versions available:

Seafile file historyOn top of that Seafile’s developpers use an algorithm called Content Defined Chunking to improve storage efficiency. It means activating history on a library may not increase significantly the storage consumed. Even better, I noticed my users are storing a total of 51 GB of data but Seafile uses around 46 GB on my server thanks to their deduplication mechanism.

It is possible to share a library, folders or files with users or groups of users registered on your Seafile server. You can also generate a public link so they can download or upload files without registering. It is a great way to quickly share files with friends who don’t have an account on your server.

I am not going to go through every feature as I have presented the one that are the most usefull to me but Seafile has a lot more to offer. I think a great tool to collaborate (I wish my company was using it…), it is lightwieght, simple and reliable. The development around Seafile is very active and the team brought great enhancements to their product over the last year. They made a great work to keep it simple and full of those little features that make your life easier. They also did a very good job with the documentation and you can find a lot of details on their website. Install Seafile server, create virtualhost for Nginx / Apache, enable https, configure your firewall, tweaking server conf… everything is explained step by step in the manual. If you feel like trying it, just keep reading and follow the tutorial below !


This tutorial has been created for Debian Wheezy but should work on most Linux distributions.
1) Install dependencies (as root)

2) Create a user for Seafile, download and install it

Visit to get the link to the latest version.

Follow the instructions of the install script to complete setup.

3) Start Seafile server:

You will be asked to create an admin account.

You can now access Seafile by browsing to http://your-server-ip:8000.


Virtualhost configuration

If you prefer to configure a reverse proxy (Apache or Nginx) to access Seafile using a domain name and a SSL connexion, follow the instructions below (don’t forget to replace with your domain).

1) Generate self-signed certificates
2) Configure your domain under Seafile (as seafile user)

Edit /home/seafile/ccnet/ccnet.conf and modify the value of SERVICE_URL as below (replace with your domain)

Then edit /home/seafile/ and add the line below (replace with your domain):

Finally, restart Seafile and enable fastcgi

3) NGINX configuration

Create a virtualhost (e.g. under /etc/nginx/sites-enabled/, copy the following content (replace with your domain), restart Nginx and that’s it !

3-bis) Apache configuration

If you prefer to use Apache instead of Nginx, follow the instructions below. Install dependencies (as root)

Enable mod_rewrite, mod_fastcgi, apache proxy and ssl.

Enable fastcgi in Apache config file under /etc/apache2/apache2.conf:

This is valid for Apache 2.2. If you are using a different version, please consult Seafile manual for configuration. Create a virtualhost (e.g. under /etc/apache2/sites-enabled/, copy the following content (replace with your domain), restart Apache and that’s it !

Alternative to dropbox, google drive and co – Owncloud

owncloud logo version 6 blueIf you are looking for a good alternative to dropbox or google drive to install on your own server (or simply using a 3rd party service), Owncloud is probably the most famous one and can help you to build your own cloud \0/

Owncloud is quite different from Pydio (Previously known as Ajaxplorer) as presented before here on freedif.

They both provide a platform to easily view and manage your files through a web interface (or WebDAV), Pydio will only do that and will do it the best (A lot of features toward file management, file sharing, …) but won’t go much further, but Owncloud does.


Owncloud also provides a platform to view and sync your contacts, calendars and bookmarks across all your devices. It also includes a music player, a to do list and  have a large set of community based plugins to extend its features…

Owncloud also provides official desktop sync for Windows, Linux and MacOS that will perform like dropbox client and also an Android client that can be very useful if you want to sync your camera’s pics with others devices for example.

A demo is available to let you have a look of its interface and features.

They are currently working on a version 7 (Currently in Alpha) but their V6 is already a good piece of work!

Let’s see how to install it:


You obviously need a working web server with PHP, if you don’t have that, please read my previous article on this.

3 installation methods are described on the official Owncloud installation page, basically, directly using your distribution’s repository or using the archive to install manually or using their web installer if you only have an access to a shared hosting.

If you have your own server, I recommend you to use directly the linux packages as they maintained repositories for the most popular linux distros (CentOS, Debian, Fedora, OpenSuse, RHEL, SLE and Ubuntu). Easier and well maintained, it will takes care of all dependencies.

You can find the installation steps for each different distributions here.

If you are using a different flavour of Linux, it’s very likely that your distribution also includes it (The case of Sabayon and Gentoo for example)

If you wish to use their archive instead for a manual installation, they have a very well explained tutorial. I will only describe the Linux Packages type of installation.

1) Add the repository to your source.list and install Owncloud

If you are using Debian, like me, simply run as root:

2) Go to HTTP://yourIP/owncloud to finish the installation

You will have to create an admin user/password, you will also be able to change the data folder and database (SQLite, MySQL or PostgreSQL) type in the advanced settings.

If you don’t plan to have many users (3 to 5), no need to change the database type, SQLite will do a good job and be simpler.

And press “Finish”. Indeed, that’s all it’s done and you can start using it!

But let’s say you don’t want to access everytime to HTTP://YourIP/owncloud but use instead a dedicated domain name or subdomain like own.domain.tld, you can simply create a virtualhost to do so.


Virtualhost configuration

You will need to:

1) Create a A redirection in your DNS server/registrar from own.domain.tld to your IP

2) Have SSL certificate ready. If not you can read this tutorial. (Optional, but I presume you do!)

3) Create your virtualhost as following:

In /etc/apache2/sites-enabled/, create a file called owncloud (In root):

and paste/adapt the following content:

Adapt the content (Servername, webmaster, SSL certificate and directory, …).

When done, save the file (CTRL+X then Yes) and reload apache: (In root)

You should now have access in HTTPS to your Owncloud using own.domain.tld URL.

And voila!!


You are neither using Owncloud nor Pydio/Ajaxplorer to manage your file/cloud, just share your solution in the comments!

Host your own server – Where do we start?

So you wish to install your own server to run may be a website or your own mail, or a specific application or service (Subsonic? Minecraft?…)

You will obviously have few requirement to match based on your needs.



You could have a dedicated server using OVH or any other provider, but I’ll assume your here to use your own hardware and host it at home.

In fact, a server does not need to be very powerful, so you could reuse an old laptop or computer if you want. For example a Rapsberry Pi (Based on Arm with 256Mo Ram) is enough to host quite a few services. But don’t except high reactivity tho.

My first dedicated server@HOME was a custom ITX (Small size) config based on:

Case: Thermaltake Element Q

Motherboard: Intel DG41MJ (ITX socket 775)

Processor: Intel E5300 2.5Ghz


250GB 2.5 7200tr/m Hard Drive

Paid 250e 4 years back

And I had a very good experience with it and I was hosting few websites with modest trafic (few hundreds per day) and dozen of services such as Subsonic, Ajaxplorer, FTP, Mails, …. No need to be much faster in fact.

Although my config now is way too powerfull for my needs (But it was my own gift xD)

I’m now having a i7 2600 with 16GB Ram + OCZ Vertex 3 SSD 64gb + 2x2To Storage (For duplication). I actually really enjoy using SSD in my machines now (Fast load time, very good performance with MySQL databases or heavy I/O tasks)


Obviously the faster your Internet connection is, the better but I would say there is no specific minimum, it will just limit your type of services and traffic.

If you could have at least 128kb/s (16ko/s) upload speed with your ADSL, that would be a good start. Download will not matter much usually, as upload is always the bottleneck in ADSL. (If you are having cables, ADSL2, VDSL2, or even FTTx, lucky you. In that case you will probably be very comfortable with upload)The server described earlier was on an ADSL2 connection at 16M/1M.

Now I’m having FTTB with 100M/40M (So much faster…indeed)

Another important aspect of your network will be your router, to route correctly the needed traffic to your server. You will need to open several ports to let enter the traffic.

Operating System:

GNU/Linux is THE Operating System for servers. Widely used, very stable and with good performance, it is a good choice to run your server on.

In the GNU/Linux family, it exists a lot of “flavor”, Ubuntu being the most popular and very easy to handle. Ubuntu has a dedicated server version called Ubuntu Server and will run quite well. But although I’ve started with Ubuntu Server, I’m quickly moved to Debian and could only strongly recommend you to give it a try.

Ubuntu being based on Debian, you will not feel much the difference as a server version. However I felt Debian to be much more stable and reactive than Ubuntu. However Debian got 3 majors branches (Stable, Testing and Unstable) with different version of application. Stable being based on very robust and tested set of application, while Testing has more up to date and Unstable being cutting edge version, with possible bugs for these 2 versions.

You want to play safe? I suggest you to use Debian Stable and if an application is not up to date enough, to install a more updated version from backport repositories.