Understanding and installing Coolify#
Coolify is a self-hostable platform for deploying applications, databases and other services. Its interface describes what should run; Coolify connects to the target server over SSH and manages Docker there. Coolify: how it works
In this homelab, Coolify is installed in LXC 120.
The blog post records the setup.
The installation described here uses the official installer.
What each layer does#
| Layer | Responsibility in this setup |
|---|---|
| Proxmox VE | manages the LXC, its disk, CPU, RAM and network interface |
| Ubuntu inside the LXC | provides the base Linux system, package management and SSH |
| Docker inside the LXC | runs the containers |
| Coolify | manages deployments, settings and services through Docker |
Coolify adds application management to the setup. For the virtualization host itself, see Understanding Proxmox.
A typical deployment starts with source code from a Git repository or an existing container image. Coolify has the image built or downloaded and starts the containers on the chosen server. For web applications, a reverse proxy can use the domain to route requests to the appropriate application. Coolify: deployment and runtime
Installation inside the LXC#
This assumes the prepared Ubuntu 24.04 LXC with nesting, keyctl and working networking. This instance uses:
| Setting | Value |
|---|---|
| LXC address | 10.10.10.20/24 |
| Gateway | 10.10.10.1 |
| DNS | Pi-hole at 10.10.10.3 |
| Dashboard after installation | http://10.10.10.20:8000 |
As root on the Proxmox host, enter the container:
pct enter 120Run the following commands as root inside the LXC:
apt-get update
apt-get install -y curl ca-certificates openssh-server
systemctl enable --now sshCoolify uses SSH even when deploying on the same system. The official installer normally sets up the appropriate key and connection to the local server. Coolify: OpenSSH
Locale warning in a fresh container#
Enabling SSH during this setup produced:
perl: warning: Setting locale failed.LANG=en_US.UTF-8 was set, but that locale was unavailable. The fix inside the Ubuntu LXC:
LC_ALL=C apt-get install -y locales
locale-gen en_US.UTF-8
update-locale LANG=en_US.UTF-8
export LANG=en_US.UTF-8locale-gen generates the locale; update-locale sets the system default.
export applies to the current shell, while the prefixed LC_ALL=C affects only
the package installation command. This step addresses the warning encountered here.
Ubuntu: locales,
update-locale
Running the installer#
First check that SSH reports active:
systemctl is-active sshThen run the official installer inside the LXC:
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bashThe command downloads the installation script and executes it as root. It sets up
Docker and the Coolify services. Once it finishes successfully, open the dashboard
at http://10.10.10.20:8000 and create the admin account immediately: the first
registered user becomes the administrator.
Coolify: installation
For deployments in the same LXC, select the local server. Under Servers → localhost, check that it is reachable and validated. This local server is the environment inside the LXC; there is no need to add the Proxmox host as a deployment target. Coolify: local SSH connection
Access from the home network#
In the current firewall setup, the server
network belongs to Internal. Work devices in Trusted may access it. If an additional
host or container firewall is enabled, direct dashboard access needs TCP 8000,
real-time features need 6001, and the web terminal needs 6002.
SSH must remain reachable for Coolify.
Coolify: firewall ports
Websites using the integrated proxy will use 80 and 443. A domain must point to
the appropriate server, and automated HTTPS certificates require working validation.
A local IP address alone does not configure HTTPS. The current LAN access needs no
router port forwarding.
Coolify: domains
Which data needs backups#
A Coolify instance backup saves management data. Application data, databases
and volumes need their own backups. Also store /data/coolify/source/.env, containing
the APP_KEY, securely outside the LXC: without that key, encrypted credentials
cannot be read after a restore.
Coolify: instance backup
Installation is complete. Deploying the first application, adding an HTTPS address and configuring and testing backup recovery are further steps.