Self-host OpenCloud
A Go file sync and share server built on ownCloud Infinite Scale's code and developed since 2025 by OpenCloud GmbH, part of Berlin's Heinlein Group. It runs with no database: files are stored as a normal folder tree on disk and their metadata in extended attributes. Spaces, share links, desktop and mobile apps, and Collabora for office editing through an optional compose module.
Key facts
Pick OpenCloud when file sync and share is the whole job and you want it without a database: it is an Apache-2.0 Go server built on ownCloud Infinite Scale's code and developed since 2025 by OpenCloud GmbH (Heinlein Group), and its default PosixFS driver stores files in the same folder tree users see, with metadata in extended attributes — backups are a snapshot of a stopped instance. The recommended install is the `opencloud-compose` repository, with Traefik for Let's Encrypt and switch-on modules for Collabora, Keycloak, Apache Tika search, ClamAV and a Radicale CalDAV/CardDAV server. Upstream's floor is 512 MB of RAM for up to 10 users. If you want calendar, contacts, calls and an app store in the same product, Nextcloud is the fit; if you already run oCIS with a lot of sharing on it, see ownCloud vs OpenCloud before moving.
What you need
- Any VPS with at least 512 MB of RAM
- A domain you control — most self-hosted setups need HTTPS in front of them
- About an afternoon — budget time for troubleshooting
Paid link — we earn a commission if you shop through it.
Install
Run these commands on your server:
# OpenCloud — official opencloud-compose, stable branch (production image), Traefik + Let's Encrypt, per docs.opencloud.eu
# main tracks the rolling release; production uses the current stable-* branch (the name changes with each stable release)
git clone -b stable-7.2 https://github.com/opencloud-eu/opencloud-compose.git
cd opencloud-compose
cp .env.example .env
sudo mkdir -p /opt/opencloud/{config,data}
sudo chown -R 1000:1000 /opt/opencloud && sudo chmod -R 0700 /opt/opencloud
# In .env: comment out INSECURE=true; set OC_DOMAIN, COLLABORA_DOMAIN, TRAEFIK_DOMAIN, TRAEFIK_ACME_MAIL,
# INITIAL_ADMIN_PASSWORD, OC_CONFIG_DIR=/opt/opencloud/config, OC_DATA_DIR=/opt/opencloud/data, and
# COMPOSE_FILE=docker-compose.yml:weboffice/collabora.yml:traefik/opencloud.yml:traefik/collabora.yml
# (or docker-compose.yml:traefik/opencloud.yml without Collabora). Each domain needs a DNS record.
nano .env
docker compose up -d
# open https://OC_DOMAIN — user admin, password from INITIAL_ADMIN_PASSWORDWhat you take on
OpenCloud's docs are direct about the release streams, the storage rules and the limits of the built-in login: