Repository

Looks good to me!

User Tools

Site Tools


kb:intranet:services:files:seafile:start

Seafile

Seafile is a solid contender for file synchronization.

Some key features:

  • Backend is supported by algorithms to encode files as blocks, stored in the /seafile-data directory. This facilitates fast synchronization and delta-sync.
  • Has clients for virtually every system, including Windows, Mac, Linux, CLI, and even drive mounts.
  • Community edition is free and open-source.

Its strength is also its weakness when it comes to file syncing. Because the files are stored differently internally, this adds an additional layer of technology to access files, and makes it massively annoying to interface with these files:

  1. Uploading to Seafile from a terminal or web GUI involves interfacing through the seafile-cli client, or via the WebAPI. The FUSE extension is available, but is read-only.
  2. Downloading from Seafile is similarly tedious because of this interface barrier. One option is to regularly export the Seafile database as files in the file system using seafile_fsck, noting the files now need to be duplicated.
  3. By extension, this significantly bars the use of Seafile as a CDN server, since will need to write additional wrappers to pull the images out, on top of an authentication layer.
  4. Mounting an external drive does not seem like an option, although creating a logical volume on the OS-level will help mitigate this problem. This is necessary for Seafile servers which only provide the interface to a backend storage server. An alternative is relocating the entire /seafile-data directory to the remote server. Another alternative is using the middle-man solely as a Seafile client. See here as well.

However, comparing directly to Dropbox, is a FTP upload option really necessary? Dropbox technically does not officially support such implementations, although files can be uploaded to be sync-ed... The real requirements are:

Nextcloud ownCloud Pydio Cells Seafile Syncthing
Upload to file sync via HTTPS ❌ (tedious)
Upload to file sync via filesystem
Download files directly without authentication
Web GUI client
Desktop GUI clients
Mountable as drive on desktop
"Smart sync" (synchronize filenames without content)
Filesystem-only backend

Have seen a recent review mentioning that Pydio Cells has a tendency to break.

... as I have learnt, you can't do direct filesystem editing with Nextcloud either. Requires notifying the occ watcher to update the Nextcloud directory...


Some thoughts after using it for a while:

  • Speedy is really the main draw - and drawback. Seafile uploads files with lightning speeds, especially files below 100MB as a rule of thumb, but seems to absolutely flob when uploading/downloading much larger files.
    • Likely because of some level of chunking going on that somehow slows down the server, perhaps I need more cores for these operations to become a little more efficient?
    • Download speeds can vary from 15MB/s on small files, to 0.2MB/s on larger files. Concurrent threads, perhaps...? A forum post from 2019 also seems to highlight the same symptoms.
  • The storage format doesn't work well when integrating with media servers which require access to the raw files.

Seafile still remains relatively stable. Note that the professional edition is highly recommended over the community edition which requires manual garbage collection of dereferenced blocks. While the professional edition has online GC, the manual GC requires a periodic server shutdown at least once a week.

See below for a comparison of space taken:

Professional Community
Actual files (GB) 24 ~10
Actual storage (GB) 70.767 125.004
└ commits 0.104 0.320
└ fs 0.527 1.613
└ blocks 70.138 123.073

Consider looking into this Seafile backup script.


Docker is crashing again, taking down several containers along with it, including the Seafile server. This is pretty problematic... on top of this, the Seafile client on Android does not support two-way synchronization, so the best way about this for Android is DropSync.

kb/intranet/services/files/seafile/start.txt · Last modified: 23 months ago ( 2 May 2023) by 127.0.0.1