ownCloud Production Guide
Self-hosted file sync & sharing — classic PHP, oCIS rewrite, deployment, storage & migration
Overview
ownCloud is a self-hosted file synchronization and sharing platform that gives organizations full control over their data. Originally announced by Frank Karlitschek in January 2010 during a keynote at Camp KDE in San Diego, ownCloud began as a KDE community project and became the de facto open-source alternative to Dropbox and Google Drive for enterprises that needed on-premises file storage with web, desktop, and mobile access.
In April 2016, Karlitschek and most of the core contributors left ownCloud and forked the project to create Nextcloud. This split is one of the most significant forks in open-source history. Shortly after the fork, ownCloud Inc. (the US entity) shut down, but ownCloud GmbH (Germany) secured new investors and continued. ownCloud remained a commercial entity focused on enterprise customers, while Nextcloud pursued a broader community-driven approach. Both projects share the same PHP codebase ancestry but have diverged significantly since.
In November 2023, ownCloud was acquired by Kiteworks, a US-based company focused on secure content communications. The most important technical development is oCIS (ownCloud Infinite Scale) — a complete rewrite in Go that abandons the PHP/MySQL stack entirely. oCIS is a microservices-based platform designed for massive scale, with no external database dependency, a built-in identity provider, and a fundamentally different storage architecture. A community fork of oCIS called OpenCloud has also emerged, published under Apache 2.0 and AGPL-3.0 licenses.
Two versions of ownCloud
Legacy ownCloud 10 (Classic)
- PHP application (similar to Nextcloud)
- Requires Apache/Nginx, MySQL/PostgreSQL, Redis
- Mature, well-understood, large app ecosystem
- In maintenance mode — no major new features
- AGPLv3 (community) / commercial license (enterprise). No longer receiving major updates
Current oCIS (Infinite Scale)
- Written in Go, single binary or Docker deployment
- No PHP, no database, no Redis required
- Built-in identity provider (LibreGraph / OIDC)
- Spaces concept for project-based collaboration
- Apache 2.0 license (source code). Note: official binary builds from ownCloud GmbH may include a separate EULA/Freemium license
For new deployments, always choose oCIS. ownCloud 10 is in maintenance mode and will eventually reach end-of-life. oCIS is the future of the platform and offers dramatically better performance, simpler operations, and a modern architecture.
ownCloud Infinite Scale (oCIS)
oCIS is a ground-up rewrite of ownCloud in Go. It is not a refactoring or incremental improvement — it is an entirely new platform that shares the ownCloud name and mission but none of the classic codebase. The project started around 2020 and reached production readiness in 2023. As of early 2026, the latest production release is oCIS 8.0.
Why a complete rewrite?
The classic PHP ownCloud (and by extension Nextcloud) suffers from fundamental scalability limitations. PHP's request-based execution model, combined with a relational database backend for file metadata, creates bottlenecks that are difficult to overcome. oCIS was designed from scratch to solve these problems.
Key characteristics
- Microservices architecture — oCIS is composed of numerous microservices (auth, proxy, storage, graph, web, search, thumbnails, collaboration, settings, etc.) that can run as a single binary or be deployed independently for horizontal scaling. The service count has grown across releases; use
ocis --helpto list all available services - No external database — File metadata is stored alongside files on the filesystem or in S3, eliminating the database as a bottleneck and single point of failure
- Built-in IDP — oCIS includes its own OpenID Connect identity provider based on LibreGraph, so no external Keycloak or LDAP is required (though both can be integrated)
- Spaces — A new collaboration model where project folders have their own quota, membership, and lifecycle, independent of any single user's account
- DecomposedFS — A custom filesystem layer that stores each file version and its metadata as separate objects, enabling native S3 storage without a database
- Performance — Benchmarks show oCIS handling 10–100x the concurrent users compared to classic ownCloud on the same hardware, thanks to Go's concurrency model and the elimination of per-request database queries
oCIS is production-ready and is the only version receiving active feature development. If a client is currently running ownCloud 10, start planning the migration to oCIS. The architectures are fundamentally different, so this is not a simple upgrade — it is a platform migration.
Architecture (Classic)
ownCloud 10 follows a traditional LAMP-style architecture that will be familiar to anyone who has deployed WordPress, Nextcloud, or similar PHP applications.
Components
- Web server — Apache with mod_php or Nginx with php-fpm. Apache is the officially supported option
- PHP — PHP 7.4 is the primary supported version for ownCloud 10. PHP 8.x support has been limited and experimental; check release notes for the specific ownCloud 10.x version you are deploying. Required extensions include ctype, curl, dom, gd, iconv, intl, json, mbstring, openssl, pdo, and zip
- Database — MySQL 8.0+ or MariaDB 10.6+ (supported from ownCloud 10.9+) recommended for production. PostgreSQL supported. SQLite only for testing
- Redis — Required for file locking (transactional locking) and recommended for session storage and caching
- File storage — Local filesystem (default), NFS for shared storage in multi-server setups, or S3-compatible object storage via external storage app
The classic architecture's biggest weakness is the database. Every file operation (upload, download, rename, share) requires multiple database queries for metadata, permissions, and locking. At scale, the database becomes the bottleneck, and horizontal scaling requires complex solutions like Galera Cluster or read replicas.
Architecture (oCIS)
oCIS is a fundamentally different architecture. It is a single Go binary that embeds dozens of microservices, each handling a specific concern. In development or small deployments, all services run in a single process. In production, services can be distributed across multiple nodes. You can control which services start using OCIS_RUN_SERVICES or OCIS_EXCLUDE_RUN_SERVICES environment variables.
Key services
- Proxy — Built-in reverse proxy that routes requests to the appropriate microservice, handles TLS termination, and performs authentication token validation
- Auth services — auth-basic, auth-bearer, and auth-machine handle different authentication flows. The built-in IDP (LibreGraph Connect / lico) provides OIDC tokens
- Storage — The storage provider uses DecomposedFS to store files and metadata without a database. Each file is stored with its metadata in MessagePack sidecar files (the default since oCIS 3.0; earlier versions used extended attributes)
- Graph API — MS Graph-compatible API for user/group management, replacing the legacy OCS API
- Web — Serves the web UI (built with Vue.js), supports WOPI for office integration
- Search — Built-in search using Bleve (Go search library), no Elasticsearch required. By default, Bleve indexes metadata (name, size, MIME type, tags, mtime). Full content extraction requires configuring Apache Tika as an additional service
- Thumbnails — Generates and caches image/video thumbnails
The most radical architectural decision in oCIS is the elimination of the relational database. File metadata (permissions, shares, versions, tags) is stored directly on the storage backend alongside the file content using DecomposedFS. This means the storage backend (local disk or S3) is the only stateful component. This dramatically simplifies HA, backup, and disaster recovery.
Deployment
oCIS deployment (recommended)
oCIS ships as a single Go binary or Docker image. For production, Docker Compose or Kubernetes are the recommended deployment methods.
# Minimal oCIS docker-compose.yml
version: "3.8"
services:
ocis:
image: owncloud/ocis:7
entrypoint: /bin/sh
command: ["-c", "ocis init || true; ocis server"]
environment:
OCIS_URL: https://cloud.example.com
OCIS_INSECURE: "false"
PROXY_HTTP_ADDR: 0.0.0.0:9200
OCIS_LOG_LEVEL: warn
volumes:
- ocis-config:/etc/ocis
- ocis-data:/var/lib/ocis
ports:
- "9200:9200"
restart: always
volumes:
ocis-config:
ocis-data:
oCIS on Kubernetes
ownCloud provides an official Helm chart for deploying oCIS on Kubernetes. The chart supports splitting microservices into separate deployments for horizontal scaling.
# Clone the ownCloud Helm charts repository
git clone https://github.com/owncloud/ocis-charts.git
cd ocis-charts/charts/ocis
# Install with custom values
helm install ocis . \
--namespace ocis --create-namespace \
-f values.yaml
Production Kubernetes considerations
- Use persistent volumes (PVCs) for data storage or configure S3 backend
- Run multiple replicas of stateless services (proxy, web, thumbnails)
- Storage provider should have a single writer or use S3 with proper locking
- Configure an Ingress controller with TLS termination
- Set resource requests and limits for each microservice
Classic LAMP stack (ownCloud 10)
- Standard LAMP/LEMP deployment (Apache/Nginx + PHP + MySQL)
- Install via tarball, package manager, or Docker
- Requires manual PHP extension installation
- Redis must be installed and configured separately
- TLS via reverse proxy (Nginx/Apache) or load balancer
For oCIS, Docker Compose is the simplest path to production for small-to-medium deployments (up to ~500 users). For larger deployments or organizations already running Kubernetes, use the Helm chart. The single-binary nature of oCIS means there is no complex multi-container orchestration required for basic deployments.
Storage
DecomposedFS (oCIS)
DecomposedFS is oCIS's custom storage layer. Instead of storing file metadata in a database and file content on disk (like classic ownCloud), DecomposedFS stores everything on the same backend — metadata as MessagePack sidecar files next to file content (since oCIS 3.0; earlier versions used extended attributes by default).
- Local filesystem — Default backend. Files and metadata stored in a structured directory tree under
/var/lib/ocis/storage - S3-compatible storage — DecomposedFS can use S3 (AWS, MinIO, Ceph RGW) as the backend, storing both file content and metadata as S3 objects. This is the recommended approach for large-scale or multi-node deployments
- NFS — Supported for shared local storage across nodes, though S3 is preferred for new deployments
Spaces
Spaces are a core concept in oCIS that replaces the traditional "home folder + shared folders" model. A Space is an independent storage area with its own quota, membership, and permissions. Types of Spaces include:
- Personal Space — Each user's private file area (equivalent to the home folder in classic ownCloud)
- Project Space — Shared collaborative areas owned by the organization, not by any individual user. When a user leaves, project spaces remain intact
- Share jail — A virtual space that aggregates all files shared with a user from other spaces
File versioning
Both ownCloud 10 and oCIS support file versioning. In oCIS, versions are stored as separate blobs in DecomposedFS, making them efficient to store and retrieve. Version retention can be configured by time or count.
External storage (Classic)
ownCloud 10 supports mounting external storage sources as folders within a user's file tree:
- S3-compatible object storage (AWS S3, MinIO, Ceph)
- SMB/CIFS shares (Windows file servers)
- SFTP servers
- WebDAV endpoints
- Local filesystem paths
When sizing storage for oCIS with DecomposedFS, account for metadata overhead. Each file creates additional metadata files (extended attributes, version tracking). For millions of small files, this overhead can be significant. S3 backends handle this better than local filesystems because they avoid inode exhaustion issues.
Authentication
Built-in IDP (oCIS)
oCIS includes a built-in OpenID Connect identity provider based on LibreGraph Connect (lico), which has its origins in Kopano Konnect. This means oCIS can function as a complete authentication system out of the box, issuing OIDC tokens for web, desktop, and mobile clients. The built-in IDP listens on port 9130 by default and is best suited for smaller installations; for larger setups, an external OIDC provider is recommended.
- User management via the Graph API (MS Graph compatible)
- Users stored in the embedded IDM (a lightweight LDAP-compatible directory)
- Supports OIDC flows: authorization code, PKCE, client credentials
External identity providers
For enterprise deployments, oCIS can delegate authentication to an external OIDC provider:
- Keycloak — Most common enterprise choice. Configure oCIS to use Keycloak as the OIDC issuer
- Authentik — Open-source alternative to Keycloak
- Azure AD / Entra ID — For Microsoft-centric environments
- ADFS — For on-premises Active Directory environments
# oCIS with external OIDC provider (Keycloak example)
environment:
PROXY_OIDC_ISSUER: https://keycloak.example.com/realms/owncloud
PROXY_OIDC_REWRITE_WELLKNOWN: "true"
WEB_OIDC_AUTHORITY: https://keycloak.example.com/realms/owncloud
PROXY_USER_OIDC_CLAIM: preferred_username
PROXY_AUTOPROVISION_ACCOUNTS: "true"
LDAP integration
oCIS can synchronize users and groups from an external LDAP/Active Directory server. The built-in IDM itself is LDAP-compatible, so external LDAP sources are mapped into the same user model.
Classic ownCloud 10
ownCloud 10 uses a traditional username/password model with optional backends:
- Internal user database (MySQL/PostgreSQL)
- LDAP/Active Directory integration
- SAML/SSO via the enterprise SSO app
- OAuth2 provider app for third-party integrations
Apps & Integration
Web office integration
Both ownCloud 10 and oCIS support collaborative document editing through WOPI-compatible office suites. In recent oCIS versions, the built-in collaboration service (port 9300) replaces the previously required external cs3org/wopi server:
- Collabora Online — Open-source LibreOffice-based online editing. Full-featured, supports all document types. Requires a separate Collabora server (Docker container or VM). oCIS also supports Collabora's Secure View feature for restricted document viewing
- OnlyOffice — Alternative online office suite with a more modern UI. Better Excel compatibility than Collabora in some cases. Also requires a separate server
- Microsoft Office Online — ownCloud supports WOPI integration with Microsoft's Office Online Server (on-premises) or Microsoft 365 for enterprise customers
Desktop and mobile clients
- Desktop sync client — Available for Windows, macOS, and Linux. Supports selective sync, virtual files (VFS), and multi-account. The oCIS client supports Spaces
- Mobile apps — iOS and Android apps with auto-upload for photos, offline file access, and share management
- WebDAV — Standard WebDAV protocol supported for third-party clients and scripting
ownCloud 10 marketplace
ownCloud 10 has a marketplace of apps that extend functionality:
- File firewall (enterprise) — block uploads based on file type, size, or content
- Workflow/tagging automation
- Full-text search (Elasticsearch integration)
- External storage backends
- Branding and theming
oCIS does not have an app marketplace like ownCloud 10. Instead, functionality is built into the core platform or added via Web extensions (Vue.js-based plugins for the web UI). The app ecosystem is smaller but growing. For most enterprise use cases, the core oCIS features plus a WOPI office suite cover the requirements.
ownCloud vs Nextcloud
The ownCloud/Nextcloud split is one of the most common comparison questions in the self-hosted file sharing space. Both have the same origin, but their trajectories have diverged significantly.
| Aspect | ownCloud (oCIS) | Nextcloud |
|---|---|---|
| Technology | Go microservices (oCIS), no database | PHP monolith, MySQL/PostgreSQL required |
| License | Apache 2.0 (oCIS source); official binaries may include EULA | AGPLv3 |
| Focus | Enterprise file sync & share, large-scale deployments | Broad collaboration platform (files, calendar, mail, talk, office) |
| Scalability | Designed for 100k+ users, microservices scale independently | Requires significant tuning above ~5k users, PHP process model limits concurrency |
| App ecosystem | Smaller, core-focused | Very large marketplace (200+ apps) |
| Community | Smaller, more enterprise-oriented | Large, active open-source community |
| Business model | Enterprise subscriptions, open-core | Enterprise subscriptions, fully open source |
| Identity | Built-in OIDC IDP, LibreGraph API | Internal user DB, LDAP, SAML (apps) |
| Storage | DecomposedFS (native S3 support) | Local/NFS + database for metadata, S3 primary storage (limited) |
| Office integration | WOPI (Collabora, OnlyOffice) | Built-in Nextcloud Office (Collabora), OnlyOffice, WOPI |
Choose ownCloud (oCIS) when the primary requirement is large-scale, high-performance file sync and share for an enterprise with thousands of users. Choose Nextcloud when the client wants an all-in-one collaboration platform with calendaring, email, video calls, and a rich app ecosystem, especially for smaller deployments (<1000 users) where the PHP stack is not a bottleneck.
Migration
ownCloud 10 to oCIS
Migrating from ownCloud 10 to oCIS is a platform migration, not a simple upgrade. The architectures are fundamentally different, and there is no in-place upgrade path. ownCloud provides migration tooling, but the process requires careful planning.
- User migration — Export users from ownCloud 10 (database or LDAP) and import into oCIS via the Graph API or configure oCIS to use the same LDAP source
- File migration — Use the ownCloud migration tool (
owncloud/ocis-migration) to copy file data from the classic storage format to DecomposedFS. oCIS also supports anowncloudsqlstorage driver that can read blobs from the existing ownCloud 10 data directory and metadata from the ownCloud 10 database, enabling a gradual user-by-user migration. This is typically the most time-consuming step for large installations - Share migration — Shares (user, group, link) need to be recreated in oCIS. The migration tool handles this, but complex share hierarchies should be tested thoroughly
- Client re-configuration — Desktop and mobile clients need to be reconfigured to point to the new oCIS instance. The OIDC login flow is different from classic username/password
- App assessment — Identify ownCloud 10 apps in use and determine if equivalent functionality exists in oCIS. Some apps may not have oCIS equivalents
For large deployments (>10TB of data, >1000 users), plan for a migration window of several days for the data copy alone. Consider running ownCloud 10 and oCIS in parallel during the transition period, using DNS or reverse proxy switching for the cutover.
Between ownCloud and Nextcloud
Since both share the same PHP ancestry, migration between ownCloud 10 and Nextcloud is technically possible but not officially supported by either project:
- ownCloud 10 → Nextcloud — Nextcloud provided a migration guide for early versions. The database schema diverged significantly after Nextcloud 13, and the codebases have diverged far since the 2016 fork. For current versions, a clean install with data import via WebDAV is the most reliable approach
- Nextcloud → oCIS — No direct migration path. Export data via WebDAV/command line, import into oCIS. Users must be recreated
- Data-level approach — For any direction, the most reliable method is: (1) export user list, (2) copy files via WebDAV or filesystem, (3) recreate shares manually
Consultant's Checklist
Platform
- New deployment? Use oCIS, not ownCloud 10
- Existing ownCloud 10? Plan migration to oCIS
- Need broad collaboration (calendar, mail, talk)? Consider Nextcloud instead
- Need 10k+ users? oCIS is the right choice
Infrastructure
- oCIS: Docker Compose for <500 users, Kubernetes for larger
- Storage: S3 backend for multi-node or large-scale deployments
- Local/NFS storage adequate for single-node, <5TB
- TLS: always terminate at reverse proxy or load balancer
Identity
- Small deployment: use oCIS built-in IDP
- Enterprise with existing IdP: integrate via OIDC
- Active Directory: use LDAP sync + OIDC (Keycloak or oCIS IDP)
- Test OIDC flow with desktop and mobile clients before rollout
Operations
- Backup strategy: snapshot storage backend (S3 versioning or filesystem snapshots)
- Monitoring: oCIS exposes Prometheus metrics on
/metrics - Logging: configure structured JSON logging for log aggregation
- Updates: follow oCIS release notes, test in staging before production
Collaboration
- Office editing: deploy Collabora or OnlyOffice alongside oCIS
- Use WOPI protocol for office integration
- Spaces: use project spaces for team collaboration, not personal shares
- Quota: set per-space quotas, not just per-user
Migration
- ownCloud 10 → oCIS: use official migration tooling
- Plan for parallel running during transition
- Test share migration thoroughly before cutover
- Reconfigure all desktop/mobile clients post-migration