Skip to content
Back to writing

~/writing field note

  • coolify
  • self-hosting
  • local-dev
  • sslip
  • cloudflare-tunnel

How to Run Coolify on Local VM and Expose it Publicly

Mustafa Ramx pixel avatarBy Mustafa Ramx14 June 20255 min readUpdated 11 July 2025
Cover image for How to Run Coolify on Local VM and Expose it Publicly
On this page9 sections
  1. Set up your VM
  2. Install Coolify
  3. Expose your Coolify to the public
  4. Coolify is public by default (via sslip.io)
  5. Configure Coolify
  6. Deploy a test app: Uptime Kuma on Coolify
  7. About security — important!
  8. Secure Coolify with Cloudflare Tunnel
  9. Need help?

Recently I tried running Coolify on my local machine for testing and playing with it. I now use this local Coolify setup as my staging, development, or home-server environment. It lets me, for free, quickly test new app deployments, monitor services, and experiment with configurations — all without touching my production server. Running Coolify on a local VM is the perfect balance between flexibility and control, especially for developers building self-hosted platforms or SaaS projects.

Here’s a simple guide — anyone can do it. You can install Ubuntu on any VM platform you like:

  • Parallels Desktop (what I used)
  • Hyper-V
  • VirtualBox
  • VMware Fusion Player
  • UTM
  • … or any other you prefer

Set up your VM

Install Ubuntu (I used the latest 24.04 LTS).

Important: use Bridged Network. This will give your VM an IP like 192.168.1.x from your router — for example, 192.168.1.110. This is very important — it makes exposing your VM to the public much easier.

Install Coolify

SSH into your VM or open a terminal.

Switch to root:

sudo -i

Make sure your server is up to date:

apt update && apt upgrade -y

Run the Coolify install:

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

Done! Coolify is now running. Access it at:

http://192.168.1.110:8000

(use your VM’s IP). You’ll need to access the Coolify admin panel right away and create your admin user.

Create the admin user in the Coolify dashboard

Expose your Coolify to the public

Now you want your VM to be reachable from the public internet:

  • Forward ports 80 and 443 from your router to your VM IP (e.g. 192.168.1.110).
  • Every router has a different UI, but the setting is usually under Port Forwarding or NAT / Virtual Server.

TP-Link example:

TP-Link router port-forwarding rule for ports 80 and 443

That’s it! Your Coolify should now be accessible on your public IP (check via whatismyip.com).

You can also use Cloudflare Tunnel if you don’t want to deal with the router.

Coolify is public by default (via sslip.io)

One cool thing: Coolify gives you public access out of the box — no domain config, no DNS setup needed.

When you deploy an app, Coolify auto-generates a domain like:

http://[your-app].[your-public-ip].sslip.io

For example, if your VM public IP is 111.177.46.125 and your app is called uptime, Coolify gives you this public link automatically:

http://uptime.111.177.46.125.sslip.io

How does it work? Coolify uses sslip.io, a smart wildcard DNS service that resolves any [subdomain].[ip].sslip.io to the actual IP. So no domain is needed — you get a working public URL instantly.

You can use this to test apps immediately, or even share it with teammates. It works great for quick staging or demo environments. Just make sure your router has 80/443 open and forwarded to your VM, and it will work globally.

Configure Coolify

Go to your Coolify dashboard. Configure your email, timezone, and create your first team/project. For more on Coolify configuration, see Configure Coolify: Deploy and Manage Your First Project (Production Ready).

Deploy a test app: Uptime Kuma on Coolify

In Coolify, add a new project and deploy Uptime Kuma from the ready services:

Deploy Uptime Kuma from Coolify’s ready services

Coolify will handle it for you.

Double-check your app configuration and that your public IP is correctly added in the service domains, like this:

Uptime Kuma service config showing the public-IP domain

Now test that your public Coolify works by visiting your deployed Uptime Kuma:

http://uptime.111.177.23.113.sslip.io

Very easy — now I can test apps locally and expose them to the public for real-world testing. Give it a try.

Can’t access your server from outside?

Some home internet providers block ports 80 and 443 to prevent public hosting from home. So even if you forward ports correctly, your Coolify might still be unreachable from the outside.

Solution: use Cloudflare Tunnel for Coolify — no port forwarding, works even behind strict ISPs.

About security — important!

This setup is great for local testing or private demo apps, but once your server is public, you must secure it:

  • Public IP + open ports = visible to attackers
  • The default Coolify setup is not hardened
  • sslip.io URLs are public — anyone can scan & find them

To protect your apps and server from abuse, I recommend installing:

  • CrowdSec Firewall (with the free IP ban list)
  • Optionally enable the Traefik AppSec WAF (Web App Firewall)

Full guide: Secure your Coolify server & websites with CrowdSec and Traefik.

Secure Coolify with Cloudflare Tunnel

If you’ve followed this guide and Coolify is working inside your local network but not accessible from the internet, your ISP is probably blocking ports 80 and 443 (very common in places like Australia 🇦🇺).

Don’t worry — there’s a workaround. See Expose Your Local Coolify Server with Cloudflare Tunnel (No Port Forwarding Needed) to securely expose Coolify (and any app) to the internet using Cloudflare Tunnel — no port forwarding needed, works even behind strict ISPs.

Found this useful or inspiring? You can support my work — buy me a coffee. Every little bit helps keep the magic alive, and my brain awake.

Need help?

If you want a fully secured Coolify server, I offer consulting & setup services:

  • CrowdSec Firewall + AppSec WAF
  • Traefik optimisation
  • Hardening SSH & system
  • Monitoring & alerts
  • Installing and managing Coolify

Reach out — happy to help you secure your server.

// share this note