SSD Nodes Learn
How to do am Matt ConnorBy Matt Connor · Updated 2026-07-24

Cloudron vs CasaOS vs Coolify: wey better?

Compare Cloudron, CasaOS, and Coolify for your VPS. We check TLS, backups, and RAM usage so you go know which one fit your Ubuntu 24.04 box for self-hosting.

Wetin you dey build

Choosing tool na different thing from just installing am. Three panels dey promise to turn bare VPS into point-and-click app host: Cloudron, CasaOS, and Coolify. Dis guide go put each one for fresh Ubuntu 24.04 box, install first app, den look deep for di parts wey nobody dey screenshot: TLS, backups, updates, memory cost, and how hard e go be to leave am. By di end, you go know wey one fit, or if di real answer na "none of dem, just use Docker Compose."

None of dem be magic. Under all three, na di same Docker Engine wey you fit run by hand. Wetin panel dey sell you—whether na cash, RAM, or lock-in—na four chores wey dem don do for you: one-click app installs, automatic TLS certificates, scheduled backups, and user management. If dem four worth di extra overhead for you, den panel don pay for itself. If you dey run only one or two services and you like to know exactly wetin dey inside your box, read di "Skip all three" section first make you no waste time.

Shared prerequisites and the honest gotchas

All three of dem assume say you dey use KVM VPS, no be container virtualisation. Docker need real kernel, and Cloudron no go accept OpenVZ or LXC at all. Check with systemd-detect-virt: kvm or qemu dey okay, but openvz or lxc no go work. For KVM plan, command go print kvm, and for bare metal, e go print none; if you see any one of dem, you dey okay to continue.

After that, the numbers go start to change, and na dis one go help you choose.

  • RAM. CasaOS dey run well for 1GB; e start from Raspberry Pi hardware so e dey light. Coolify need at least 2GB and two CPU cores, and about 600 MB of dat na Coolify itself. Cloudron need 2GB minimum, but e go work better for 4GB, because e dey run mail server and database before you even install one app.
  • A domain and DNS wey you control. Cloudron and Coolify both need real domain with working DNS. Cloudron prefer say e get API access to your DNS provider so e fit create records and wildcard certificates by itself. CasaOS fit run for bare IP, but if you do dat one, you no go get TLS at all.
  • Ports. All three need 80 and 443 open for HTTP and HTTPS. Coolify also dey use port 8000 for im dashboard, e dey use 6001 for im realtime channel, and 6002 for im in-browser terminal. Make sure say port 22 dey open for SSH for every one of dem.

Point your DNS to the box before you start. If panel no fit resolve im own hostname, e no fit request certificate, and you go spend first hour debugging dat 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 im own subdomain.

Cloudron: the polished, opinionated appliance

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

Install. E dey insist on clean box and e dey take over everything. Run this one for fresh Ubuntu 24.04 (Noble) server and nothing else:

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

The script go install Docker, nginx, database, and mail stack, then e go 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 its own dashboard for my.example.com.

How to add first app. For the dashboard, open the App Store, click (for example) Nextcloud, choose the subdomain files.example.com, and press Install. Cloudron go create the DNS record, request the Let's Encrypt certificate, provision the database, wire up single sign-on, and schedule backup, all without you touch any config file. Na this one na the whole point, and e dey work.

TLS and backups. Na the strongest part of the three. Every app subdomain go get automatic Let's Encrypt certificate, wey go renew for you. Backups dey follow schedule and e dey built-in, wey dey target local directory, S3, or other remote storage, with per-app restore and even one-click cloning of an app to a new subdomain.

Cost and licensing, read this before you commit. Cloudron na paid product wey get capped free tier: the free plan allow two apps. If you install third app, you go hit paywall; paid subscription (Pro or Max, wey dey bill monthly or yearly, both with unlimited apps) go unlock more. Na the most important fact about Cloudron. E dey polished because na business, and the free tier dey more like extended trial than home for stack wey dey grow.

Failure mode, the clean-box rule. If you try install Cloudron for server wey already dey run something, setup go abort 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 say e dey picky for nothing. Cloudron dey pin specific versions of nginx, Docker and Node and e dey 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, no even firewall wey you configure by hand. If you boot wrong image, setup go refuse anything wey no be supported Ubuntu LTS (22.04 or 24.04) on x86-64; ARM, LXC and OpenVZ no dey supported at all.

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

CasaOS: free home-lab dashboard

Wetin e be. CasaOS, from IceWhale, na free and open-source dashboard wey dey run for top of Docker. E dey give you home screen, app store, and file manager. E come out from home-server world, so e focus na home-lab: e fast to set up, e get friendly UI, and e no get too much wahala. E target people wey like to tinker and dem want better face for Docker without pay money to anybody.

Install. One line only, and e no need clean box:

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

The installer go add some systemd services (casaos, casaos-gateway, casaos-app-management, and friends). Make sure say gateway don come up before you open browser:

systemctl status casaos-gateway

When e dey run, the dashboard dey at http://<your-ip> (plain HTTP, port 80). Create local account and you don enter.

How to add first app. Open App Store, pick app, click Install. CasaOS go write Docker Compose project for background and e go open the app for one host port, like http://<your-ip>:8080. E store get all the usual home-server apps, so Jellyfin media server for VPS or self-hosted Immich photo library dey just two clicks away. You fit also import any docker-compose.yaml wey you like, and na that one be real strength: the apps na ordinary containers, no be any special format.

TLS and backups, the weak point. Na here "free" dey show im limit. CasaOS dey serve everything for plain HTTP by default, including im 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, so to back am up na your own work (use cron'd restic or tar).

Failure mode, no TLS, and e dey silent. No error go show. You install app, open http://<your-ip>:8080, and e go work, but e dey run for unencrypted connection wey your browser go mark as "Not Secure." Passwords and session cookies dey travel for wire for cleartext. Worse part, CasaOS don get real remote-code-execution vulnerabilities for im dashboard (CVE-2023-37265 and CVE-2023-37266, authentication bypass wey fit make person take over full host), so to open that HTTP port straight to internet na real risk, no be just small matter. The fix na make sure say you no ever open CasaOS directly. Put reverse proxy for front wey go handle TLS, like nginx with Let's Encrypt certificate from Certbot, Caddy, or Cloudflare Tunnel, and forward am to CasaOS for local network only. Note say CasaOS don already take port 80, so your proxy and CasaOS go dey fight for am unless you move CasaOS go another port first.

Cost. E free for real, forever, no limit for app. You go pay with work: you must handle TLS, backups, and hardening yourself.

Coolify: the self-hosted PaaS

Wetin e be. Coolify na open-source, self-hosted platform-as-a-service, like Heroku or Vercel but e dey run for your own box. E no dey focus on "install this packaged app" but "deploy this Git repository": you connect repo, then Coolify go build am (using Nixpacks or your own Dockerfile) and ship am, and e go redeploy every time you push code. E also get one-click databases and services. E for developers wey dey deploy their own code and want push-to-deploy without to pay for PaaS.

Install.

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

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

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

You must see coolify, coolify-db, coolify-redis, coolify-realtime, and coolify-proxy all dey report Up. The dashboard dey at http://<your-ip>:8000. Create your admin account sharp-sharp, because the registration page go dey open until first account enter, and whoever reach am first go control the server. After that, set your instance domain and point a wildcard DNS record (*.example.com, or *.apps.example.com) to the box so Coolify fit give every app wey you deploy its own subdomain.

How to add first app. Connect Git source (GitHub, GitLab, or plain repo URL), pick branch, set domain, and deploy. Coolify's built-in Traefik proxy go route the subdomain and request the certificate. For software wey dey ready, the Services catalogue go deploy things with just two clicks: the same n8n workflow-automation stack wey you fit wire up by hand na one entry, and Uptime Kuma for status-page monitoring na one entry too.

TLS and backups. Automatic Let's Encrypt dey for every app through the bundled Traefik, so every subdomain wey you deploy go get certificate. Backups focus on database: you fit schedule Postgres and MySQL dumps to S3-compatible storage. Whole-instance backup (the Coolify configuration itself, wey dey under /data/coolify) na manual work, so you must export and store am yourself.

Cost and licensing. The self-hosted edition na fully open-source and free, no limit for app. E get optional Coolify Cloud (wey dem dey pay for) wey go host the control plane for you while your apps still dey run for your own servers; e easy to use but you no need am.

Failure mode, the app deploy but its domain no go load. The dashboard dey work fine for http://<ip>:8000, the build go show green, but the app's own URL go give connection error or Traefik 404 page not found. This one mean say the problem dey for proxy or DNS, no be your app. Two things dey cause am. First, port 80 or 443 fit don dey use when proxy try start, so its container die 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, the wildcard DNS record no dey, so Traefik no go ever receive request for that hostname. If the whole server card for Coolify dey show "Server is not reachable," na different problem: Coolify no fit talk to the server's Docker socket at all, usually because Docker daemon don stop or SSH key don spoil. Read the real reason for logs before you start to guess:

docker logs coolify-proxy --tail 100

Fix am from the Proxy page: press Restart Proxy, or reset the proxy configuration to default and start am again, then wait about two minutes make e settle. Keep port 8000 open for your own IP only (or re-open am temporarily if proxy dey behave bad) instead of to leave am open for everybody — e dey serve the dashboard over plain HTTP, and Coolify's own docs say port 8000, 6001 and 6002 fit close once the dashboard dey run through its own domain.

Resource overhead on the same VPS

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

  • CasaOS na him lightest. The panel na small set of Go services; expect roughly 150 to 300 MB of overhead for top of any container wey you run.
  • Coolify dey run several support containers for itself (the app, a Postgres, a Redis, a realtime service, and Traefik), so e dey sit around 600 MB to 1 GB idle before you deploy anything.
  • Cloudron na him heaviest when e dey rest, because e dey run its own nginx, database, mail stack and monitoring whether you use dem or you no use dem; budget 1 to 1.5 GB idle. Na why e dey ask for 2GB minimum and e dey breathe easier for 4GB.

For small 2GB VPS, CasaOS dey leave pass room for real apps, but Cloudron dey leave least room. If your plan na 2GB and you want use Cloudron with its mail server running, plan to upgrade the box.

Updates, backups, and lock-in comparison

Updates. Cloudron dey update the platform and every app for you for one schedule wey dem don test: e no dey require much work and e dey help you well well. Coolify dey update itself from its own dashboard with one button. CasaOS dey update the panel through its install script or apt, but the apps wey you install, na you dey control how you go pull and restart dem.

Lock-in, the part wey dey bite for year two. CasaOS get least lock-in: its apps na ordinary Compose projects, so you fit copy the docker-compose.yaml and the volumes under /DATA go any other host and continue your work. Coolify dey middle: your deploys na your own Dockerfiles and repos, but their configuration dey inside Coolify database, so if you wan move host, you go need re-create the projects for the new side. Cloudron get most lock-in: apps na Cloudron-packaged, and even though your data fit leave easily through its excellent backups, the packaging no fit follow am, so you go need re-deploy for the new platform. Data dey portable, but plumbing no dey portable.

Which one you suppose pick

Short version, den exit ramp. Pick Cloudron if you want server wey no go stress you at all, if you wan run many packaged apps, and if you ready to pay yearly fee for managed TLS, backups, and updates. Pick CasaOS if na home lab wey dey behind your own network or reverse proxy, if you want easy way to use Docker, and if you no wan pay any money. Pick Coolify if you dey deploy your own code from Git and you want push-to-deploy with automatic TLS, without to pay for hosted PaaS. If none of these three fit you, the next section na the honest answer.

Skip all three if...

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

One 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 wey panel dey do, but for few lines wey you fit read.

For one single flagship app, the matter clear even more: Nextcloud install on Docker with TLS and its own backup routine na just one Compose file and one certificate. To set up entire appliance just to run am go waste money and no get benefit. If you still dey decide what to run before you decide how, the guide to what is worth self-hosting in 2026 na better place to start.

FAQ

I even need self-hosting panel?

Only if you want the four things wey panel dey automate for many apps: one-click installs, automatic TLS, scheduled backups, and user management. If you only get one or two services, plain Docker Compose behind Traefik go do the same TLS job with less overhead and zero lock-in. Panel dey pay if you run many apps and your time worth more than the RAM wey dem dey consume.

Which panel best for beginner?

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

Cloudron free?

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

I fit run these panels next to my existing apps?

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

How I go move off panel later?

Plan your exit before you need am. From CasaOS, copy the app's docker-compose.yaml and its /DATA volumes to the new host and start dem again. From Coolify, export each project configuration and point am at 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 travel, only the data dey travel. For every case, test the restore for one throwaway box before you tear down the old one.

#cloudron#casaos#coolify#self-hosting#docker