DEV Community

Cover image for Self-Hosting is easier than you think: A guide to open source PaaS
Antony Nyagah
Antony Nyagah

Posted on • Originally published at nyagah.me

Self-Hosting is easier than you think: A guide to open source PaaS

Table of Contents

A while back I built an email verifier using Go while learning the language and wanted to deploy it. Sadly, Vercel did not support Go at the time. None of the other platform-as-a-service providers supported it either at the time. Most of them supported only JavaScript, TypeScript and maybe Python.

So I went looking.

In the process of looking for something similar to the PaaS I was used to, I came across various self-hosted solutions.

What I was looking for

I wanted three things:

  • A nice UI + dashboard. Managing apps and services on the terminal is fun and all but I am a more visual person. I wanted a dashboard that would let me see all my apps and services at a glance.
  • Git-push deploys. I got used to that flow from Vercel and I wasn't giving it up.
  • No lock-in. If the platform died tomorrow, I want to move on quickly to another solution.
  • Ease of use. I wanted something that I could get up and running with little issue.

I tried a few things:

  • Coolify is the most mature. It supports something like 50 different services and is very feature-rich. But I found myself lost when trying to set it up on my VPS. This might have changed since I last tried it.

    The UI was also a bit overwhelming in terms of what I had to configure to get my projects running.

  • CapRover is the opposite. Nice and simple. Does exactly what you want. This has greatly improved since I last tried it a few years ago. Very simple and to the point.

  • Kamal is interesting. It's 37signals' tool for deploying Basecamp and HEY. All CLI, no web UI. If you live in a terminal and you trust yourself with YAML at 2am, it's solid. I wanted something between "bare metal CLI" and "kitchen sink platform."

  • Docker Compose + GitHub/GitLab actions. I still use this on some projects. But I wanted a better way to monitor what's happening with my software.

I finally settled on Dokploy.

GitHub logo Dokploy / dokploy

Open Source Alternative to Vercel, Netlify and Heroku.

Dokploy - Open Source Alternative to Vercel, Heroku and Netlify.

Join us on Discord for help, feedback, and discussions!

Discord Shield

Dokploy is a free, self-hostable Platform as a Service (PaaS) that simplifies the deployment and management of applications and databases.

✨ Features

Dokploy includes multiple features to make your life easier.

  • Applications: Deploy any type of application (Node.js, PHP, Python, Go, Ruby, etc.).
  • Databases: Create and manage databases with support for MySQL, PostgreSQL, MongoDB, MariaDB, libsql, and Redis.
  • Backups: Automate backups for databases to an external storage destination.
  • Docker Compose: Native support for Docker Compose to manage complex applications.
  • Multi Node: Scale applications to multiple nodes using Docker Swarm to manage the cluster.
  • Templates: Deploy open-source templates (Plausible, Pocketbase, Calcom, etc.) with a single click.
  • Traefik Integration: Automatically integrates with Traefik for routing and load balancing.
  • Real-time Monitoring: Monitor CPU, memory, storage, and network usage for every resource.
  • Docker Management: Easily deploy…

A dashboard showing the Dokploy interface with various running apps and real-time logs

What Dokploy actually is

One binary. You SSH into a fresh VPS, run a single curl command, and you get a dashboard on port 3000. Behind the scenes it's Docker and Traefik doing the actual work. Dokploy is the UI layer on top.

curl -sSL dokploy.com/install.sh | bash
# That's it. Open port 3000.
Enter fullscreen mode Exit fullscreen mode

What you get:

  • Git integration. Connect GitHub or GitLab, push to main, it builds and deploys. Same flow as Vercel.
  • Docker Compose support. I didn't have to learn a new config format. It reads my existing compose files.
  • Auto SSL. I have never once manually configured an SSL cert with Dokploy. Let's Encrypt via Traefik, zero touching.
  • Built-in monitoring. Logs, resource usage, healthchecks. I can see if my Telegram bot crashed without opening a terminal.

One of the most interesting parts is the Templates for common apps such as Anubis, AppSmith, Listmonk, ERPNext, Ghost, GitLab, Bugsink and many more. The list is massive.
The templates give you an editable Docker Compose file so you can customize the app to your needs. So you're not forced to use a specific setup.

Dokploy app templates

Of note is that most of these solutions depend on Docker. Most of them are essentially a UI on top of a standard Docker + Docker Compose + Traefik configuration. This means you can seamlessly move from one self-hosted solution to another. No lock-in whatsoever.

What I actually run on it

I have been using Dokploy in production for a few month now to run some open source applications including:

  • Listmonk - email marketing campaigns for an SME
  • umami - website analytics to track user behavior on a new project
  • Bugsink - error tracking for a legacy project we're maintaining

So far the setup was simple and straightforward. Pick a template, point a domain at it, edit the configurations such as environment variables and secrets, and press the deploy button.

I also have some personal projects running on it. Mainly projects built while learning new technologies or experimenting with new ideas.

The trade-offs

Self-hosting isn't all upside. I'm not going to pretend it is.

You don't get a global edge network. Your server is in one region. If your users are in Australia and your VPS is in Germany, they'll feel it. Vercel's edge network is genuinely good at this. For most side projects this doesn't matter. But if you're building something global, keep it in mind.

You manage capacity. If you get posted on Hacker News and your traffic goes 10x in an hour, Dokploy won't auto-scale. You'll need to handle that. For most side projects? Won't happen. But be honest with yourself.

You're responsible for uptime. If the server goes down at 3am, nobody's fixing it but you. I use Uptime Kuma for monitoring and I get Telegram alerts. Works for me. Might not work for you.

Database backups are on you. Dokploy makes it easy to provision handle that though. Your Docker volumes can be backed up to an S3 bucket or equivalent.

But here's what you get: fixed monthly cost. No surprise bills. Run "unlimited" projects. Full control over your infrastructure. Data stays wherever you want it. And the DevOps skills you pick up? They transfer everywhere.

Ten minutes to your own platform

  1. Get a VPS. I use Hetzner. DigitalOcean and Linode work too. Latest Ubuntu.
  2. SSH in and run the install command. That's it. Dokploy sets up Docker, Traefik, and the dashboard.
  3. Point your domain. A record to the VPS IP. SSL happens automatically.
  4. Deploy something. Connect a GitHub repo, paste a compose file, or pick a template.

Ten minutes. Then you have a platform that costs less than lunch, runs "unlimited" apps, and you actually own.

And if there's any issues, the Dokploy documentation is fantastic.

Should you switch?

If you're happy on Vercel or Heroku or something similar and you don't hit their limits, stay. They're good products.

But if you've ever opened a surprise bill, or hit a timeout limit that broke your app, or wanted to run something that didn't fit the platform's mold — try Dokploy. Spin up a VPS for a month and deploy one or two or ten side projects. Worst case, you're out less than $10. Best case, you realize you don't need the closed source PaaS platforms.

Top comments (0)