ownCloud Infinite Scale (oCIS) is a complete rewrite of ownCloud in Go. Instead of the classic PHP application with a database, it’s a single binary (or container) made of microservices, with files stored directly on disk or in object storage, and metadata kept alongside. It’s fast, light, and easy to run with Docker, which makes it a strong alternative for teams that want file sync and sharing without a large PHP stack.
oCIS vs classic ownCloud vs Nextcloud
| oCIS | ownCloud 10 (classic) | Nextcloud | |
|---|---|---|---|
| Language | Go | PHP | PHP |
| Database | None required (metadata in storage) | MySQL/MariaDB/PostgreSQL | MySQL/MariaDB/PostgreSQL |
| Focus | Files, sharing, Spaces | Files + apps | Files + broad app ecosystem |
| Performance | High, low resource use | Moderate | Moderate |
| App ecosystem | Smaller | Legacy | Large (calendar, contacts, office, talk…) |
Choose oCIS for a lean, fast file platform. Choose Nextcloud if you need the broad ecosystem. See install Nextcloud and Seafile.
Requirements
- A VPS with 2 vCPU and 2–4 GB RAM is enough for a small team.
- Docker. See install Docker.
- A domain (
cloud.example.com) pointing at the server. - Disk space for files and versions. See storage VPS for large libraries.
1. Run oCIS with Docker
sudo mkdir -p /opt/ocis/{config,data}
sudo chown -R 1000:1000 /opt/ocis
docker run --rm -it -v /opt/ocis/config:/etc/ocis owncloud/ocis:latest init --insecure no
init generates the config, including the admin password, which is printed once. Save it in your password manager.
Compose file:
# /opt/ocis/compose.yaml
services:
ocis:
image: owncloud/ocis:7 # pin a major version
restart: unless-stopped
ports:
- "127.0.0.1:9200:9200"
environment:
OCIS_URL: https://cloud.example.com
OCIS_LOG_LEVEL: warn
PROXY_TLS: "false" # TLS terminated by the reverse proxy
OCIS_INSECURE: "false"
volumes:
- /opt/ocis/config:/etc/ocis
- /opt/ocis/data:/var/lib/ocis
cd /opt/ocis && docker compose up -d
docker compose logs -f
OCIS_URL must exactly match the public URL users will use. Mismatches cause login loops and OIDC errors.
2. HTTPS via Nginx
server {
server_name cloud.example.com;
client_max_body_size 0;
proxy_buffering off;
proxy_request_buffering off;
location / {
proxy_pass http://127.0.0.1:9200;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto https;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
# listen 443 ssl + certbot --nginx
}
See Nginx reverse proxy and Let’s Encrypt. Caddy or Traefik work equally well, and oCIS’s documentation has full examples.
3. Users and Spaces
Log in at https://cloud.example.com as admin:
- Users and groups are managed in the admin settings, or via an external identity provider (Keycloak, Authentik, or any OIDC provider) for SSO.
- Personal space: each user’s own files.
- Spaces: shared project areas with their own members, roles and quotas. They’re cleaner than sharing folders between users.
- Sharing with users, groups or public links (with passwords and expiry).
4. Clients
- ownCloud desktop app (Windows, macOS, Linux) with virtual files, so files download on demand.
- ownCloud mobile apps (iOS, Android).
- WebDAV access for other tools.
5. Storage and backups
oCIS stores files and metadata under /var/lib/ocis (the data volume), using a decomposed file system layout. Consistent backups need oCIS stopped, or filesystem snapshots:
cd /opt/ocis && docker compose stop
rsync -a /opt/ocis/ /backups/ocis-$(date +%F)/
docker compose start
Also back up /opt/ocis/config (it contains secrets). Keep copies off-server. See backup strategy. S3-compatible storage can be used as a backend for larger deployments. See MinIO.
6. Operations
- Pin major versions and read the release notes before upgrading. oCIS evolves quickly. See updating self-hosted apps.
- Watch disk space and container logs.
- Enforce strong passwords or SSO with MFA.
Quick reference
| Task | Command / setting |
|---|---|
| Initialise | docker run … owncloud/ocis init |
| Public URL | OCIS_URL=https://cloud.example.com |
| Start | docker compose up -d |
| Port | 9200 (behind a reverse proxy) |
| Data | /var/lib/ocis volume |
| Config and secrets | /etc/ocis volume |
Related: File Browser and Syncthing.