The trade, stated before you start
Coolify is open source under Apache-2.0 and free to self-host with, in its own words, no restrictions on features; its optional hosted control plane is listed at $5 a month for up to two servers plus $3 a month per additional server. Self-hosting replaces a bill that scales with what your application does with a bill that equals whatever your server costs. In exchange you become responsible for uptime, backups and patching. That is the entire decision, and anybody recommending this without saying the second half is selling rather than advising.
Sizing the server honestly
Small applications are mostly idle, and idle applications share a machine well, which is why a modest virtual server comfortably runs several small production sites. Size on memory rather than on cores for typical web workloads, and leave genuine headroom for the build step, which is usually the most demanding thing the machine does all day. Scaling up later is a resize rather than a migration, so start smaller than you think and adjust once you have real numbers.
Preparing a Next.js application specifically
Three things need attention. Configure the build to emit standalone output so the container carries only what it needs to run. Ensure the image optimizer's underlying library is installed in the runtime image, or disable optimization deliberately rather than discovering it broken. And understand that incremental regeneration behaves differently outside a managed platform: on a single instance it works as expected, while multiple instances need a shared cache handler so they do not each maintain their own divergent copy.
Middleware and runtime differences
Code written for an edge runtime does not automatically behave identically on a standard server runtime. In practice this is usually favourable, the constraints of an edge environment disappear and full platform APIs become available, but it is a difference to verify rather than assume. Test the paths that run before your application logic, since those are where the assumption is embedded and where a silent behaviour change is hardest to notice.
Installing and connecting
Coolify installs onto a fresh server with a single command and presents a web interface. Connect your Git provider, point it at the repository, and it builds and deploys on push, the same loop you already have. Certificates are issued and renewed automatically through the built-in proxy, so HTTPS is configuration rather than a project. For most applications, the distance from an empty server to a working deployment is an afternoon.
Backups are the non-optional section
This is the part that separates people who are happy self-hosting from people who tell cautionary stories. Configure automated database backups to off-machine storage on day one, not later. Then restore one, so you know the process works rather than believing it does. A backup that has never been restored is a hypothesis, and the moment you need it is the worst possible moment to test it. Budget an hour for this and treat it as part of the migration rather than as follow-up work.
Monitoring from somewhere that is not the machine
Nobody is paged for you now. Put basic uptime monitoring on the applications and on the host, and make sure the alerting path does not depend on the server being alive, a monitor running on the machine it monitors reports nothing at exactly the moment it matters. Free external monitors are entirely adequate for this and take minutes to configure.
Keep a content delivery network in front
The one capability you genuinely lose is global distribution. Putting a CDN in front of your origin recovers most of it for static assets and cached pages, and several offer free tiers sufficient for typical traffic. This also reduces load on your single machine, which makes a smaller server viable for longer. Configure it as part of the migration rather than treating it as an optimisation for later.
Migrate one application first
Move something non-critical, live with it for a full billing cycle, and only then move anything that matters. A cycle reveals what a weekend cannot: whether routine maintenance lands as a manageable habit or as a recurring irritation for your particular team. Both answers are common and both are legitimate, and it is far cheaper to learn which one is yours on an application nobody depends on.
Reader comments
No account needed. Share what worked, what did not, and what you would add.
Add a quick note with the form below. Short, specific tips help the next reader most.