---
title: Installation
description: Install Coolify self-hosted PaaS on Linux servers with automated Docker setup script, manual configuration, SSH access, and firewall setup.
outline: 2
---
If you decide to go with **Coolify Cloud**, there's no installation required. Simply visit [Coolify Cloud Registration](https://app.coolify.io/register) to create an account and start using Coolify within minutes!
Below, you'll find instructions for installing Coolify if you prefer to **self-host** it.
## Self-hosted Installation
If you like taking control and managing everything yourself, self-hosting Coolify is the way to go.
It's completely free (apart from your server costs) and gives you full control over your setup.
```bash
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash
```
Run this script in your terminal, and Coolify will be installed automatically. For more details, including firewall configuration and prerequisites, check out the guide below.
The automatic installation script only works with Ubuntu LTS versions (20.04, 22.04, 24.04). If you're using a non-LTS version (e.g., 24.10), please use the [Manual Installation](#manual-installation) method below.
## Before You Begin
Before installing Coolify, make sure your server meets the necessary requirements.
### 1. Server Requirements
You need a server with SSH access. This could be:
- A VPS (Virtual Private Server)
- A Dedicated Server
- A Virtual Machine (VM)
- A Raspberry Pi (see our [Raspberry Pi OS Setup Guide](/knowledge-base/how-to/raspberry-pi-os#prerequisites))
- Or any other server with SSH access
It’s best to use a fresh server for Coolify to avoid any conflicts with existing applications.
If you haven't picked a server provider yet, consider using [Hetzner](https://coolify.io/hetzner). You can even use our [referral link](https://coolify.io/hetzner) to support the project.
### 2. Supported Operating Systems
Coolify supports several Linux distributions:
- Debian-based (e.g., Debian, Ubuntu - all versions supported, but non-LTS Ubuntu requires manual installation)
- Redhat-based (e.g., CentOS, TencentOS, Fedora, Redhat, AlmaLinux, Rocky, Asahi)
- SUSE-based (e.g., SLES, SUSE, openSUSE)
- Arch Linux (Note: Not all Arch derivatives are supported)
- Alpine Linux
- Raspberry Pi OS 64-bit (Raspbian)
For some distros (like AlmaLinux), Docker must be pre-installed. If the install script fails, manually install Docker and re-run the script.
Other Linux distributions may work with Coolify, but have not been officially tested.
### 3. Supported Architectures
Coolify runs on 64-bit systems:
- AMD64
- ARM64
Be sure to use the 64-bit version of Raspberry Pi OS (Raspbian). For details, check our [Raspberry Pi OS Setup Guide](/knowledge-base/how-to/raspberry-pi-os#prerequisites).
### 4. Minimum Hardware Requirements
Your server should have at least:
- **CPU**: 2 cores
- **Memory (RAM)**: 2 GB
- **Storage**: 30 GB of free space
Coolify may function properly on servers with lower specs than those mentioned above, but we recommend slightly higher minimum requirements.
This ensures that users have sufficient resources to deploy multiple applications without performance issues.
If you’re running both builds and Coolify on the same server, monitor your resource usage. High resource usage could make your server unresponsive.
Consider enabling swap space or upgrading your server if needed.
### 5. Server Resources for Your Projects
The resources you need depend on your projects. For example, if you're hosting multiple services or larger applications, choose a server with higher CPU, memory, and storage.
Andras runs his production apps on a server with:
- **Memory**: 8GB (average usage: 3.5GB)
- **CPU**: 4 cores (average usage: 20–30%)
- **Storage**: 150GB (average usage: 40GB)
This setup comfortably supports:
- 3 NodeJS apps
- 4 Static sites
- Plausible Analytics
- Fider (feedback tool)
- UptimeKuma (uptime monitoring)
- Ghost (newsletters)
- 3 Redis databases
- 2 PostgreSQL databases
## Installation Methods
There are two ways to install Coolify:
- [Quick Installation](#quick-installation-recommended) (Recommended)
- [Manual Installation](#manual-installation)
We highly recommend the **Quick Installation** method as it automates the process and reduces the chance of errors.
---
### Quick Installation (Recommended)
This is the simplest and fastest way to get Coolify up and running.
#### 1. Prepare Your Server
- Log in as the root user (non-root users are not fully supported yet).
- Configure SSH by following the [SSH Settings Guide](/knowledge-base/server/openssh#ssh-settings-configuration).
- Set up your firewall with the help of the [Firewall Guide](/knowledge-base/server/firewall).
- Ensure that [curl](https://curl.se/) is installed (it usually comes pre-installed).
#### 2. Run the Installation Script
Once your server is ready, run:
```bash
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash
```
View the [Script's Source Code](https://github.com/coollabsio/coolify/blob/main/scripts/install.sh)
If you're not logged in as the root user, run the script with sudo:
```bash
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash
```
#### Advanced: Customizing Installation with Environment Variables
The installation script supports several environment variables to customize your Coolify installation. These are completely optional.
You can set these environment variables before running the installation script to customize your Coolify setup:
| Environment Variable | Description | Default Value | Example |
| ---------------------------- | ----------------------------------------------------- | ------------- | -------------------- |
| `ROOT_USERNAME` | Predefined root username for first admin account | - | `admin` |
| `ROOT_USER_EMAIL` | Predefined root user email for first admin account | - | `admin@example.com` |
| `ROOT_USER_PASSWORD` | Predefined root user password for first admin account | - | `SecurePassword123!` |
| `DOCKER_ADDRESS_POOL_BASE` | Custom Docker address pool base (CIDR notation) | `10.0.0.0/8` | `172.16.0.0/12` |
| `DOCKER_ADDRESS_POOL_SIZE` | Custom Docker address pool size (must be 16-28) | `24` | `20` |
| `DOCKER_POOL_FORCE_OVERRIDE` | Force override existing Docker pool configuration | `false` | `true` |
| `AUTOUPDATE` | Enable/disable automatic Coolify updates | `true` | `false` |
| `REGISTRY_URL` | Custom Docker registry URL for Coolify images | `ghcr.io` | `your-registry.com` |
**Usage Examples:**
**1. Create Admin Account During Installation:**
```bash
env ROOT_USERNAME=admin \
ROOT_USER_EMAIL=admin@example.com \
ROOT_USER_PASSWORD=SecurePassword123 \
bash -c 'curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash'
```
See the [Create Root User with Environment Variables](/knowledge-base/create-root-user-with-env) guide for more details.
**2. Custom Docker Network Pool:**
```bash
env DOCKER_ADDRESS_POOL_BASE=172.16.0.0/12 \
DOCKER_ADDRESS_POOL_SIZE=20 \
bash -c 'curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash'
```
See the [Define Custom Docker Network with ENV](/knowledge-base/define-custom-docker-network-with-env) guide for more details.
**3. Disable Auto-Updates:**
```bash
env AUTOUPDATE=false \
bash -c 'curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash'
```
**4. Use Custom Docker Registry:**
```bash
env REGISTRY_URL=your-registry.com \
bash -c 'curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash'
```
When using a custom registry, make sure all required Coolify images are available in your registry.
**5. Combine Multiple Variables:**
```bash
env ROOT_USERNAME=admin \
ROOT_USER_EMAIL=admin@example.com \
ROOT_USER_PASSWORD=SecurePassword123 \
AUTOUPDATE=false \
DOCKER_ADDRESS_POOL_BASE=172.16.0.0/12 \
bash -c 'curl -fsSL https://cdn.coollabs.io/coolify/install.sh | bash'
```
#### 3. Access Coolify
After installation, the script will display your Coolify URL (e.g., `http://203.0.113.1:8000`). Visit this URL, and you'll be redirected to a registration page to create your first admin account.
**Immediately create your admin account after installation. If someone else accesses the registration page before you, they might gain full control of your server.**
If you installed Coolify on a Raspberry Pi within your home network, use your private IP address to access it, as the public IP may not work.
#### What the Installer Does:
- Installs essential tools (curl, wget, git, jq, openssl)
- Installs Docker Engine (version 24+)
- Configures Docker settings (logging, daemon)
- Sets up directories at `/data/coolify`
- Configures SSH keys for server management
- Installs and starts Coolify
Docker installed via snap is not supported!
**The quick installation guide ends here. If you’ve followed the steps above, you can start using Coolify now. The guide below is for those who want to manually install and set up Coolify.**
---
### Manual Installation
For those who prefer more control, you can install Coolify manually. This method requires a few extra steps.
This manual installation method is required for:
- Non-LTS Ubuntu versions (e.g., 24.10)
- Systems where the automatic script encounters issues
#### Prerequisites
- **SSH**: Ensure SSH is enabled and set up correctly (see [SSH Configuration Guide](/knowledge-base/server/openssh)).
- **curl**: Confirm that [curl](https://curl.se/) is installed.
- **Docker Engine**: Install Docker by following the official [Docker Engine Installation guide](https://docs.docker.com/engine/install/#server) (version 24+).
Docker installed via snap is not supported!
---
Follow these steps for a manual setup:
#### 1. Create Directories
Create the base directories for Coolify under `/data/coolify`:
```bash
mkdir -p /data/coolify/{source,ssh,applications,databases,backups,services,proxy,webhooks-during-maintenance}
mkdir -p /data/coolify/ssh/{keys,mux}
mkdir -p /data/coolify/proxy/dynamic
```
#### 2. Generate & Add SSH Key
Generate an SSH key for Coolify to manage your server:
```bash
ssh-keygen -f /data/coolify/ssh/keys/id.root@host.docker.internal -t ed25519 -N '' -C root@coolify
```
Then, add the public key to your `~/.ssh/authorized_keys`:
```bash
cat /data/coolify/ssh/keys/id.root@host.docker.internal.pub >> ~/.ssh/authorized_keys
chmod 600 ~/.ssh/authorized_keys
```
If you already have an SSH key, you can skip generating a new one, but remember to add it to your Coolify instance after installation.
#### 3. Setup Configuration Files
Download the necessary files from Coolify’s CDN to `/data/coolify/source`:
```bash
curl -fsSL https://cdn.coollabs.io/coolify/docker-compose.yml -o /data/coolify/source/docker-compose.yml
curl -fsSL https://cdn.coollabs.io/coolify/docker-compose.prod.yml -o /data/coolify/source/docker-compose.prod.yml
curl -fsSL https://cdn.coollabs.io/coolify/.env.production -o /data/coolify/source/.env
curl -fsSL https://cdn.coollabs.io/coolify/upgrade.sh -o /data/coolify/source/upgrade.sh
```
#### 4. Set Permissions
Set the correct permissions for the Coolify files and directories:
```bash
chown -R 9999:root /data/coolify
chmod -R 700 /data/coolify
```
#### 5. Generate Values
Update the `.env` file with secure random values:
```bash
sed -i "s|APP_ID=.*|APP_ID=$(openssl rand -hex 16)|g" /data/coolify/source/.env
sed -i "s|APP_KEY=.*|APP_KEY=base64:$(openssl rand -base64 32)|g" /data/coolify/source/.env
sed -i "s|DB_PASSWORD=.*|DB_PASSWORD=$(openssl rand -base64 32)|g" /data/coolify/source/.env
sed -i "s|REDIS_PASSWORD=.*|REDIS_PASSWORD=$(openssl rand -base64 32)|g" /data/coolify/source/.env
sed -i "s|PUSHER_APP_ID=.*|PUSHER_APP_ID=$(openssl rand -hex 32)|g" /data/coolify/source/.env
sed -i "s|PUSHER_APP_KEY=.*|PUSHER_APP_KEY=$(openssl rand -hex 32)|g" /data/coolify/source/.env
sed -i "s|PUSHER_APP_SECRET=.*|PUSHER_APP_SECRET=$(openssl rand -hex 32)|g" /data/coolify/source/.env
```
Run these commands only the first time you install Coolify. Changing these values later can break your installation. Keep them safe!
#### 6. Create Docker Network
Ensure the Docker network is created:
```bash
docker network create --attachable coolify
```
#### 7. Start Coolify
Launch Coolify using Docker Compose:
```bash
docker compose --env-file /data/coolify/source/.env -f /data/coolify/source/docker-compose.yml -f /data/coolify/source/docker-compose.prod.yml up -d --pull always --remove-orphans --force-recreate
```
You might have to do `docker login` at this point if you have any issues above.
You can customize Coolify's containers (ports, resource limits, labels, etc.) in a way that survives upgrades by creating a `docker-compose.custom.yml` file. See [Custom Compose Overrides](/knowledge-base/custom-compose-overrides) for details.
#### 8. Access Coolify
You can now access Coolify by visiting `http://203.0.113.1:8000` (replace the `203.0.113.1` with the IP address of your server).
If you get stuck at any step, feel free to join our [Discord community](https://coolify.io/discord) and create a post in the support forum channel.