Seafile vs ownCloud: Which File Sync to Self-Host?
Quick Verdict
Seafile is the better choice if raw file sync speed and low resource usage matter most. It handles large files and libraries with thousands of items faster than almost anything else in this space. ownCloud Infinite Scale (oCIS) is the pick if you want a batteries-included platform with built-in identity management, no external database, and integrated document collaboration. Both are solid — but they solve different problems at different scales.
The ownCloud Rewrite: What You Need to Know
If you last looked at ownCloud in 2020, forget what you knew. The old PHP-based ownCloud 10.x is deprecated. ownCloud has been completely rewritten in Go as ownCloud Infinite Scale (oCIS) — a microservices architecture that drops the PHP/MySQL stack entirely. No external database. No Apache. No PHP-FPM. Just a single Go binary (or Docker image) that handles everything.
This comparison covers Seafile 13.0 vs ownCloud oCIS 8.0 — both current stable releases as of February 2026.
Feature Comparison
| Feature | Seafile 13.0 | ownCloud oCIS 8.0 |
|---|---|---|
| Core language | C (sync), Python (web) | Go (backend), Vue.js (frontend) |
| External database required | Yes (MariaDB/MySQL) | No (embedded) |
| Cache service required | Yes (Redis) | No |
| File versioning | Yes, per-library | Yes, per-space |
| Client-side encryption | Yes (encrypted libraries) | No (server-side TLS only) |
| Desktop sync clients | Windows, macOS, Linux | Windows, macOS, Linux |
| Mobile apps | iOS, Android | iOS, Android |
| WebDAV support | Yes | Yes |
| Built-in document editing | SeaDoc (Markdown/rich text) | Collabora/OnlyOffice integration |
| Built-in identity provider | No (LDAP/SSO optional) | Yes (LibreGraph/embedded IDM) |
| Spaces/projects | Libraries (similar concept) | Spaces (first-class feature) |
| File metadata/views | Table, Kanban, Gallery, Map views (v13) | Basic file properties |
| API | REST API | REST + Graph API (MS Graph compatible) |
| License | Community: GPLv2, Pro: proprietary | Apache 2.0 |
| Scalability model | Single node (Pro supports clustering) | Microservices, horizontal scale-out |
Architecture at a Glance
Seafile uses a traditional three-tier stack: MariaDB for metadata, Redis for caching, and a C-based file server that handles sync with a custom delta-sync protocol. The web interface (Seahub) runs on Python/Django. Seafile 13.0 introduced a Go-based file server option and a metadata server for the new views feature. You also get Caddy as a reverse proxy in the official Docker setup.
ownCloud oCIS is a single Go binary composed of ~30 microservices running in one process by default. It embeds its own identity provider (LibreGraph), stores file metadata in a local filesystem-based backend, and needs no database, cache, or web server. For production, you add Traefik as a reverse proxy for TLS termination. Individual microservices can be split across nodes for horizontal scaling.
Docker Compose Setup
Seafile 13.0
Seafile requires three services: MariaDB, Redis, and the Seafile application server. Create a .env file and a docker-compose.yml.
.env:
# Seafile 13.0 CE Docker Configuration
# --- Images ---
SEAFILE_IMAGE=seafileltd/seafile-mc:13.0-latest
SEAFILE_DB_IMAGE=mariadb:10.11
SEAFILE_REDIS_IMAGE=redis:7
# --- Storage Paths ---
SEAFILE_VOLUME=/opt/seafile-data
SEAFILE_MYSQL_VOLUME=/opt/seafile-mysql/db
# --- Server ---
SEAFILE_SERVER_HOSTNAME=seafile.example.com
SEAFILE_SERVER_PROTOCOL=https
TIME_ZONE=Etc/UTC
# --- Database ---
SEAFILE_MYSQL_DB_HOST=seafile-mysql
SEAFILE_MYSQL_DB_USER=seafile
SEAFILE_MYSQL_DB_PASSWORD=CHANGE_ME_db_password
INIT_SEAFILE_MYSQL_ROOT_PASSWORD=CHANGE_ME_root_password
SEAFILE_MYSQL_DB_CCNET_DB_NAME=ccnet_db
SEAFILE_MYSQL_DB_SEAFILE_DB_NAME=seafile_db
SEAFILE_MYSQL_DB_SEAHUB_DB_NAME=seahub_db
# --- Cache (Redis is default in v13+) ---
CACHE_PROVIDER=redis
SEAFILE_REDIS_HOST=seafile-redis
SEAFILE_REDIS_PORT=6379
SEAFILE_REDIS_PASSWORD=CHANGE_ME_redis_password
# --- Admin Account (first run only) ---
INIT_SEAFILE_ADMIN_EMAIL=[email protected]
INIT_SEAFILE_ADMIN_PASSWORD=CHANGE_ME_admin_password
# --- JWT (minimum 32 characters, required) ---
JWT_PRIVATE_KEY=CHANGE_ME_generate_a_random_string_at_least_32_chars
docker-compose.yml:
services:
seafile-mysql:
image: ${SEAFILE_DB_IMAGE}
container_name: seafile-mysql
environment:
MYSQL_ROOT_PASSWORD: ${INIT_SEAFILE_MYSQL_ROOT_PASSWORD}
MYSQL_LOG_CONSOLE: "true"
volumes:
- ${SEAFILE_MYSQL_VOLUME}:/var/lib/mysql
networks:
- seafile-net
restart: unless-stopped
healthcheck:
test: ["CMD", "healthcheck.sh", "--connect", "--innodb_initialized"]
interval: 20s
timeout: 10s
retries: 5
start_period: 30s
seafile-redis:
image: ${SEAFILE_REDIS_IMAGE}
container_name: seafile-redis
command: ["redis-server", "--requirepass", "${SEAFILE_REDIS_PASSWORD}"]
volumes:
- redis-data:/data
networks:
- seafile-net
restart: unless-stopped
seafile:
image: ${SEAFILE_IMAGE}
container_name: seafile
volumes:
- ${SEAFILE_VOLUME}:/shared
environment:
DB_HOST: ${SEAFILE_MYSQL_DB_HOST}
DB_ROOT_PASSWD: ${INIT_SEAFILE_MYSQL_ROOT_PASSWORD}
SEAFILE_MYSQL_DB_USER: ${SEAFILE_MYSQL_DB_USER}
SEAFILE_MYSQL_DB_PASSWORD: ${SEAFILE_MYSQL_DB_PASSWORD}
SEAFILE_MYSQL_DB_CCNET_DB_NAME: ${SEAFILE_MYSQL_DB_CCNET_DB_NAME}
SEAFILE_MYSQL_DB_SEAFILE_DB_NAME: ${SEAFILE_MYSQL_DB_SEAFILE_DB_NAME}
SEAFILE_MYSQL_DB_SEAHUB_DB_NAME: ${SEAFILE_MYSQL_DB_SEAHUB_DB_NAME}
SEAFILE_SERVER_HOSTNAME: ${SEAFILE_SERVER_HOSTNAME}
SEAFILE_SERVER_PROTOCOL: ${SEAFILE_SERVER_PROTOCOL}
TIME_ZONE: ${TIME_ZONE}
JWT_PRIVATE_KEY: ${JWT_PRIVATE_KEY}
INIT_SEAFILE_ADMIN_EMAIL: ${INIT_SEAFILE_ADMIN_EMAIL}
INIT_SEAFILE_ADMIN_PASSWORD: ${INIT_SEAFILE_ADMIN_PASSWORD}
CACHE_PROVIDER: ${CACHE_PROVIDER}
SEAFILE_REDIS_HOST: ${SEAFILE_REDIS_HOST}
SEAFILE_REDIS_PORT: ${SEAFILE_REDIS_PORT}
SEAFILE_REDIS_PASSWORD: ${SEAFILE_REDIS_PASSWORD}
ENABLE_SEADOC: "false"
ENABLE_NOTIFICATION_SERVER: "false"
ports:
- "8080:80"
depends_on:
seafile-mysql:
condition: service_healthy
seafile-redis:
condition: service_started
networks:
- seafile-net
restart: unless-stopped
networks:
seafile-net:
driver: bridge
volumes:
redis-data:
Start it:
docker compose up -d
After the first start, access the web UI at http://your-server-ip:8080 and log in with the admin email and password from your .env file. The INIT_* variables are only used on first run.
ownCloud oCIS 8.0
oCIS runs as a single container with no external dependencies. You need to initialize the config first, then start the service.
Step 1: Create directories and initialize config
mkdir -p /opt/ocis/ocis-config /opt/ocis/ocis-data
docker run --rm -it \
--mount type=bind,source=/opt/ocis/ocis-config,target=/etc/ocis \
--mount type=bind,source=/opt/ocis/ocis-data,target=/var/lib/ocis \
owncloud/ocis:8.0.0 init
This generates /opt/ocis/ocis-config/ocis.yaml with a random admin password. Note the password printed to the terminal — you need it to log in.
Step 2: Docker Compose
docker-compose.yml:
services:
ocis:
image: owncloud/ocis:8.0.0
container_name: ocis
environment:
# Set to "false" for production with valid TLS certificates
OCIS_INSECURE: "true"
# Your external URL -- MUST use https
OCIS_URL: "https://ocis.example.com"
OCIS_LOG_LEVEL: "error"
# Bind to all interfaces inside the container
PROXY_HTTP_ADDR: "0.0.0.0:9200"
volumes:
# Config generated by ocis init
- /opt/ocis/ocis-config:/etc/ocis
# Persistent file storage
- /opt/ocis/ocis-data:/var/lib/ocis
ports:
- "9200:9200"
restart: unless-stopped
networks:
default:
driver: bridge
Start it:
docker compose up -d
Access the web UI at https://your-server-ip:9200. Log in with admin and the password from the init step. The self-signed certificate will trigger a browser warning — accept it or put a reverse proxy with a real certificate in front.
That is the entire stack. No database container, no cache container, no web server. One image, one volume for config, one volume for data.
Performance and Resource Usage
This is where Seafile pulls ahead — and it is not close.
| Metric | Seafile 13.0 | ownCloud oCIS 8.0 |
|---|---|---|
| RAM (idle) | ~250 MB (all services) | ~150 MB |
| RAM (active, 10 users) | ~400-600 MB | ~300-500 MB |
| RAM (active, 100+ users) | ~1-2 GB | ~1-2 GB |
| CPU (idle) | Low | Very low |
| Disk (application) | ~1.5 GB (images + DB) | ~500 MB (single image) |
| Large file sync (10 GB+) | Excellent — delta sync, chunked transfer | Good — standard WebDAV chunking |
| Many small files (10,000+) | Excellent — library-based batching | Good — individual file operations |
| Initial sync speed | Fast — custom protocol | Moderate — WebDAV-based |
Seafile’s custom sync protocol uses delta transfers and deduplication at the block level. When you change 10 bytes in a 1 GB file, Seafile transfers only the changed blocks — not the whole file. This makes it dramatically faster for large file workflows (video editing, datasets, VM images).
oCIS uses standard WebDAV for sync, which is broadly compatible but lacks block-level delta sync. For typical office document workflows, the difference is negligible. For large media files, Seafile wins outright.
oCIS has the lighter footprint at idle because it is a single process with no database or cache overhead. But Seafile’s total stack (MariaDB + Redis + app) remains surprisingly lean for what it delivers.
Storage Model
Seafile organizes files into libraries — each library is an independently syncable, encryptable, and shareable unit. You choose which libraries to sync to each device. This design is elegant for power users who want fine-grained control over what syncs where, and it enables the encrypted library feature where you set a password that the server never sees.
oCIS uses Spaces — collaborative workspaces that function like team drives. Spaces are a first-class concept with their own settings, members, and quotas. There is also a personal space for each user. The model is closer to Google Drive or OneDrive team drives, which makes it intuitive for organizations migrating from those services.
Document Collaboration
Seafile 13.0 ships with SeaDoc, a built-in document editor supporting Markdown and rich text. It is lightweight and works without external dependencies. For full office document editing (DOCX, XLSX), you add Collabora or OnlyOffice as a separate container.
oCIS 8.0 does not include a built-in editor but has official integrations for both Collabora and OnlyOffice. The deployment examples include pre-configured Compose files for either. If document collaboration is central to your workflow, oCIS arguably has the more mature integration story because ownCloud has invested heavily in this area.
Client-Side Encryption
Seafile offers client-side encrypted libraries — you set a password, and files are encrypted before they leave your device. The server stores only ciphertext. This is a genuinely zero-knowledge implementation for those libraries.
oCIS does not support client-side encryption. Data is encrypted in transit (TLS) and you can encrypt the underlying storage, but the server always has access to the plaintext files.
If zero-knowledge encryption is a requirement, Seafile is your only option here.
Ecosystem and Extensibility
Seafile is focused. It does file sync, sharing, and (as of v13) structured metadata views. It does not try to be a calendar, contacts, or email server. This focus means fewer moving parts and less surface area for bugs.
oCIS is more ambitious. The Microsoft Graph API compatibility means it works with third-party tools expecting OneDrive-like APIs. Built-in identity management (LibreGraph) means you get user provisioning, groups, and SSO without bolting on an external LDAP server. If you need a platform that does more than sync files, oCIS offers more out of the box.
Neither matches Nextcloud’s app ecosystem. If you need a kitchen-sink platform with 300+ apps, look at Nextcloud instead.
Use Cases
Choose Seafile If…
- You handle large files regularly (video, datasets, disk images) and need fast delta sync
- Client-side encryption is a requirement
- You want the leanest, fastest file sync with minimal overhead
- Your team is technical and comfortable with the library-based organization model
- You already run MariaDB/MySQL for other services and adding another database is free
- You need the new structured metadata views (Kanban, Gallery, Map) from Seafile 13
Choose ownCloud oCIS If…
- You want the simplest possible deployment — one container, no database, no cache
- You need built-in user management and identity without external LDAP
- Your team is migrating from Google Drive or OneDrive and expects a similar UX with Spaces
- Microsoft Graph API compatibility matters for your tooling
- Horizontal scalability is a future requirement (oCIS microservices can split across nodes)
- You plan to integrate Collabora or OnlyOffice for real-time document editing
Final Verdict
Seafile is the better self-hosted file sync engine. Its delta sync protocol, client-side encryption, and raw transfer speed are unmatched. If your primary need is “sync files fast and reliably,” Seafile 13.0 delivers.
oCIS is the better self-hosted file platform. Its zero-dependency deployment, built-in identity management, Spaces model, and Graph API make it a more complete workplace tool. If you are replacing Google Workspace or OneDrive for a team, oCIS fits that shape better.
For a solo user or small group that mostly cares about syncing files and keeping them private, go with Seafile. For an organization that needs user management, collaboration features, and a familiar drive-like interface without running Nextcloud’s heavier stack, go with oCIS.
Related
Get self-hosting tips in your inbox
Get the Docker Compose configs, hardware picks, and setup shortcuts we don't put in articles. Weekly. No spam.
Comments