The supported way to self-host current ownCloud Classic 11 on a Linux VPS is Docker Compose, not a manual PHP installation. Provision a 64-bit Linux server, install Docker Engine 20.10 or newer and Docker Compose v2 or newer, then run the official ownCloud stack with MariaDB or MySQL and Redis. For public access, place a reverse proxy in front of the container to terminate HTTPS, configure the real hostname in OWNCLOUD_DOMAIN and OWNCLOUD_TRUSTED_DOMAINS, and set trusted proxy addresses explicitly.
Antihost offers Linux VPS plans with full root access, unlimited traffic on a 1 Gbps port and a 14-day free trial.
A dependable deployment also needs persistent volumes, scheduled cron jobs, command-line access for occ, and tested backups. The following procedure separates the initial installation from the operational work that keeps the service recoverable.
As an Amazon Associate I earn from qualifying purchases.
What ownCloud supports on a Linux VPS
Starting with ownCloud Classic 11, Docker is the only supported installation method. The supported package includes PHP 8 and Apache inside the ownCloud image; manual installation on a Linux host is no longer supported. Treat the VPS as a Docker host rather than as a traditional LAMP server.
The documented container arrangement has three logical services: ownCloud for the web application, MariaDB or MySQL for the database, and Redis for locking and cache work. The example stack publishes the web service on host port 8080. That port is suitable for an internal test or for a reverse proxy on the same machine; it should not be your public HTTPS endpoint.
#1 Best Overall
- Entry-level NAS Personal Storage:UGREEN NAS DH2300 is your first and best NAS made easy. It is designed for beginners who want a simple, private way to store videos, photos and personal files, which is intuitive for users moving from cloud storage or external drives and move away from scattered date across devices. This entry-level NAS 2-bay perfect for personal entertainment, photo storage, and easy data backup (doesn't support Docker or virtual machines).
- Set Your Devices Free, Expand Your Digital World: This unified storage hub supports massive capacity up to 64TB.*Storage drives not included. Stop Deleting, Start Storing. You can store 22 million 3MB images, or 2 million 30MB songs, or 43K 1.5GB movies or 67 million 1MB documents! UGREEN NAS is a better way to free up storage across all your devices such as phones, computers, tablets and also does automatic backups across devices regardless of the operating system—Window, iOS, Android or macOS.
- The Smarter Long-term Way to Store: Unlike cloud storage with recurring monthly fees, a UGREEN NAS enclosure requires only a one-time purchase for long-term use. For example, you only need to pay $459.98 for a NAS, while for cloud storage, you need to pay $719.88 per year, $2,159.64 for 3 years, $3,599.40 for 5 years. You will save $6,738.82 over 10 years with UGREEN NAS! *NAS cost based on DH2300 + 12TB HDD; cloud cost based on 12TB plan (e.g. $59.99/month).
- Blazing Speed, Minimal Power: Equipped with a high-performance processor, 1GbE port, and 4GB RAM on Board, this NAS handles multiple tasks with ease. File transfers reach up to 125MB/s—a 1GB file takes only 8 seconds. Don't let slow clouds hold you back; they often need over 100 seconds for the same task. The difference is clear.
- Let AI Better Organize Your Memories: UGREEN NAS uses AI to tag faces, locations, texts, and objects—so you can effortlessly find any photo by searching for who or what's in it in seconds. It also automatically finds and deletes similar or duplicate photo, backs up live photos and allows you to share them with your friends or family with just one tap. Everything stays effortlessly organized, powered by intelligent tagging and recognition.
VPS requirements and sizing
Hard minimums for the Docker host
| Requirement | Minimum or recommendation | Why it matters |
|---|---|---|
| Operating system | 64-bit Linux | The current image and supported Docker deployment target a 64-bit host. |
| Docker Engine | 20.10 or newer | Older engines are outside the documented support baseline. |
| Docker Compose | v2 or newer | The stack is operated with the modern docker compose command. |
| Memory | 512 MB minimum; 1 GB or more recommended | The minimum may boot a very small instance but leaves little headroom for the database, Redis, updates, and the operating system. |
| CPU and disk | Choose for users, file count, previews, and growth | There is no useful single CPU or disk number for every installation. |
Small-workgroup baseline
ownCloud’s small-workgroup guidance starts at least 2 CPU cores and 16 GB RAM, with a scenario of up to 150 users and 100 GB to 10 TB of stored data. These are deployment recommendations, not a performance guarantee or an independent benchmark. A personal server with a few users can be smaller, but a team should treat the 2-core/16-GB profile as a conservative starting point and monitor actual load.
Storage must include the operating system, Docker layers, the ownCloud data volume, database files, temporary space for upgrades, and at least one backup destination. Because stored data grows, choose a disk that can be expanded or attach separate block storage. SSD-backed storage is preferable for database responsiveness and directory scans; the important operational property is capacity that can be increased without rebuilding the service.
Architecture by scale
| Deployment size | Application and web tier | Database and cache | Storage and traffic design | What to plan for |
|---|---|---|---|---|
| Small workgroup | One combined VPS can run the ownCloud, database, and Redis containers. | MariaDB or MySQL plus Redis on the same host. | Persistent local or attached storage; a reverse proxy on the host is practical. | Up to 150 users and 100 GB to 10 TB in the documented scenario; schedule maintenance and test restores. |
| Growing installation | Separate application capacity when CPU, memory, or concurrent requests exceed one host’s headroom. | Move the database and Redis to dedicated services when their workload needs isolation. | Use storage that can be shared or expanded and put a load-balancing layer in front of application servers. | Measure database latency, memory pressure, storage throughput, and background-job duration before splitting tiers. |
| Large or high-availability environment | Redundant application servers behind load balancing. | Database clustering or another redundant database design, with Redis sized and managed separately. | Shared storage and coordinated backup and failover procedures. | The official guidance describes these components but does not assign a universal user count or hardware size. |
Prepare the Linux VPS
- Provision a 64-bit Linux VPS in a region close to your users and choose storage with a documented expansion path. Reserve a stable public IP address or a DNS name that can be pointed to it.
- Apply the distribution’s security updates, set the correct time zone and hostname, and create an administrator account that can use
sudo. Keep direct root login disabled if your provider permits that policy. - Open only the ports you actually need. SSH is required for administration; the public web listener should be handled by the reverse proxy. If the proxy and containers share the VPS, keep the ownCloud host port 8080 bound to the local host or protected by the firewall rather than exposing it directly.
- Confirm that the VPS plan allows Docker, long-running processes, scheduled jobs, and the amount of disk I/O your workload requires.
Install and verify Docker
Install Docker Engine from the Linux distribution’s supported Docker instructions, then install the Compose v2 plugin. Do not proceed until both commands report the required versions.
docker --version
docker compose version
The first result must be Docker Engine 20.10 or newer, and the second must report Compose v2 or newer. Test that your administrative account can run a harmless container and remove it afterward. If Docker is available only through sudo, either keep using sudo docker compose consistently or add the administrator to Docker’s group and start a new login session; membership in that group grants root-equivalent control of the host.
Deploy the official ownCloud Compose stack
Get the documented stack
Use the Compose file supplied in ownCloud’s current Classic 11 Docker documentation rather than assembling an unsupported manual PHP installation. The documented example defines the ownCloud, MariaDB, and Redis services, connects them on an internal Docker network, and publishes ownCloud on host port 8080.
Rank #2
- Value NAS with RAID for centralized storage and backup for all your devices. Check out the LS 700 for enhanced features, cloud capabilities, macOS 26, and up to 7x faster performance than the LS 200.
- Connect the LinkStation to your router and enjoy shared network storage for your devices. The NAS is compatible with Windows and macOS*, and Buffalo's US-based support is on-hand 24/7 for installation walkthroughs. *Only for macOS 15 (Sequoia) and earlier. For macOS 26, check out our LS 700 series.
- Subscription-Free Personal Cloud – Store, back up, and manage all your videos, music, and photos and access them anytime without paying any monthly fees.
- Storage Purpose-Built for Data Security – A NAS designed to keep your data safe, the LS200 features a closed system to reduce vulnerabilities from 3rd party apps and SSL encryption for secure file transfers.
- Back Up Multiple Computers & Devices – NAS Navigator management utility and PC backup software included. NAS Navigator 2 for macOS 15 and earlier. You can set up automated backups of data on your computers.
- Create a dedicated directory for the deployment and restrict it to administrators.
- Place the official Compose file and its environment file in that directory. Keep database credentials and application secrets out of public repositories and shell history.
- Read every variable in the environment file before starting the stack. Replace all evaluation credentials with long, unique values and record them in an approved password manager.
- Start the services from the directory containing the Compose file.
docker compose up -d
Check that all containers are running and inspect the service logs if one exits.
Quick wins for a faster PC:
Scan for outdated or missing drivers - takes under a minuteDriver Scan →Repair Windows errors before they cause bigger problemsFix Now →docker compose ps
docker compose logs --tail=100 owncloud
docker compose logs --tail=100 db
docker compose logs --tail=100 redis
The service names in the log commands must match the names in your official Compose file. A database that is still initializing can cause ownCloud to restart temporarily; persistent errors usually indicate an incorrect credential, volume permission problem, or unavailable disk.
Set the domain and trusted domains before remote use
Set OWNCLOUD_DOMAIN to the hostname users will enter, and set OWNCLOUD_TRUSTED_DOMAINS to every legitimate hostname or reachable IP address that should be accepted. Include an address only when you genuinely need direct access; do not use a wildcard. If you change these values, recreate the affected containers so the configuration is applied.
DNS must resolve the hostname to the VPS before certificate issuance or reliable testing. Test locally first, then test from an external network. A browser warning or an ownCloud “untrusted domain” message normally means the DNS name and trusted-domain configuration do not agree.
Put HTTPS in front of the container
Why a reverse proxy is required
The ownCloud Docker image does not handle SSL. A reverse proxy such as an Nginx- or Caddy-style front end must accept HTTPS, obtain and renew the certificate, and forward requests to the ownCloud HTTP listener. The proxy can run on the same VPS or on a separate edge server.
The Tool Desk
Outbyte Driver Updater FREEFix the driver behind crashes, sound loss and screen glitchesFind Drivers →Outbyte PC Repair FREEClear out junk files and repair common Windows errorsFree Scan →Rank #3
- 【Advanced Home Data & Media Hub】For advanced home users who need phone backup, file storage, and centralized data management. Centralize family photos, 4K videos, movies, computer backups, and personal files in one place while running multiple apps for home entertainment and everyday data management. Suitable for households with growing digital libraries and multiple NAS use cases.
- 【Built for Creators, Media Servers & Advanced Apps】Powered by the Intel N100 Quad-Core CPU, 8GB DDR5 RAM, 2.5GbE networking, and dual M.2 NVMe slots, DXP2800 handles large files and heavier workloads with ease. Run Docker, virtual machines, and media server applications compatible with Plex—ideal for content creators, tech enthusiasts, and advanced home users managing 4K videos, RAW photos, personal media libraries, and multiple NAS apps.
- 【Up to 80TB for Growing Digital Libraries】 Supports up to 80TB of storage using two HDD bays and two M.2 NVMe SSD slots for family photos, movies, RAW photos, 4K videos, work files, and device backups. AI photo management supports recognition of people, objects, scenes, and locations, album organization, and duplicate photo detection. HDDs and SSDs are not included.
- 【AI-powered Home Surveillance】Turn DXP2800 into a centralized home surveillance hub by connecting compatible network cameras and storing recordings locally on your NAS. AI-powered features include Face Recognition, People Detection, and Pet Detection, helping advanced home users review important events more efficiently while managing home surveillance and personal data in one place.
- 【One data Center Across Your Devices】Keep files from desktops, laptops, phones, tablets, and other devices together instead of scattered across cloud accounts and external drives. Access, back up, organize, and share data across Windows, macOS, Android, iOS, web browsers, and compatible smart TVs—ideal for creators and advanced home users working across multiple devices.
Proxy configuration checklist
- Point the DNS A or AAAA record for the chosen hostname at the proxy’s public address.
- Configure the proxy’s upstream to the ownCloud service on port 8080, or to the internal container address when the proxy shares the Docker network.
- Enable TLS with a certificate for the exact hostname and redirect plain HTTP to HTTPS.
- Forward the original host and scheme, preserve WebSocket or long-running request support where your workload needs it, and allow uploads large enough for your files.
- Set the ownCloud trusted-proxy configuration to the proxy’s fixed IP address or network. Do not trust arbitrary client-supplied forwarding headers; otherwise a client could spoof its address and bypass IP-based controls or corrupt audit information.
- Verify that generated links use HTTPS, that login cookies are secure, and that large uploads complete without a proxy timeout.
If the proxy is on another machine, permit only its address to reach the ownCloud backend. If it is on the same VPS, bind the backend port to a private interface or firewall it so users cannot bypass TLS.
Make data and configuration persistent
Container recreation must not delete user files or the database. The official setup uses persistent Docker volumes or host mounts; persistence is the administrator’s responsibility. Identify the mounts in the Compose file and document where each one resides.
- OwnCloud data: user files, previews, and file metadata that must survive container replacement.
- Application configuration: trusted domains, installed apps, encryption settings, and other instance state.
- Database storage: MariaDB or MySQL files containing shares, users, file indexes, and settings.
- Redis data or configuration: locking and cache state according to the stack’s design.
- Compose and environment files: the exact definitions and secrets needed to recreate the deployment.
Do not assume that a Docker image, stopped container, or provider disk snapshot alone is a complete backup. A restore must include the database and configuration as well as user files, and the restored versions must be compatible.
Enable cron and retain command-line access
Background jobs handle tasks such as file scans, notifications, cleanup, and other maintenance. Configure ownCloud to use cron rather than relying on occasional web requests. The cron job must run with a schedule appropriate to your workload and invoke the ownCloud command-line tool inside the container.
What’s actually slowing this PC down?
Pick the symptom - the matching free tool is one click away.
Keep SSH or an equivalent console path available. ownCloud’s occ commands are required for administrative work such as repairs and upgrades; without command-line access, those operations are unavailable. Run commands through Compose so they execute in the same environment as the web application.
Rank #4
- Value NAS with RAID for centralized storage and backup for all your devices. Check out the LS 700 for enhanced features, cloud capabilities, macOS 26, and up to 7x faster performance than the LS 200.
- Connect the LinkStation to your router and enjoy shared network storage for your devices. The NAS is compatible with Windows and macOS*, and Buffalo's US-based support is on-hand 24/7 for installation walkthroughs. *Only for macOS 15 (Sequoia) and earlier. For macOS 26, check out our LS 700 series.
- Subscription-Free Personal Cloud – Store, back up, and manage all your videos, music, and photos and access them anytime without paying any monthly fees.
- Storage Purpose-Built for Data Security – A NAS designed to keep your data safe, the LS200 features a closed system to reduce vulnerabilities from 3rd party apps and SSL encryption for secure file transfers.
- Back Up Multiple Computers & Devices – NAS Navigator management utility and PC backup software included. NAS Navigator 2 for macOS 15 and earlier. You can set up automated backups of data on your computers.
docker compose exec owncloud occ status
The exact service name is the one assigned to the ownCloud service in your Compose file. Before maintenance, record the current image version, back up the database and data, and read the release notes for compatibility requirements. Never run a major upgrade while the database backup is unverified.
Back up and restore the deployment
Choose a backup window
ownCloud recommends Btrfs snapshots for zero-downtime backups when the underlying storage and operational skills support them. On other filesystems, plan nightly backups with a service interruption so files and database records are consistent. The snapshot or backup destination must be separate from the VPS; a destroyed server cannot restore from a copy stored on its own disk.
Backup contents
- Stop or quiesce writes according to your chosen consistency method.
- Copy the ownCloud data volume and application configuration.
- Dump the MariaDB or MySQL database with its native backup tool, or use a storage snapshot that captures the database consistently.
- Save the Compose file, environment settings, proxy configuration, TLS renewal data, and a record of Docker and ownCloud versions.
- Encrypt backups in transit and at rest, restrict access, and retain more than one recovery point.
Test a restore
- Provision a temporary 64-bit Linux Docker host with enough storage for the backup.
- Restore the Compose and environment files without exposing the test instance publicly.
- Restore the database and volumes, start the services, and run an
occstatus or repair check. - Log in with a test account, open files, download a large file, verify shares and permissions, and confirm that cron runs.
- Record the elapsed time and any manual steps, then update the production runbook.
A backup that has never been restored is an assumption, not a recovery plan.
Independent reader supportYour contribution helps us test, update, and keep practical guides available for everyone.Compare VPS and deployment designs
| Decision axis | Single combined VPS | Separated or redundant design |
|---|---|---|
| Docker and Compose | One host must support Docker Engine 20.10+ and Compose v2+. | Every application host needs a compatible Docker environment; orchestration and configuration consistency become additional work. |
| CPU and RAM | All web, database, Redis, proxy, and operating-system load competes for one pool. | Resources can be reserved per tier, improving isolation at the cost of more instances. |
| Disk | Simple administration, but one disk failure can affect every service. | Separate or shared storage can be expanded and protected independently. |
| Database | MariaDB or MySQL runs beside ownCloud for a small workgroup. | A dedicated database or cluster supports larger workloads and independent maintenance. |
| Redis | Redis is a local container in the same Compose project. | Redis can be isolated and made redundant when the design requires it. |
| HTTPS | A reverse proxy can share the VPS and forward to port 8080. | An external edge proxy or load balancer can terminate TLS for several application servers. |
| Backups and recovery | Snapshots and nightly backups are straightforward but must survive loss of the VPS. | Redundant storage and coordinated restore procedures are required. |
| Best fit | Personal use and small workgroups that accept one-host maintenance windows. | Installations that need higher availability, independent scaling, or planned failover. |
Security and operations checklist
- Use unique database and administrator credentials; replace every sample or evaluation password before exposing the service.
- Keep Docker, the Linux host, ownCloud, MariaDB or MySQL, Redis, and the reverse proxy patched on a planned schedule.
- Limit firewall access to SSH, HTTPS, and any private administration paths. Do not publish the database or Redis ports to the internet.
- Set trusted domains to exact names and trusted proxies to exact proxy addresses.
- Monitor disk capacity, memory, CPU, database errors, container restarts, certificate expiry, and failed cron runs.
- Document who can access the VPS, where secrets are stored, how to rotate them, and how to revoke access.
- Keep a tested rollback point before upgrades and retain command-line access for repairs.
Troubleshooting common failures
The browser reports an untrusted domain
Confirm that the browser hostname exactly matches OWNCLOUD_DOMAIN and one entry in OWNCLOUD_TRUSTED_DOMAINS. Check DNS and recreate the container after changing the environment file.
Users see HTTP links or redirect loops
Check that TLS terminates at the reverse proxy, that the proxy forwards the original HTTPS scheme, and that ownCloud trusts the proxy’s address. A proxy that is not trusted cannot safely communicate the original scheme; trusting every address is unsafe.
Best Value
- Entry-level NAS Home Storage: The UGREEN NAS DH4300 Plus is an entry-level 4-bay NAS that's ideal for home media and vast private storage you can access from anywhere and also supports Docker but not virtual machines. You can record, store, share happy moment with your families and friends, which is intuitive for users moving from cloud storage, or external drives to create your own private cloud, access files from any device.
- Smart Photo Backup & AI Album: Automatically back up photos and videos from your phone in real time and keep growing family memories organized with AI-powered photo albums. Semantic search, custom learning, and recognition of people, objects, pets, and similar photos help you quickly find the moments you want. Duplicate photo removal also helps keep your library organized—ideal for families and users with large photo collections.
- User-Friendly App & Easy Setup: Connect quickly via NFC, set up simply and share files fast on Windows, macOS, Android, iOS, web browsers, and smart TVs. You can access data remotely from any of your mixed devices. What's more, UGREEN NAS enclosure comes with beginner-friendly user manual and video instructions to ensure you can easily take full advantage of its features.
- More Cost-effective Storage Solution: Unlike cloud storage with recurring monthly fees, A UGREEN NAS enclosure requires only a one-time purchase for long-term use. For example, you only need to pay $629.99 for a NAS, while for cloud storage, you need to pay $719.88 per year, $1,439.76 for 2 years, $2,159.64 for 3 years, $7,198.80 for 10 years. You will save $6,568.81 over 10 years with UGREEN NAS! *NAS cost based on DH4300 Plus + 12TB HDD; cloud cost based on 12TB plan (e.g. $59.99/month).
- Your Data, You Control:No third-party clouds, no hidden access, UGREEN NAS provides a more secure and private data storage solution. It stores data locally on your private hard drives and does automatic backups. Thus, you can keep full control over it. The advanced encryption is TRUSTe certified in the United States and is awarded the first (and only) ETSI EN 303 645 certification mark for NAS products by TÜV SÜD Group.
Uploads fail or time out
Check the proxy’s request-size and timeout limits, available VPS disk space, container logs, and the database’s health. Test a file larger than the failing size from an external network.
Containers restart after reboot
Inspect docker compose ps and service logs, verify that persistent volumes are mounted, and ensure the Docker service starts at boot. A database that cannot read its volume or a missing environment variable will usually show the cause in its logs.
Background jobs never finish
Verify that cron is enabled on the host, that it invokes the correct ownCloud service, and that the command runs with the permissions expected by the container. Review logs for locked files, exhausted memory, or a full filesystem.
An upgrade leaves the instance in maintenance mode
Do not repeatedly restart containers. Confirm that a current backup exists, inspect the upgrade logs, and use the documented occ maintenance and repair commands for your ownCloud version. If recovery requires a rollback, restore the matching database and data versions together.
Quick Recap
A practical launch sequence
- Choose a 64-bit VPS with expandable storage; use at least 1 GB RAM for a very small installation and plan around 2 CPU cores and 16 GB RAM for a small workgroup.
- Install and verify Docker Engine 20.10+ and Compose v2+.
- Deploy the official ownCloud, MariaDB or MySQL, and Redis Compose stack on host port 8080.
- Replace evaluation credentials and set the real domain and trusted-domain entries.
- Configure a reverse proxy, HTTPS certificate, upload limits, and explicit trusted proxy addresses.
- Confirm that data, configuration, database, and Compose files live on persistent storage.
- Enable cron, test an
occcommand, and retain console access. - Run a backup, perform a test restore on another host, and write down the exact recovery steps.
- Only then invite users and monitor capacity, errors, and growth.
Product prices and availability are accurate as of the date/time indicated and are subject to change. Any price and availability information displayed on Amazon at the time of purchase will apply.




