λ ryan. himmelwright. net

Trying Out Seafile

test

Outer Banks, NC USA

In college, I mostly used Dropbox to handle all of my file syncing needs. As I approached graduation, I setup an Owncloud droplet (which is now a Nextcloud instance) to supplant my Dropbox usage. While it has worked fairly well, I’ve been watching seafile from a distance the last few years, but haven’t taken the time to try it out. I have now.

Seafile

Seafile logo
The Seafile Logo.

As stated on their website:

Seafile is an enterprise file hosting platform with high reliability and performance. Put files on your own server. Sync and share files across different devices, or access all the files as a virtual disk.

While self-defined as an “enterprise file hosting platform”, there is a Community Edition that is Free & Open Source.. which is exactly how I like my software. So lets get started.

Setup

Similar to a Nextcloud configuration, to get seafile up and running, a server component is first installed. Afterwards, clients connect to it.

Server

The countless number of configurations seafile supports may make setting up the server component for the first time a bit intimidating. There are several database back-ends (SQLite, MySQL…), web servers (Nginx, Apache), and advanced options (Memcached, LDAP, etc) which can be selected. However, the seafile developers do provide an installation script to easily install both the Pro and Community editions under Linux. Which is what I used.

Download

The first step is to download the server application. A link for the install package can found partway down the download page. After Downloading, extract the contents of the package.

wget https://download.seadrive.org/seafile-server_6.2.5_x86-64.tar.gz
tar xf seafile-server*.tar.gz

Inside the extracted directory, there are several setup-seafile-*.sh* scripts. I just used the basic setup-seafile.sh one.

Dependencies

Depending on which setup script it used, and the state of the host machine, there may be some missing dependencies. While I am sure there is a nice list of the required dependencies posted somewhere… I didn’t look for it. If I am being completely honest… I just kept repeatedly running the script, and installed whichever package it yelled at me for each time. Eventually, the install worked. On my fresh install of Ubuntu 16.04 server, this meant installing the following dependency packages:

This means that on an Ubuntu 16.04 server, a simple sudo apt install python-setuptools python-imaging sqlite3 should do the trick…

Install Script

With the dependencies installed, the script should run through without screaming for missing packages. However, it will ask for a few pieces of information including server-name, server-ip/domain, data-dir, and fileserver port to install the fileserver component. Answer accordingly.

sefile web client
The Seafile Web Client, Seahub.

After configuring the fileserver, the script will flow right into configuring Seahub, the web interface that sits on top of the fileserver. This part is less needy, and will only require an [Enter] press to continue.

At the end, the script should display useful information about how to start/stop/reset the servers, as well as what ports each part is running on.

Run & Start

Starting the servers is done by doing what the script says… run the following commands:

./seafile.sh start
./seahub.sh start

With the servers running, it may be necessary to configure the firewall to allow their ports. On Ubuntu 16.04:

sudo ufw allow 8000/tcp
sudo ufw allow 8082/tcp

That’s it. With any luck, clients should be able to connect to the server (assuming the server is reachable from the client computer… but that’s a lesson for another day).

Note: The first time seahub is run, it will need to setup an admin account. So while it was nice and considerate in the last step… it will insist on being supplied a username (email) and password for the new admin account. Again, just comply.

Client

The seafile desktop client was trivial to install. It was in the Solus repos, so I just needed to run sudo eopkg it seafile-client, and I was done. I also installed it on my work computers (which unfortunately runs Windows 10), and even that was simple. I just downloaded and installed the Windows “Desktop Syncing Client” at the top of the download page.

My Thoughts

Seafile Desktop Client"
Seafile Desktop Client

I have been using seafile as a syncing solution for the past few weeks. After the initial setup, it has been rather uneventful… which is a good thing. It just runs in the background, and I don’t really think about it. Exactly what you want with a syncing solution.

That being said, I haven’t fully dug into all of the details of the application yet. So, if I incorrectly critique something due to my own ignorance that simply isn’t true, I apologize in advance.

What I Like

Docker PS
When syncing an encrypted library, a password must be entered.

What I Don’t Like

Future Plans

To summarize, I have been loving seafile, and I think I have only scratched the surface. I haven’t even tried playing with features like History and Snapshots, Full Text File Search, or yet. My plan is to continue experimenting a bit more, and then switch to it as my main syncing system when I redo my main server setup in a couple of weeks. If you haven’t given seafile a try recently, I recommend it.

Next Post:
Prev Post:

SQL Intro Docker Quick Start