A little more than a year ago I consolidated most of my self-hosting to Coolify.

Despite my technical wanderlust, I’m happy to report that Coolify has stuck!

Setting up PHP apps is more cumbersome than it was with Ploi, and my Docker Compose deployments come with a few seconds of downtime rather than none at all. But I love that I can host whatever I want, each project with isolated components and easy backups, and throw as many servers into the equation as I feel like.

I often try out new apps, host half-finished projects I end up retiring, and change things in general, but I thought I’d let you know how it’s going. I don’t know why you care, but it’s really nice of you.

Servers

I’ve got myself down to four individual servers, which for me is a feat. I love trying out services from smaller providers and finding reliable hosting that’s more powerful than big ones at a fraction of the cost.

  • 2-core, 4GB Los Angeles VPS running Coolify
  • 4-core, 6GB San Francisco VPS running Mastodon and Checkmate
  • 4-core, 8GB Los Angeles VPS running lots of stuff
  • 4-core, 16GB San Jose VPS running lots more stuff

Each is on Ubuntu 24.04 LTS with an EPYC CPU, NVMe storage, and more bandwidth than I’ll ever use.

I keep them on a Tailscale network for SSH access, and manually update their system packages from the command line every now and then.

Many have come and gone, but these four servers are my stable, well-performing, well-connected champions[1]. I renew them a year at a time, and combined they cost $16.10 per month.

There’s enough headroom that I don’t have to worry too much about resources or speed. They don’t pool resources unfortunately, but migrating a needy app from one server to another isn’t all that painful.

Apps

These are the apps (“Projects”) I have running right now. Most of them have been live for months if not the whole year:

  • Actual for budgeting
  • Axiom Syslog Proxy for forwarding logs to Axiom
  • Kirby development site
  • Bluesky PDS even though I’m rarely on Bluesky
  • Checkmate for monitoring site uptime and PageSpeed scores
  • Checkmate Capture because I needed to see what Checkmate’s hardware monitoring looks like
  • small hosted utility written on the Flight framework
  • barebones Craft CMS instance I use for testing my Docker setup
  • Dekindler Demo for an old Kindle note parser I wrote
  • DocuSeal for document signing
  • Duplicati for facilitating remote backups of Docker data
  • Feed Canary, my Laravel app for monitoring RSS feed health
  • DumbDrop for people to easily send me files
  • private Laravel app for managing meetups with friends
  • GlitchTip to take place of Sentry for personal projects
  • HedgeDoc for sharing words with people
  • Kirby for my other blog
  • Mastodon for t00t.cloud
  • MinIO for various S3-compatible storage
  • Monica personal CRM
  • Outline as an experimental Notion replacement
  • a small collection of flattened client sites
  • Typesense for fun and powering this site’s secret-ish search page
  • Umami for website analytics
  • Unsend useSend for SES-backed transactional email

MinIO and useSend have stood out to me.

I might be the last person to realize how useful MinIO can be since so many projects support S3 storage, but it’s nice to have cloud storage buckets on fast servers of my choosing.

useSend has made it possible to consolidate most transactional email into one place, easily manage and keep an eye on things, pay very little for the few emails I send from these projects, and still enjoy reliable delivery.

Working Impression

Keeping Coolify up to date has been painless. The release cadence has been all over the place, and while there have been a few disruptive bugs communication and fixes have usually been swift. Overall my experience relying on Coolify has been largely stable and without drama—most problems were my own failure to read release notes, or actively derping my way through things like migrating projects between servers.

I migrated the Coolify instance, by the way, to a more reliable and less expensive VPS and it went surprisingly well.

I like that predefined services are added all the time. It feels like Coolify has enough momentum that if a self-hostable app isn’t already available someone will likely have written a post about it by the time I’m looking.

Paul Anthony Webb’s notes about Stalwart led me to Aldert Vaandering’s post about running it on Coolify, and I was close to getting my own email server running before I realized I was about to get my own email server running. I have not one but two perfectly good lifetime email hosting accounts I’m happy with and I’ve been down this road before. I do not need to run my own email server. I already learned the hard way. But I could have had Stalwart running. It’s the kind of thing I keep doing with Coolify.

If you don’t want to be messing with Docker or Docker Compose I can’t recommend Coolify. While you can easily spin up predefined services, hosting your own projects means you’ll need to spend time figuring out how to deploy whatever you made.

If you want to be learning these things, however, and you’re the type to spin up projects just to be able to poke at them and learn, Coolify may be a fun and satisfying tool to explore.

I’ve improved my Docker setups over time. I experimented with Laravel Cloud and that inspired me to get Octane + FrankenPHP working with self-hosted projects.

Broadly, Coolify has fallen into place as a hosting Swiss Army knife, and we’re having a nice time together. No major drama or container that can’t be rebuilt and redeployed. I’ll post an update if things manage to go sideways or I find some newer, shinier thing to play with, but I see myself sticking with Coolify and being happy to watch it evolve.

In a time where big annoying companies seem to have a stranglehold on the internet[2], it’s nice to have a corner where I’m cheerfully running stuff I like to use and play with.


  1. Advin Servers (affiliate), GreenCloud (affiliate, promo stock tracker), and HostDZire. ↩︎

  2. I realize I’m relying on huge companies AWS, Cloudflare, and Tailscale so this is all relative. ↩︎