SSD Nodes Learn Hosting plans →
How to do am Matt ConnorBy Matt Connor

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 dey accept 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, the command go print kvm, and for bare metal e go print none; any of dem mean say you fit continue.

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

  • RAM. CasaOS dey run well with 1GB; e start for Raspberry Pi hardware and remain light. Coolify need 2GB and two CPU cores as minimum, and Coolify itself use about 600 MB. Cloudron need 2GB minimum and e genuinely prefer 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 then you no go get TLS at all.
  • Ports. Cloudron and Coolify need ports 80 and 443 open for HTTP and HTTPS. CasaOS dey serve its dashboard over plain HTTP, so e only need port 80. Coolify additionally dey serve its dashboard on 8000, and e use 6001 for its realtime channel and 6002 for the in-browser terminal. Keep port 22 open for SSH on all of dem.

Make DNS point to the server before you start. Panel wey no fit resolve its own hostname no fit request certificate, and you go spend the first hour dey debug that instead of the software. Point an A record to the server IP, and for Coolify add wildcard record (*.apps.example.com) so every deployed app fit get its own subdomain.

Cloudron: appliance wey polished and get strong opinion

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

Install. E insist on clean box and e go take over everything completely. Run this 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 installs Docker, nginx, database and mail stack, then e 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 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, and press Install. Cloudron creates DNS record, requests the Let's Encrypt certificate, provisions database, connects single sign-on, and schedules backup, all without you touching config file. Na this be the whole idea, and e dey deliver am.

TLS and backups. Na the strongest among the three. Every app subdomain gets automatic Let's Encrypt certificate, and e renew am for you. Backups dey scheduled and built in, with target as local directory, S3, or another remote storage, plus per-app restore 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: free plan allows two apps. Install third app and you hit paywall; paid subscription (Pro or Max, billed monthly or yearly, both with unlimited apps) unlocks more. Na this be the single most important fact about Cloudron. E polished because e be business, and 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 aborts 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 its installation.
Please start with a fresh Ubuntu install and run this script again.

The cause no be stubbornness for im own sake. Cloudron pins specific versions of nginx, Docker and Node and integrates 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, not even firewall wey you configure by hand. If you boot wrong image, setup also refuses anything wey no be supported Ubuntu LTS (22.04, 24.04 or 26.04) for x86-64; ARM, LXC and OpenVZ no dey supported at all. Since Cloudron 10 (September 2026), Ubuntu 26.04 na the default for new installations, so na the image to pick if you dey start from scratch today.

Second failure mode, wildcard certs need DNS API. Choose the "Manual" DNS option during setup instead of giving Cloudron API token, and e no fit create records or wildcard certificate for you. Every new app go then make you 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 flow 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: the self-hosted PaaS

Wetin e be. Coolify na open-source, self-hosted platform-as-a-service, similar to Heroku or Vercel for your own box. The main unit no be “install this packaged app”; na “deploy this Git repository”: connect repo, and Coolify go build am (through Nixpacks or your own Dockerfile) and deploy am. E go redeploy every time you push. E also get one-click databases and services. E 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 bring up 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. Dashboard dey for http://<your-ip>:8000. Create your admin account immediately, because registration page dey open until person create the first account, and whoever reach am first go control the server. Then set your instance domain and point a wildcard DNS record (*.example.com, or *.apps.example.com) to the box, so Coolify fit give every deployed app e own subdomain.

Adding your first app. Connect Git source (GitHub, GitLab, or plain 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, Services catalogue fit deploy things with just a few clicks: the same n8n workflow-automation stack wey you fit otherwise connect by hand na one entry, and Uptime Kuma for status-page monitoring na another one.

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

Cost and licensing. The self-hosted edition fully open-source and free, and e no get 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 e no compulsory.

Failure mode, app deploy but domain no load. Dashboard dey work well for http://<ip>:8000, build don turn green, but app own URL dey return connection error or Traefik 404 page not found. This one point to proxy or DNS, not your app. Two common causes dey. First, ports 80 or 443 don already dey occupied when proxy try start, so the 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, hostname no resolve to the server. E fit be because app dey use wildcard-generated subdomain and wildcard DNS record no dey, or because e dey use custom domain wey no get e own DNS record pointing to the box. 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 talk to server Docker socket at all. Usually Docker daemon don stop, or SSH key spoil. Read the real reason for logs before you guess:

docker logs coolify-proxy --tail 100

Fix am from 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 only from your own IP (or open am again temporarily when proxy dey misbehave), instead of leaving am open to everybody. E serves 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 really need self-hosting panel?

You only need am if na the four things wey panel dey automate across several apps matter to you: one-click installs, automatic TLS, scheduled backups, and user management. For one or two services, plain Docker Compose behind Traefik fit do the same TLS work with much less overhead and zero lock-in. Panel make more sense when you dey run many apps and your time worth more than the RAM wey dem dey use.

Which panel good for beginner?

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

Cloudron free?

Partly. The free tier allow two apps, and that one fit work for testing or very small setup. After that, Cloudron na paid subscription wey dem bill monthly or yearly, with unlimited apps for the paid tiers. Na commercial product with limited free plan, no be free software, so plan for the cost if your stack go grow.

I fit run these panels beside my existing apps?

Cloudron: no. E requires a clean Ubuntu box and go abort if nginx, Docker, or Node don already install, because e dey manage the whole machine. CasaOS and Coolify more friendly, because dem install their own Docker stack and fit share one box in principle. But CasaOS want port 80 for its dashboard, while Coolify proxy want both 80 and 443, so each one go clash with any web server or proxy wey already dey hold those ports. For box wey already dey host things, panel usually no be the correct tool; use Traefik and Compose instead.

How I fit move away from panel later?

Plan your exit before you need am. From CasaOS, copy the app `docker-compose.yaml and its /DATA` volumes go the new host, then start dem again. From Coolify, export each project 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 across; na only the data dey move. For every option, test the restore for a temporary box before you tear down the old one.