Testing Seafile
-
Here are some notes from setting up Seafile as a company file store and any gotchas I ran in to. This is in chronological order, as I'm taking notes while playing with it.
Server
Seafile version 5.1.3.
Ubuntu 14.04 VM on XenServer. I set up with 1 socket, 2 cores, 1GB RAM, and 16GB drive. All updates done before installing Seafile. I set up a static IP for networking.
The total amount of storage for our files is currently about 9GB which we keep on Box. I'm testing Seafile as a replacement for Box ultimately.I used the installer script for Ubuntu as explained here: https://github.com/haiwen/seafile-server-installer
The install seemed to go well, no critical errors or anything. It left me with some post-install instructions such as "Run seafile-server-change-address to add your Seafile servers DNS name". I went ahead and ran this but the following screens were all German or some other alien language.
There are other instructions for working with NAT firewall and ports and email server and so forth.
There were instructions at the following link for getting an SSL certificate for Nginx. I believe the script already created a self-signed cert but I went ahead and generated one as explained anyway.
http://manual.seafile.com/deploy/https_with_nginx.htmlI thought at this point everything was supposed to work, but it didn't. Opening the IP actually gave an Nginx error for "Bad Gateway". This means whatever Nginx is supposed to be proxying FOR ain't working.
Some quick searching turned up that there is an issue of the auto-installer not putting the config files in the correct folder. Gee great!
Read it here: https://github.com/seafile/seafile-server-installer/issues/81These three config files:
/opt/seafile/ccnet/ccnet.conf /opt/seafile/seafile-data/seafile.conf /opt/seafile/seahub_settings.py
Needed to be moved into the folder
/opt/seafile/conf/
.After moving the files, the server and web portal can be started with the following two commands (which previously failed before the configs were moved).
Start Seafile server:
./seafile.sh start
Start Seahub portal:
./seahub.sh start
When Seahub started (successfully) it prompted to create my admin user account which I did.
Now going back to the IP address in the browser, using port 8000 by default. For me internally this is 192.168.1.14:8000. I now got the login screen after accepting the self-signed cert. Yeah!
After logging in I created one library that I just called "Everyone". This is meant to be shared by every user in the company. We don't have many folders that wouldn't be, only the boss has a folder of two they won't share with everybody.
Desktop Tool
Next I downloaded their Windows Desktop sync tool. This thing looks like an old school chat app.
And finally, I dropped a folder from Box into my new Everyone folder to watch it sync up. This folder is a little over 6GB.
After the files were copied, it began indexing and syncing.
It also shows a status message in System Tray as files are uploaded.
The desktop tool has its own bandwidth monitor. This went anywhere from 3MB/s to 30MB at the top end. Some peaks as high as 50MB/s.
I was also watching Windows reporting on it (this is a Win7 Pro workstation).
Network utilization ranged from 3 or 4% to as high as 50% of the gigabit available.
When looking deeper into the Seafile process itself, it was pretty regularly set around 26MB/s, or just over 200Mb/s. This is an internal network after all.As a test for bandwidth over the Internet I compared with Box sync. Box uploaded at about 1.9Mbs when I stuck a video in there. I then did a video upload test from another computer into this office and it was chugging along at 4.8Mbs. Very informal "test" but Seafile did perform better. This was the same ISP but two locations. Both ISP packages were 50Mbps or higher plans. Box was just slower to upload in this instance.
I also needed to open port 8000 and 8082 in the router of course. If you intend to use SSL then 443 should be opened too, I'll deal with that later.
One nifty feature of the desktop client is that you can selectively sync any given library, but other libraries are still visible as "cloud" libraries and it uses an internal file browser and a cache folder to let you browse cloud libraries without having to open a browser tab.
You can also set a sync interval timer (in seconds) if you only want it to sync every so often instead of constant monitoring.
Sharing
In our company we rarely share anything, but as far as my experience with every other sync tool I've used, I still want a good feature set.
One nice thing about Dropbox is that the System Tray tool actually shows the files that were most recently uploaded, and lets you grab a share link right from there. No other sync tool has been this convenient. Sadly, Seafile does not show you most recently uploaded files.
If I right-click a file in Windows Explorer, I get three options:
- Get download link.
- Get internal link.
- File history.
Before I could share files I needed to update my domain name. The server was setup with just "seafile" as the hostname but in my case I needed a FQDN in order for share links to work. I created a subdomain and pointed the IP to the office. Just seafile.ourdomain.c-m is what I used.
I had all kinds of trouble making the domains work, and sorting our all the types of share links as well as the web interface.
The domain needed to be updated in the Nginx config and also the ccnet.conf file. There is a setting calledSERVICE_URL
and this is essentially what is prefixed to share URLs when they are created. I also had to changeFILE_SERVER_ROOT
to use my domain as well.
Even after all the settings were right, it still wouldn't work and my share links would time out. They say to run with fastcgi for production so I tried that by starting the server with./seahub.sh start-fastcgi
.Even then it just wasn't working. Hitting refresh in the desktop client would do this:
If Nginx wasn't working, nothing would load. If Nginx worked by seahub had an issue, there would be a 50x Gateway type error. If I use the seahub internal server (not fastcgi) the web interface would work but not share links or uploads/downloads from the browser. I had a feeling something else must have been skipped with the auto-installer.
I'm stopping for now as I have to keep troubleshooting the browser-based uploading and downloading and why fastcgi seems broken. It's probably just something skipped in the auto-installer, maybe somebody else had these issues. I can't seem to get around it, something is broken with the seafile server and how it uses fastcgi and SSL, etc.
More to come if I figure it out.
In summary, I like the desktop client and it looks like I can even sign in with multiple accounts which is nice if I'm part of multiple servers. I do wish it would show a short list of most recently uploaded files so I can quickly get a share link.
I also like that the right-click share menu gives you a quick checkbox to get a direct download link versus a web page view.
The "internal" links can use a protocol so it actually opens the file directly in your local file system. This type of link is nice for texting/emailing links because it just opens from their local machines without creating an actual share link.The local sync versus cloud folders are nice, and I can browse cloud folders without needing to use the browser.
-
Nice write up, thanks for sharing the experience. Have you worked with NextCloud to be able to make a comparison?
-
I want to try NextCloud too so I'll either run side-by-side or I may have to give up Seafile if I can't fix the borked settings in the current version.
-
Very solid write up. I only skimmed it, but it answered some questions I had.