My SeaFile setup

21 June 2019

I have been using file syncing technology as far back as I can remember. I used one of the first open source file syncing solutions called iFolder and used it for years even after the development of the project had ended. iFolder changed the way I thought about retrieving and syncing files between my computers. It got me off using USB sticks, CDs, or SMB shares to move data between machines. I replaced iFolder with Seafile a few years ago and I just wanted to describe my setup and maybe inspire others to take control of their own data.

What is SeaFile?

SeaFile is an open source file syncing solution that I consider to be the unintentional successor to iFolder. You can host Seafile yourself on your own hardware, or you can purchase a hosted solution from various providers.

My SeaFile Setup

I host SeaFile myself for two main reasons. First is I want to know how it works. Second I’m a bit of a data pack rat, and it is far cheaper to host it myself than buying a hosted solution.

The Architecture

Only my wife and I sync files to my SeaFile instance (at least at the moment). Some people think my architecture is overkill. My data is one of my most valuable assets, and I want a rock-solid architecture.

I implemented the SeaFile Cluster Architecture. I separated everything out as if I was running SeaFile as scale. My backend storage is a scale-out storage using GlusterFS running on Pine RockPro64 SBCs. This ensures that I have no single point of failure, and my data is safe, secure, and redundant. The VMs can quickly be restored if needed and I can lose up to 20% of my Gluster storage before I run into a data lose issue. I have a couple of spare RockPro64 boards on hand and can quickly turn around storage from Amazon or NewEgg in the event of a hardware failure.

In the future my ultimate goal is to migrate SeaFile off VM’s to containers managed by Kubernetes on the same type of hardware my storage is running on. I also might change out Gluster for Ceph.

The Experience

SeaFile is fast. When I need to restore a system I can restore all my critical data back on my computer in less than 20 minutes after I get Fedora reinstalled. When I want to sync a new folder on my system, I just need to go into the client and select the local folder. It doesn’t need to be in a particular folder that only SeaFile syncs. On my Virtual Desktops, I don’t use the traditional sync client I use a client that Seafile calls SeaDrive. SeaDrive makes it look like a drive in Windows or a general mount point in Linux. It syncs only what you access, this dramatically reduces the amount of storage SeaFile needs to store the data you access on your system.

Backups

I take regular backups of my data. I take a backup to hard drives and keep them in a fireproof safe, I do this weekly. I keep another copy in a safety deposit box, I do that monthly. I also keep another copy of my data using a cloud service that I trust (this happens on demand). A backup strategy is essential, but a backup is useless unless you can test your backups to ensure they are viable. Make sure to verify your backup’s regularly! The way I check my backup is a non-ha environment with direct-attached storage. This not only makes sure your data is good but also ensures that you can restore to any storage backend. I test my cloud backup yearly and I test my other backups every few months.