Servers overview
A server is a machine where Coolify runs applications, databases, and services, or builds application images.
Coolify manages a connected server through SSH. The machine and its provider account remain under your control.
Coolify Cloud users must connect or provision a server before deploying a resource. Self-hosted installations start with a localhost server.
Server roles
Localhost
A self-hosted installation starts with a server named localhost. You can deploy resources to it, but those resources share CPU, memory, and storage with the Coolify dashboard.
For production workloads, consider adding a remote server so application activity does not affect Coolify itself. The localhost server cannot be removed.
Deployment servers
A deployment server is a Linux server that you own or rent and connect to Coolify. Use one to:
- deploy resources with Coolify Cloud
- keep workloads separate from the Coolify dashboard
- deploy resources in another location
- divide workloads across multiple machines
Coolify needs a working SSH path to the server. The server can use a reachable IP address, hostname, or Cloudflare Tunnel.
Build servers
Applications build on their deployment server by default. A separate build server is optional and is useful when builds need dedicated CPU, memory, or storage.
A server marked as a build server cannot host applications, databases, or services. Read Build Servers before enabling this role.
Choose how to add a server
| Your situation | Guide |
|---|---|
| You already have a Linux server | Add a server manually |
| You want Coolify to purchase and create a server at Hetzner, DigitalOcean, or Vultr | Provision a cloud server |
| You need a server used only for application builds | Configure a build server |
Both manual and provider-created servers must be validated before Coolify can deploy resources to them. During validation, Coolify checks SSH access, verifies the operating system and required tools, and installs or verifies Docker Engine and Docker Compose.
Validation can install Docker and restart the Docker service. Use a fresh server when possible. Existing containers may be temporarily unavailable.
