Coolify
Setup
Everything must be configured before the Coolify installer runs. The installer detects an existing Docker installation and skips it, preserving our config.
-
Update OS packages before doing anything else, then reboot to apply any kernel upgrades:
sudo apt update && sudo apt upgrade -ysudo reboot -
Redirect
/datato the data disk via symlink (Coolify hardcodes/datawith no override):sudo mkdir -p /mnt/data/coolify-datasudo ln -s /mnt/data/coolify-data /data -
Configure Docker to use the data disk:
sudo mkdir -p /etc/dockersudo tee /etc/docker/daemon.json <<EOF{"data-root": "/mnt/data/docker","log-driver": "json-file","log-opts": {"max-size": "10m","max-file": "3"},"default-address-pools": [{"base":"10.0.0.0/8","size":24}]}EOF -
Configure containerd to use the data disk:
sudo mkdir -p /mnt/data/containerd /etc/containerdsudo tee /etc/containerd/config.toml <<EOFdisabled_plugins = ["cri"]root = "/mnt/data/containerd"EOF -
Install Docker manually so the Coolify installer skips it and leaves our config intact. The Coolify installer uses a non-interactive convenience script which fails silently when dpkg prompts about
config.toml— installing via apt lets us handle that prompt ourselves:sudo apt-get updatesudo apt-get install -y ca-certificates curlsudo install -m 0755 -d /etc/apt/keyringssudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.ascsudo chmod a+r /etc/apt/keyrings/docker.ascecho "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu noble stable" | sudo tee /etc/apt/sources.list.d/docker.listsudo apt-get updatesudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-pluginWhen dpkg asks about
config.toml, answerNto keep our version.Verify Docker is using the right root:
sudo docker info | grep "Docker Root Dir" -
Run the Coolify installer (ignore disk space warnings, it continues after 5s):
curl -fsSL https://cdn.coollabs.io/coolify/install.sh | sudo bash -
Back up
/data/coolify/source/.envto a password manager — it containsAPP_KEY,DB_PASSWORD,REDIS_PASSWORDand Pusher keys. Without it you cannot decrypt service environment variables after a restore:sudo cat /data/coolify/source/.env -
Open port
8000in the Infomaniak firewall dashboard. -
Open
http://<server-ip>:8000and create an admin account. -
Add DNS records at Infomaniak pointing
dashboard.<domain>to the server:- A record:
<ipv4> - AAAA record:
<ipv6>
- A record:
-
Open ports
80and443in the Infomaniak firewall dashboard (80 is needed for the Let's Encrypt HTTP challenge). -
Configure
https://dashboard.<domain>in Coolify settings and let it issue an SSL cert via Let's Encrypt. If the cert fails, re-save the domain in settings or restart the proxy to retry:sudo docker restart coolify-proxy -
Close port
8000in the Infomaniak firewall once HTTPS is working. -
Enable server metrics in Servers → localhost → Metrics — toggle it on to get CPU, memory and disk stats per container.
-
Enable 2FA on the admin account in Coolify settings.
-
Set up shared SMTP variables at the team level (Team → Shared Variables) so they can be referenced across all services as
{{team.VAR_NAME}}:Variable Value DEFAULT_SMTP_HOSTsmtp.protonmail.chDEFAULT_SMTP_PORT587DEFAULT_SMTP_USERNAMEyour Proton email DEFAULT_SMTP_PASSWORDProton SMTP token DEFAULT_SMTP_FROMyour Proton email -
Configure transactional email via Proton Mail SMTP:
- In Proton: Settings → All settings → Account → SMTP submission → enable and generate a token
- In Coolify: Settings → Transactional Email:
Field Value Enabled ✓ (must check this box) Host smtp.protonmail.chPort 587Encryption STARTTLSUsername your Proton email Password generated SMTP token Test by sending a test email from the Notifications tab in the main interface.