ownCloud provides self-hosted file storage, sharing, browser access, and sync clients. But there are now two different server products: ownCloud Classic and ownCloud Infinite Scale. Choosing the right one matters before you copy any installation commands.
This updated guide explains how to install ownCloud Infinite Scale on Ubuntu 24.04 with Docker Compose, using ownCloud’s current production example. The previous CentOS 8/PHP 7 guide is no longer a sensible new deployment because CentOS 8 is end-of-life and ownCloud Classic still has strict PHP 7.4 requirements.
ownCloud Classic vs Infinite Scale
| Product | Architecture | Choose it when |
|---|---|---|
| ownCloud Classic | PHP, Apache, database, Redis | You already operate Classic or need a Classic app/integration |
| Infinite Scale | Containerized services with modern web UI | You are planning a new deployment and its features fit your needs |
Do not treat Infinite Scale as an in-place PHP upgrade. Migrating Classic users and data is a separate project. Check feature, identity-provider, storage, app, and license requirements before choosing either product.
What This Deployment Includes
ownCloud’s full Docker Compose example is intended for a production-style home or small-business server. It includes Infinite Scale, its web interface, Traefik for routing and certificates, and optional web-office services. Larger or highly available environments need a different architecture.
Server Requirements
- Ubuntu Server 24.04 LTS (the official example also supports 22.04)
- At least 4–6 GB RAM for the default example
- Enough storage for containers, user files, versions, logs, and backups
- Docker Engine and the Docker Compose plugin from Docker’s current official repository
- A domain and required subdomains pointing to the public server IP
- TCP ports 22, 80, and 443 allowed as appropriate
- A monitored email address for ACME certificate notices
- SMTP details if you want user notifications
The container images need roughly a few gigabytes before user data. Real capacity planning must include expected users, file history, office components, antivirus, backups, and growth.
Plan Domains and DNS
The main service needs a hostname such as cloud.example.com. Optional Collabora or OnlyOffice services need their own hostnames, such as collabora.example.com and office.example.com. Point every enabled name to the server.
dig +short A cloud.example.com dig +short AAAA cloud.example.com
Create an AAAA record only when IPv6 routes to this server. Certificate issuance may fail when an old IPv6 record points somewhere else.
Prepare Ubuntu 24.04
sudo apt update sudo apt upgrade -y sudo apt install -y unzip curl ca-certificates
Install Docker Engine and the Docker Compose plugin from Docker’s official Ubuntu repository. ownCloud warns that the Ubuntu-provided Docker packages may be outdated. Verify the result:
docker --version docker compose version sudo systemctl status docker --no-pager
Granting a user access to the Docker socket is effectively root-level access. Limit membership in the docker group and use sudo where your policy requires it.
Configure the Firewall
Keep SSH access working and allow HTTP/HTTPS. With UFW, a basic example is:
sudo ufw allow OpenSSH sudo ufw allow 80/tcp sudo ufw allow 443/tcp sudo ufw enable sudo ufw status
Also check the provider firewall. Container networking can interact with host firewall rules, so verify the final exposed ports instead of assuming UFW alone covers every path.
Download the Official Infinite Scale Example
Use the production version named in ownCloud’s current documentation. At this review, the guide references Infinite Scale 8.0 and the stable-8.0 example. Download the exact deployment archive from the official page rather than an old blog attachment, then transfer it to the server.
Create the deployment directory and extract the archive you downloaded:
sudo mkdir -p /opt/compose/ocis/ocis_full sudo unzip -d /opt/compose/ocis/ocis_full /opt/owncloud-ocis-example.zip cd /opt/compose/ocis/ocis_full ls -la
Replace the archive name with the actual downloaded file. The directory should contain Compose YAML files, a .env file, and configuration folders. Preserve your edited .env before replacing deployment sources during an upgrade.
Edit the Infinite Scale .env File
cd /opt/compose/ocis/ocis_full sudo cp -a .env .env.before-linuxpanda sudo nano .env
Review every option, especially:
INSECURE: do not enable insecure mode on an internet-facing production server.OCIS_DOCKER_IMAGE: use the production image, not a rolling development image.OCIS_DOMAIN: set the real cloud hostname.COLLABORA_DOMAIN/ONLYOFFICE_DOMAIN: set only for enabled office services.TRAEFIK_ACME_MAIL: use a valid email address you control.TRAEFIK_ACME_CASERVER: start with Let’s Encrypt staging while testing.OCIS_CONFIG_DIR/OCIS_DATA_DIR: choose persistent, backed-up paths sized for the workload.SMTP_*: configure secure mail delivery for notifications.
Generate strong unique secrets. Do not commit .env to Git or paste it into a support forum. Restrict its file permissions.
sudo chmod 600 .env sudo docker compose config > /tmp/ocis-compose-rendered.yml
Review the rendered configuration for missing variables and unexpected published ports, but remember it may contain sensitive values. Delete the temporary output securely after review.
Use Persistent Data Paths
Docker-managed volumes are easy, but they may live on the operating-system partition. For production, ownCloud recommends considering explicit storage paths. Mount and verify the storage before containers start, then set OCIS_DATA_DIR and OCIS_CONFIG_DIR.
sudo mkdir -p /srv/ocis/data /srv/ocis/config sudo chown -R 1000:1000 /srv/ocis/data /srv/ocis/config df -h /srv/ocis/data
Confirm the current image’s ownership requirements in the official guide. Configure the service to start only after network or external storage mounts are ready.
Start with Let’s Encrypt Staging
Keep the staging ACME server configured during the first launch so DNS or firewall mistakes do not consume production rate limits:
cd /opt/compose/ocis/ocis_full sudo docker compose up -d sudo docker compose ps sudo docker compose logs --tail=200
Check that every required container is running and the browser receives a staging certificate. Fix DNS, port 80/443, email, and configuration errors before switching to production certificates.
Switch to Production Certificates
After the staging deployment is clean, follow the current ownCloud procedure: stop the deployment, remove only the certificate volume identified by the guide, clear the staging ACME setting, and start again. Never use docker compose down -v; the -v flag can delete all volumes, including user data.
sudo docker compose down sudo docker volume ls # Remove only the documented certificate volume after confirming its exact name. sudo docker compose up -d
Then inspect logs and open https://cloud.example.com. Traefik handles certificate renewal automatically, but monitor certificate expiry independently.
First Login and Password Security
The official example documents how to obtain or set the initial administrator password. Log in through the configured HTTPS URL and immediately replace any default or generated bootstrap credential with a strong unique password. Do not leave the known admin/admin pair active.
Back Up Infinite Scale Correctly
- Back up the persistent data directory or volume using an application-consistent method.
- Back up the configuration directory, Compose files, and protected
.env. - Store copies off the server and outside the production administrator account.
- Document image versions and external identity/storage dependencies.
- Test restoration on an isolated server.
A snapshot of only the Compose YAML files does not contain users’ files. A copy of only the data directory may not contain the configuration required to interpret it. Follow the backup instructions for the exact Infinite Scale version and storage setup.
Updates and Maintenance
For patch updates within the supported production series, back up first and follow the documented Compose pull/restart process. Major or minor upgrades require their specific upgrade guide and may need new deployment sources or configuration changes.
sudo docker compose ps sudo docker compose logs --since=1h sudo docker system df
Monitor disk capacity, failed containers, login errors, certificate expiry, backup age, and application health. Do not remove images or volumes with broad cleanup commands until you have identified what is unused.
Frequently Asked Questions
Can I install old ownCloud Classic on Rocky Linux 9?
ownCloud Classic documentation lists RHEL 9 derivatives as Enterprise-only support and still requires PHP 7.4. Do not invent an unsupported community stack; confirm support with ownCloud or choose a documented deployment.
Is Infinite Scale a direct upgrade from ownCloud Classic?
No. It is a different architecture. Plan identity, metadata, files, sharing, apps, clients, and cutover as a migration.
Can I run docker compose down -v?
Not during normal maintenance. The volume flag can delete persistent data. ownCloud explicitly warns against it in the production example.
Conclusion
You have planned an ownCloud Infinite Scale deployment, prepared Ubuntu and DNS, configured the official Compose example, tested certificates in staging, and built backup and monitoring into the setup. Read the exact version’s documentation before every upgrade because container tags, variables, and deployment files change.
For server basics, review our Linux hardening checklist and SSH key guide.
If you also manage Nextcloud, see our Nextcloud 34.0.3 maintenance update guide for current supported branches, important fixes and a safe update checklist.
Reviewed and updated: August 2026. The deployment flow follows ownCloud’s official Infinite Scale production Compose guide and Infinite Scale admin documentation. The Classic comparison uses its current system requirements.











Comments