SSD Nodes Learn Hosting plans →
How to do am Matt ConnorBy Matt Connor · Updated 2026-08-13

Cloudron vs CasaOS vs Coolify: Which One Better?

Cloudron, CasaOS, or Coolify for your VPS? See install commands, TLS, backups, cost, RAM overhead, and why Docker Compose fit still be the honest choice.

Wetin you dey build

You dey choose tool as much as you dey install one. Three panels promise to turn bare VPS to point-and-click app host: Cloudron, CasaOS, and Coolify. This guide go put each one for the same fresh Ubuntu 24.04 box, install one first app, then check the parts wey nobody dey screenshot: TLS, backups, updates, memory cost, and how hard e go be to comot. By the end, you go know which one fit you, or whether the honest answer na "none of dem, just use Docker Compose."

None of dem be magic. Under all three na the same Docker Engine wey you fit drive by hand. Wetin panel dey sell you, whether na with money, RAM, or lock-in, na four chores wey e go do for you: one-click app installs, automatic TLS certificates, scheduled backups, and user management. If those four worth the real overhead for you, panel don justify itself. If you dey run one or two services and you like to know exactly wetin dey your box, read the "Skip all three" section first and save yourself the stress.

Shared prerequisites and the honest gotchas

All three assume say na KVM VPS, no be container virtualisation. Docker need real kernel, and Cloudron no gree use OpenVZ and LXC at all. Check am with systemd-detect-virt: kvm or qemu dey okay, but openvz or lxc no dey okay. For KVM plan, command go print kvm, and for bare metal e go print none; either one mean say you fit continue.

Apart from that, the numbers no be the same, and na this be the first thing wey go guide your choice.

  • RAM. CasaOS dey run well with 1GB; e start from Raspberry Pi hardware and e still light. Coolify need 2GB and two CPU cores as minimum, and Coolify itself dey use about 600 MB of that. Cloudron need 2GB minimum, but e really happier with 4GB because e dey run mail server and database before you install even one app.
  • A domain and DNS wey you control. Cloudron and Coolify both need real domain with working DNS. Cloudron ideally need API access to your DNS provider so e fit create records and wildcard certificates by itself. CasaOS fit run with bare IP, but you no go get TLS at all.
  • Ports. All three need ports 80 and 443 open for HTTP and HTTPS. Coolify also dey serve dashboard for 8000, and e dey use 6001 for realtime channel and 6002 for in-browser terminal. Keep port 22 open for SSH on all of them.

Point DNS to the box before you start. If panel no fit resolve its own hostname, e no fit request certificate, and you go spend the first hour debugging that instead of the software. Point an A record to the server IP, and for Coolify add wildcard record (*.apps.example.com) so every app wey you deploy go get its own subdomain.

Cloudron: appliance wey polished and get strong opinion

Wetin e be. Cloudron na commercial platform wey dey turn complete server into managed appliance. E dey run im own reverse proxy, database, and mail stack, plus curated App Store wey get packaged apps (Nextcloud, WordPress, Gitea, Mattermost, and more). E target people wey want make dem manage their apps, with automatic updates, automatic certs, and automatic backups, and wey ready to pay for am.

Install. E require clean box and e go take over the whole server. Run this for fresh Ubuntu 24.04 (Noble) server, and make nothing else dey there:

wget https://cloudron.io/cloudron-setup
chmod +x cloudron-setup
sudo ./cloudron-setup

The script install Docker, nginx, database and mail stack, then reboot. When the box come back, open https://<your-ip>, accept the temporary self-signed certificate, and finish setup for browser: point am to your domain, choose your DNS provider, and e go provision im own dashboard for my.example.com.

Adding first app. For dashboard, open App Store, click (for example) Nextcloud, choose subdomain files.example.com, then press Install. Cloudron create DNS record, request Let's Encrypt certificate, provision database, connect single sign-on, and schedule backup, all without you touching config file. Na this be the main promise, and e deliver am.

TLS and backups. Na the strongest among the three. Every app subdomain get automatic Let's Encrypt certificate, and Cloudron renew am for you. Backups dey scheduled and built in. E fit target local directory, S3, or other remote storage, with restore for each app and even one-click cloning of app to new subdomain.

Cost and licensing, read this before you commit. Cloudron na paid product with capped free tier: the free plan allow two apps. Install third app and you go reach paywall; paid subscription (Pro or Max, billed monthly or yearly, both with unlimited apps) unlock more features. This na the single most important fact about Cloudron. E polished because e be business, and the free tier dey closer to extended trial than proper home for stack wey dey grow.

Failure mode, clean-box rule. If you try install Cloudron for server wey already dey run something, setup go stop before e change anything:

Error: Some packages like nginx/docker/nodejs are already installed. Cloudron requires
specific versions of these packages and will install them as part of it's installation.
Please start with a fresh Ubuntu install and run this script again.

The cause no be stubbornness without reason. Cloudron pin specific versions of nginx, Docker and Node and integrate dem deeply, so e no fit coexist with your own copies. The fix na fresh Ubuntu 24.04 image and nothing else: no web server, no Docker, and not even firewall wey you configure by hand. If you boot wrong image, setup also reject anything wey no be supported Ubuntu LTS (22.04 or 24.04) for x86-64; ARM, LXC and OpenVZ no dey supported at all.

Second failure mode, wildcard certs need DNS API. If you choose "Manual" DNS option during setup instead of giving Cloudron API token, e no fit create records or wildcard certificate for you. Each new app go then require you to add DNS record by hand before certificate fit issue, and dashboard go wait for that record. Give Cloudron API access to supported DNS provider (Cloudflare, Route 53, DigitalOcean, and others), and the whole process go become one click.

CasaOS: dashboard free wey fit manage home lab

Wetin e be. CasaOS, wey IceWhale make, na free and open-source dashboard wey dey run on top Docker. E give you home screen, app store, and file manager. E come from home-server community, so e get home-lab focus: e quick to set up, UI friendly, and e no need plenty ceremony. E target people wey like to experiment and want better interface for Docker without paying anybody.

Install. Na one line, and e no require clean server:

curl -fsSL https://get.casaos.io | sudo bash

Installer go add some systemd services (casaos, casaos-gateway, casaos-app-management, and others). Confirm say gateway don start before you open browser:

systemctl status casaos-gateway

When e dey run, dashboard dey for http://<your-ip> (plain HTTP, port 80). Create local account, then you fit enter.

How to add first app. Open App Store, choose app, click Install. CasaOS go write Docker Compose project for background and expose app on host port, for example http://<your-ip>:8080. The store get the normal home-server apps, so Jellyfin media server for VPS or self-hosted Immich photo library dey just some clicks away. If you never choose photo server, read RAM limits and phone apps wey separate PhotoPrism from Immich first. For 1GB CasaOS server, that choice fit determine whether the app go run at all. You fit also import any docker-compose.yaml wey you like. Na this be the main strength: the apps na ordinary containers, no be proprietary format.

TLS and backups, the weak point. Na here "free" get limitation. CasaOS dey serve everything over plain HTTP by default, including its own dashboard. E no get built-in Let's Encrypt, and e no get built-in scheduled backup. Your data dey inside Docker volumes under /DATA, and na you go handle the backup (a cron'd restic or tar).

Failure mode, no TLS, and e no show error. Nothing go report error. You install app, open http://<your-ip>:8080, and e work over unencrypted connection wey your browser mark "Not Secure." Passwords and session cookies go pass through network as cleartext. Worse still, CasaOS don get real remote-code-execution vulnerabilities for its dashboard (CVE-2023-37265 and CVE-2023-37266, authentication bypass wey chain into complete host compromise). So exposing that HTTP port directly to internet na real risk, no be matter of style. The fix na make you never expose CasaOS directly. Put reverse proxy for front wey go terminate TLS, like nginx with Let's Encrypt certificate from Certbot, Caddy, or Cloudflare Tunnel, then forward traffic to CasaOS only through local network. Remember say CasaOS already dey bind port 80. Your proxy and CasaOS go fight over the port unless you first move CasaOS to another port.

Cost. E genuinely free forever, with no app limit. You pay with operations: na you go manage TLS, backups, and hardening.

Coolify: PaaS wey you host by yourself

Wetin e be. Coolify na open-source, self-hosted platform-as-a-service, like Heroku or Vercel but for your own server. The main thing wey e dey handle no be “install this packaged app”, but “deploy this Git repository”: connect repo, Coolify go build am (through Nixpacks or your own Dockerfile) and release am. E go redeploy am every time you push. E also get one-click databases and services. E dey target developers wey dey deploy their own code and want push-to-deploy without renting PaaS.

Install.

curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash

The script go install Docker and start Coolify own stack of containers. Check say dem healthy before you continue:

docker ps --format 'table {{.Names}}\t{{.Status}}'

You suppose see coolify, coolify-db, coolify-redis, coolify-realtime, and coolify-proxy all dey report Up. The dashboard dey for http://<your-ip>:8000. Create your admin account immediately, because registration page dey open until somebody create the first account, and anybody wey reach am first fit control the server. Then set your instance domain and point a wildcard DNS record (*.example.com, or *.apps.example.com) to the server so Coolify fit give every deployed app its own subdomain.

Adding your first app. Connect Git source (GitHub, GitLab, or ordinary repo URL), choose branch, set domain, then deploy. Coolify built-in Traefik proxy go route the subdomain and request the certificate. For ready-made software, the Services catalogue fit deploy things with just a few clicks: the same n8n workflow-automation stack wey you fit otherwise configure by hand na one entry, and Uptime Kuma for status-page monitoring na another one.

TLS and backups. Bundled Traefik dey automatically request Let's Encrypt certificate for each app, so every deployed subdomain go get certificate. Backups dey focus first on databases: you fit schedule Postgres and MySQL dumps to S3-compatible storage. Whole-instance backup (Coolify configuration itself, wey dey under /data/coolify) dey more manual, so export and store am by yourself.

Cost and licensing. The self-hosted edition fully open-source and free, with no app limit. Optional Coolify Cloud (paid) dey available; e go host the control plane for you while your apps still dey run for your own servers. E convenient, but you no must use am.

Failure mode, the app deploy but its domain no go load. Dashboard dey work well for http://<ip>:8000, build go green, but the app own URL return connection error or Traefik 404 page not found. This one point to proxy or DNS, not your app. Two common causes dey. First, port 80 or 443 don already dey used when proxy try start, so its container stop with Docker error:

Error response from daemon: driver failed programming external connectivity on endpoint coolify-proxy: Bind for 0.0.0.0:443 failed: port is already allocated

Second, wildcard DNS record no dey, so Traefik never receive request for that hostname. If instead the whole server card for Coolify show "Server is not reachable," na different problem: Coolify no fit communicate with the server Docker socket at all. Usually Docker daemon stop, or SSH key spoil. Read the actual reason for the logs before you guess:

docker logs coolify-proxy --tail 100

Fix am from the Proxy page: press Restart Proxy, or reset proxy configuration to default and start am again. Then wait about two minutes make e settle. Keep port 8000 reachable from your own IP only, or open am temporarily when proxy dey misbehave, instead of leaving am open to everybody. The port dey serve dashboard over plain HTTP, and Coolify own docs say you fit close ports 8000, 6001 and 6002 once dashboard dey served through its own domain.

Resource overhead for the same VPS

We measure am idle for the same 4GB box, before we deploy any real workload. Check your own one with free -m and docker stats --no-stream instead of trusting only one number, because the total dey change based on the apps wey you run.

  • CasaOS na the lightest one. The panel na small group of Go services; expect around 150 to 300 MB overhead on top of any containers wey you run.
  • Coolify dey run several support containers of its own (the app, one Postgres, one Redis, one realtime service, and Traefik), so e dey around 600 MB to 1 GB idle before you deploy anything.
  • Cloudron na the heaviest when e dey idle, because e dey run its own nginx, database, mail stack and monitoring whether you use dem or not; plan for 1 to 1.5 GB idle. Na why e ask for 2GB minimum and dey work more comfortably with 4GB.

For small 2GB VPS, CasaOS go leave the most space for real apps, while Cloudron go leave the least. If your plan na 2GB and you want make Cloudron run with its mail server, plan to upgrade the box.

Updates, backups, and lock-in compare

Updates. Cloudron dey update the platform and every app for you based on schedule wey e don test: na the one wey need least effort and give you most guidance. Coolify dey update itself from im own dashboard with one button. CasaOS dey update the panel through im install script or apt, but na you go pull and restart the apps wey you install.

Lock-in, the part wey go cause wahala for second year. CasaOS get the least lock-in: im apps na normal Compose projects, so you fit copy the docker-compose.yaml and the volumes under /DATA go any other host and continue from there. Coolify dey for middle: your deploys na your own Dockerfiles and repos, but their configuration dey inside Coolify database, so moving hosts mean say you go recreate the projects for the other side. Cloudron get the most lock-in: apps dey packaged for Cloudron, and although your data fit comot cleanly through im excellent backups, the packaging no dey comot with am, so you go deploy again for the destination platform. Data fit move, but the plumbing no fit move.

Which one you suppose pick

Short version, then the exit ramp. Pick Cloudron if you want the server wey need the least hands-on work among the three, you go run several packaged apps, and you agree to pay yearly fee for managed TLS, backups and updates. Pick CasaOS if this na home lab behind your own network or reverse proxy, you want friendly interface for Docker, and you no wan pay anything. Pick Coolify if you dey deploy your own code from Git and you want push-to-deploy with automatic TLS, without the cost of hosted PaaS. If none of these three fit describe your case, the next section na the honest answer.

Skip all three if...

Be honest about your scale. If na only one or two apps you dey run, or you want understand and control exactly wetin dey your box, skip the panels. The extra overhead and lock-in no worth am for small, stable stack. The DIY path na reverse proxy wey dey front your own Compose files: Traefik with automatic TLS in front of several Docker Compose apps go give you HTTPS wey be like one-click setup, without the panel weight, and you fit back up with cron'd restic job wey you actually understand.

A minimal Traefik-labelled service, for comparison
services:
  whoami:
    image: traefik/whoami
    labels:
      - traefik.enable=true
      - traefik.http.routers.whoami.rule=Host(`whoami.example.com`)
      - traefik.http.routers.whoami.tls.certresolver=le
    networks: [web]
networks:
  web:
    external: true

Traefik dey read those labels, route the hostname, and fetch the certificate: na the same work panel dey do, but for a few lines wey you fit read.

For one main app, the case dey even clearer: Nextcloud install on Docker with TLS and its own backup routine na one Compose file and one certificate. To set up complete appliance just to run am go cost plenty without benefit. If you still dey decide wetin to run before you decide how, guide to wetin worth self-hosting for 2026 na the better place to start.

FAQ

I even need self-hosting panel?

Only if you value the four things wey panel dey automate across several apps: one-click installs, automatic TLS, scheduled backups, and user management. For one or two services, plain Docker Compose behind Traefik dey do the same TLS work with much less overhead and zero lock-in. Panels dey make sense when you dey run plenty apps and your time dey worth more than the RAM wey dem cost.

Which panel best for beginner?

For home lab wey nothing expose to hostile internet, CasaOS na the easiest place to start: one command and friendly UI, with no bill to pay. But you must put TLS-terminating reverse proxy in front before you expose anything, because e ships plain HTTP. If you want managed TLS and backups handled for you, and you go pay for am, Cloudron dey do the most hand-holding, within its two-app free limit.

Cloudron free?

Partly. The free tier allow two apps, and e good for testing or very small setup. Beyond that, Cloudron na paid subscription wey dem bill monthly or yearly, with unlimited apps for the paid tiers. Na commercial product with capped free plan, no be free software, so budget for am if your stack go grow.

I fit run these panels beside my existing apps?

Cloudron: no. E requires a clean Ubuntu box and abort if nginx, Docker or Node don already install, because e dey manage the whole machine. CasaOS and Coolify dey friendlier, because dem install their own Docker stack and fit share one box in principle, but both want ports 80 and 443, so dem go collide with any web server or proxy wey you already dey run. For box wey already dey host things, panel usually no be the right tool; use Traefik and Compose instead.

How I go move away from panel later?

Plan your exit before you need am. From CasaOS, copy the app's docker-compose.yaml and its /DATA volumes go the new host, then start dem again. From Coolify, export each project's configuration and point am to the same repos for the destination. From Cloudron, restore data from its backups into freshly installed apps for the new platform, because Cloudron packaging no dey move; na only the data dey move. For every case, test the restore on throwaway box before you tear down the old one.