Options for teams outgrowing a self-hosted PaaS on their own servers, from other self-hosted tools to running in your own AWS or GCP account.
Coolify is an open-source, self-hosted platform as a service that deploys apps, databases and one-click services to servers you connect over SSH, with a dashboard that feels close to Heroku or Railway. On one VPS with a few apps it does that well, and the only bill is the server.
It gets harder as the app grows into several services and workers, because uptime, patching, backups and scaling stay with you. Coolify can run an app on several servers, but the load balancer, the failover and the message broker are yours to set up.
Reasons teams look for Coolify alternatives:
Encore combines the application code with the cloud infrastructure it needs, so instead of a VPS running your app, its database and a broker side by side, the services, the Postgres database and the Pub/Sub topics are declared in TypeScript or Go. encore run starts them locally, and a deploy provisions managed services such as RDS and SNS/SQS in your own AWS or GCP account.

The point where a Coolify setup usually gets complicated is the first background job, when a Redis or RabbitMQ container and a worker app join the server. With Encore the queue is a Pub/Sub topic and the worker is a subscription, both in code:
import { api } from "encore.dev/api";
import { Subscription, Topic } from "encore.dev/pubsub";
export interface InvoiceRequested {
orderId: string;
email: string;
}
// Backed by SNS and SQS in AWS, and by a local broker under encore run.
export const invoiceRequested = new Topic<InvoiceRequested>("invoice-requested", {
deliveryGuarantee: "at-least-once",
});
interface CheckoutRequest {
orderId: string;
email: string;
}
interface CheckoutResponse {
queued: boolean;
}
export const checkout = api(
{ expose: true, method: "POST", path: "/orders/:orderId/checkout" },
async ({ orderId, email }: CheckoutRequest): Promise<CheckoutResponse> => {
await invoiceRequested.publish({ orderId, email });
return { queued: true };
},
);
// Failed deliveries are retried with backoff before they land in a dead-letter queue.
const _ = new Subscription(invoiceRequested, "send-invoice", {
handler: async (event) => {
await sendInvoice(event.orderId, event.email);
},
maxConcurrency: 10,
retryPolicy: { minBackoff: "1s", maxBackoff: "1m", maxRetries: 5 },
});
async function sendInvoice(orderId: string, email: string): Promise<void> {
console.log("sending invoice", orderId, "to", email);
}
encore run and become SNS/SQS with a dead-letter queue on AWS.Calling POST /orders/o_1/checkout under encore run returns {"queued":true} and the subscriber logs the invoice, with a trace of the request and the message in the local development dashboard. There is no broker container to run or back up, because SNS/SQS or GCP Pub/Sub is managed by the cloud provider in your account. Because the queue lives in the code, an AI coding agent adding a new background job declares the topic and the worker in the same change and tries them locally.
Encore is not a general-purpose host for any Docker image or one-click service, since APIs and infrastructure go through Encore's TypeScript and Go SDKs, so moving an app is a code change and third-party tools such as a self-hosted analytics app stay elsewhere. The cost model is also different, with an Encore plan plus what AWS or GCP bills your account for the managed services, compared with a flat server bill, and the guide to running in your own cloud explains how accounts are connected.
Run in your terminal to get started locally.
Dokploy is an open-source, self-hosted platform with a web dashboard for deploying applications, Docker Compose stacks and databases, and it uses Docker Swarm and Traefik to run them across servers.
Dokploy is the most direct alternative for teams that like Coolify but want clustering through Swarm. The servers, their security updates and the databases running on them are still yours to operate.
CapRoverCapRover is an open-source PaaS that runs on Docker Swarm with NGINX as the reverse proxy, with a web dashboard, one-click apps and a CLI for deploys.
CapRover has been around for years and is simple to set up, with a 1 GB RAM minimum. Its one-click databases run as containers on your nodes, so replication and backups follow whatever you configure for them.
Kamal is the open-source deploy tool from 37signals that builds a container image, pushes it to a registry and starts it on your hosts over SSH, with kamal-proxy switching traffic once the new container passes its health check.
config/deploy.yml and deploys to the hosts listed there./up.Kamal is a deploy tool rather than a platform, so there is no dashboard, and automatic HTTPS only works with a single web server, while several hosts need a load balancer you run yourself. It suits teams who are comfortable owning servers.
Dokku turns one server into a Heroku-style PaaS where git push dokku main builds the app with buildpacks or a Dockerfile and runs it behind NGINX.
Dokku is the smallest step from Coolify for a single server and has no web dashboard by default. Like the other self-hosted tools, the server, its databases and their backups are yours to look after.
Railway deploys services from a repository, an image or a template onto a project canvas, where databases such as Postgres and Redis are added as services next to the app, and billing follows resource usage.
Railway removes the server work that Coolify leaves to you, but it runs on Railway's infrastructure rather than in your own cloud account, and a message broker is another service you run there. The Railway alternatives guide compares it further.
Render runs web services, background workers, cron jobs, managed Postgres and Redis-compatible Key Value instances, with git-based deploys and Blueprint files that describe each environment.
Render is a managed platform on its own infrastructure, so the trade is less control over where things run in exchange for not operating servers, and it has no managed message broker. The Render alternatives guide covers where teams go from there.
The self-hosted tools and Encore solve different problems, since one gives any container a home on servers you control and the other takes the servers away in exchange for writing the app against Encore's SDKs. A Coolify server can keep hosting internal tools while the product backend moves, and the quickstart walks through a first Encore service.
Encore if you want services, Postgres, Pub/Sub and cron jobs declared in code and running on managed services in your own AWS or GCP account instead of servers you patch. Dokploy and CapRover are the closest self-hosted alternatives with Docker Swarm for multiple servers, Kamal suits teams that deploy containers to their own hosts over SSH, Dokku is a minimal single-server option, and Railway or Render fit teams that would rather not run servers at all.
Both are open-source, self-hosted platforms with a web dashboard for deploying apps and databases with Docker. Dokploy uses Docker Swarm and Traefik to spread apps across several servers, while Coolify deploys to standalone servers over SSH, can run the same app on several servers behind a load balancer you set up, and lists its Docker Swarm support as deprecated.
Self-hosted Coolify has no license fee, and you pay for the servers that run the Coolify instance and your workloads. Coolify Cloud, where the Coolify team runs the control plane, starts at $5 per month for two connected servers plus $3 per additional server, and your workloads still run on servers you provide.
Coolify can schedule database backups to S3-compatible storage, but you configure them per database. Its instance backup only covers Coolify's own projects, settings and deployment history, not data inside your applications, databases or volumes, and you are responsible for the servers themselves.
Declare a Topic with new Topic from encore.dev/pubsub, publish to it from an api endpoint, and process messages in a Subscription with maxConcurrency and a retryPolicy. encore run runs the topic and subscriber locally, and a deploy provisions SNS and SQS on AWS or Pub/Sub on GCP, with a dead-letter queue for messages that keep failing.
Deploy to your cloud on AWS and Google Cloud
without managing infrastructure
Encore lets developers and agents define application infrastructure directly in code, then automatically provisions it from local development to production in your AWS or GCP account.