Seafile

Seafile

Libraries that sync, share and encrypt independently

Seafile is a file sync and share server you run yourself. Files live in libraries: each one syncs on its own to desktops and phones, can be shared with users or groups, and can be encrypted with a password. The server core is written in C, and the Seahub web interface in Python and JavaScript. Seafile Ltd. ships two editions: Community, which is open source, and Professional, which is proprietary.

There is no calendar or address book in Seafile. Nextcloud has both, plus an app store with several hundred apps.

The self-hosted cloud storage comparison weighs Seafile's library encryption and editions against the other tools.

Delta uploads, Git-like snapshots and an on-demand drive

  • Block-level sync: Seafile splits every file into variable-size blocks based on its content (about 8 MB on average, per the docs), and the client uploads only what changed. Interrupted transfers resume, and conflicts are settled from the library history rather than file timestamps.
  • Git-style history: each upload creates a commit that snapshots the library. Blocks shared by two versions of a file are stored once.
  • Selective sync and a virtual drive: any folder can sync on its own, one client can follow several servers, and SeaDrive mounts libraries as a drive that downloads files only when you open them.
  • Editing in the browser: SeaDoc, the built-in collaborative editor, plus a wiki, an Excalidraw whiteboard, and OnlyOffice or Collabora Online integration.
  • 2FA, LDAP and WebDAV in Community: TOTP codes, sign-in against LDAP or Active Directory, and a bundled WebDAV server that is off by default.

Community runs in containers only; Pro keeps search and S3

Community now installs only as containers. Since 13.0, binary packages are supported for Pro only. Community goes through Kubernetes or Docker Compose, whose stack adds MariaDB, Redis and Caddy, on x86 or ARM64. SQLite support was dropped in 11.0. The docs ask for at least 2 GB of RAM, 2 cores and 10 GB of disk.

Files are not stored as files. On the server, a library is a chain of commits, objects and blocks, and the docs credit this design for Seafile's performance. Browsing the data directory gives you no documents back: seaf-fsck.sh --export rebuilds libraries into a regular file system, but skips encrypted ones. Deleting a file frees no space until the seaf-gc.sh garbage collector runs.

Library encryption leaves names in the clear. Content is encrypted with AES-256, but folder and file names, sizes and edit history are not. Only the desktop sync client encrypts on the device. In the browser, the server receives the password and decrypts on its side; the iOS and Android apps have sent it the password since version 3.0.0, and a library created on the web passes its keys through the server. An admin can also partially alter an encrypted file without the client noticing. Hoodik encrypts everything in the browser instead, file names included.

Older encrypted libraries keep a weak key derivation. Up to version 12, the password went through PBKDF2-SHA256 with 1,000 iterations, which the docs call "far from secure". Admins can now choose Argon2id, but only for new libraries. Forget the password and the library cannot be read.

Pro keeps search, S3 and clustering. According to the docs, only Pro has full-text search (which does not index encrypted libraries), sub-folder permissions, audit logs, S3 storage, cluster deployment, virus scanning, SAML 2.0 and LDAP group sync. Its license forbids derivative works; the source code it ships is there for security audits. Pro runs without a license file for up to three users; beyond that, the annual subscription is $48 per user for 10 to 249 users.

One major release a year, 14.0 still in testing. 11.0 went stable in November 2023, 12.0 in January 2025 and 13.0 in October 2025. Community got nine 13.0 bugfix releases between February and September 2026, the latest, 13.0.28, pushed to Docker Hub on September 18. 14.0 exists only as -testing images, since May 2026 for Pro, and the docs still list 13.0 as the current version.