DEV Community

Cover image for Goodbye Heroku: How I Built My Own PaaS on Linode for $5
Zayan Mohamed
Zayan Mohamed

Posted on

Goodbye Heroku: How I Built My Own PaaS on Linode for $5

We all love the "git push to deploy" magic of platforms like Vercel, Netlify, and Heroku. But once your hobby project scales or you need a backend database, the pricing tiers can get scary fast.

I recently decided to take back control. I wanted the Developer Experience (DX) of a PaaS but the price tag of a raw VPS.

Enter the power couple: Linode (for the hardware) and Coolify (for the magic).

Why This Stack?

1. The Hardware: Linode

I chose Linode because it’s reliable, straightforward, and Linux-centric. You don't need to navigate a maze of IAM roles and VPCs just to launch a server. A standard "Shared CPU" Nanode starts at $5/month, which is plenty for a few containerized apps and a small database.

2. The Software: Coolify

If you haven't heard of Coolify, it’s an open-source, self-hostable Heroku alternative. It gives you a beautiful dashboard to manage your applications, databases, and services. It handles:

  • Reverse Proxies (Traefik) automatically.
  • SSL Certificates (Let's Encrypt) automatically.
  • Databases (Postgres, Redis, MySQL) with one click.
  • Deployments from GitHub/GitLab.
  • Even better: you can host your own Gitea

The Setup Process

Step 1: Spin up the Server
Head over to Linode and create a new Compute Instance.

  • Image: Ubuntu 24.04 LTS (always bet on LTS).
  • Region: Pick whatever is closest to your users.
  • Plan: Nanode 1GB (or higher if you plan to host heavy apps).

Step 2: DNS Configuration
Point your domain (e.g., paas.yourdomain.com) to your new Linode IP address. This will be the dashboard for your Coolify instance.


Step 3: Secure the Server & Install (The Right Way)

Before we run the magic Coolify script, we need to do some housekeeping. Remember, when you move from Vercel to a VPS, you are the security team.

3.1 First Contact & Updates

SSH into your new Linode instance. If you added your SSH keys during the Linode creation process (highly recommended), use:

ssh root@<your-linode-ip>

Enter fullscreen mode Exit fullscreen mode

Once inside, update the package repositories to ensure we aren't installing stale software.

apt update && apt upgrade -y

Enter fullscreen mode Exit fullscreen mode

3.2 Configure the Firewall (UFW)

Ubuntu comes with ufw (Uncomplicated Firewall). We want to close every door except the ones we need.

Coolify needs a few specific ports open to function:

  • 22: SSH (So you don't lock yourself out!)
  • 80: HTTP (For web traffic)
  • 443: HTTPS (For secure web traffic)
  • 8000: The Coolify Dashboard (You can close this later or proxy it, but keep it open for setup)
  • 6001: (Optional) If you plan to use the real-time service feature.

Run these commands one by one:

ufw allow 22/tcp
ufw allow 80/tcp
ufw allow 443/tcp
ufw allow 8000/tcp
ufw enable

Enter fullscreen mode Exit fullscreen mode

Press y when it warns you that this might disrupt existing SSH connections.

3.3 The Install

Now that the fortress is built, let's install the commander.

Coolify works best on a fresh server. It relies heavily on Docker and its own internal reverse proxy. If you have Nginx or Apache already running on port 80, the installation will fail.

Run the official install script:

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

Enter fullscreen mode Exit fullscreen mode

What is this script actually doing?

  1. It installs Docker Engine (if not found).
  2. It creates a data directory at /data/coolify.
  3. It pulls the necessary Docker images for the Coolify database and API.
  4. It sets up a restart policy so your PaaS comes back up if the server reboots.

3.4 Verification

The script usually takes 2–5 minutes depending on your Linode plan. Once it returns you to the command prompt, verify that the containers are humming along:

docker ps

Enter fullscreen mode Exit fullscreen mode

You should see coolify, coolify-db, and coolify-proxy listed. If you see them, you're golden.

Note: Always verify scripts before running them on your server!


Step 4: The Dashboard
Once the installation finishes, visit your domain (port 8000). You’ll be greeted by the Coolify setup wizard. From here, you can connect your GitHub account.

The "Aha!" Moment

The magic happens when you deploy your first app.

  1. Select your repository in Coolify.
  2. Choose your build pack (Node, Docker, Rust, Go, etc.).
  3. Click Deploy.

Coolify will pull your code, build the container, set up the internal networking, generate an SSL certificate, and expose it to the internet.

Pros vs. Cons

Pros:

  • Cost: Fixed monthly cost (Linode) regardless of bandwidth spikes.
  • Privacy: You own your data.
  • No Limits: No "build minutes" or "bandwidth caps" other than what your VPS provides.

Cons:

  • Maintenance: You are now the sysadmin. If the server goes down, you have to fix it.
  • Setup Time: Takes about 15-30 minutes upfront compared to 2 minutes on Vercel.

Conclusion

Building your own PaaS might sound like overkill, but tools like Coolify have lowered the barrier to entry significantly. For the price of a coffee, you get a powerful, private, and professional deployment environment.

If you have a spare domain and $5, give it a try. You might never go back to managed hosting again.

Coolify on Linode

Top comments (0)