Coolify
Overview
Coolify is an open source, self-hostable platform as a service (PaaS) and an alternative to Heroku, Netlify and Vercel that you run on your own server. Connect a Git repository, or point Coolify at a Dockerfile or Compose file, and it builds, deploys and reverse-proxies your application from a single dashboard.
This SecureAnyCloud image installs Coolify 4.1.2 from the official installer as a Docker Compose stack and runs it as a systemd service. A self-hosted PaaS with automatic HTTPS, one-click managed databases, environment and secret management and live build logs is online within minutes of launch.
What you get:
- Coolify 4.1.2 (Apache 2.0) installed from the official installer, pinned so the image never silently upgrades at build time
- Docker Engine (Docker CE) and the Docker Compose plugin, installed by the Coolify installer as the build and deployment runtime
- The Coolify Docker Compose stack: the
coolifyLaravel app,coolify-db(PostgreSQL 15),coolify-redis(Redis 7) andcoolify-realtime(the Soketi websocket server for the live dashboard) - The dashboard published on port 8000 with Coolify's own first-party email and password authentication
- Coolify's built-in Traefik reverse proxy (
coolify-proxy) owning ports 80 and 443 to route traffic to the applications you deploy - All Coolify state (application database, per-application build state, managed SSH keys, backups and
source/.env) on a dedicated 40 GiB data disk mounted at/data/coolify, independently resizable and re-provisioned on every VM - A per-VM administrator login (email and a 25-character password) generated and seeded at first boot, with open self-registration disabled
- Two systemd units:
coolify.service(a oneshot wrapper arounddocker compose up -d) andcoolify-firstboot.service - 24/7 SecureAnyCloud support
Prerequisites
You need an active Azure subscription, an SSH key, and a VNet with a subnet.
Standard_B4ms (16 GB RAM) is the recommended size. It is comfortable for the Coolify stack plus the containers you deploy.
Configure the network security group (NSG) inbound rules as follows:
22/tcpfrom your management CIDR, for SSH8000/tcpfrom the CIDR that needs the Coolify dashboard80/tcpand443/tcpfrom any client CIDR that will reach the applications Coolify deploys through its Traefik proxy
Connect over SSH
Connect to the VM over SSH as azureuser, the default login user. Replace <vm-ip> with the public IP of your VM.
ssh azureuser@<vm-ip>Confirm the services are active
sudo systemctl is-active docker.service coolify.service docker --version docker compose versionThe output shows active twice, then the Docker Engine version and the Docker Compose v2 plugin version.
Confirm the Coolify containers are running
sudo docker ps --format "table {{.Names}}\t{{.Status}}"The containers coolify, coolify-db, coolify-redis and coolify-realtime should all show the Up / healthy state. Coolify's own Traefik proxy (coolify-proxy) starts when you connect your first server from the dashboard.
Confirm the data disk is mounted
All Coolify state lives on a dedicated data disk mounted at /data/coolify. Check the mount:
findmnt /data/coolify df -h /data/coolifyfindmnt shows the device backing /data/coolify, and df confirms the 40 GiB volume.
Read the per-VM administrator credentials
First boot generates a unique administrator email and password for your instance and writes them to a root-only file. Self-registration is disabled, so this is the only login until you invite more users from the dashboard.
sudo cat /root/coolify-credentials.txtNote the coolify.url, coolify.admin.email and coolify.admin.pass values. The dashboard URL is http://<vm-ip>:8000/.
Confirm the dashboard health endpoint
curl -fsS http://127.0.0.1:8000/api/healthCoolify returns OK once the application is fully up.
Verify the administrator login works
Confirm that the per-VM administrator password authenticates against Coolify's login. This script fetches the CSRF token, posts the credentials and checks that the response is a successful redirect.
EMAIL=$(sudo grep '^coolify.admin.email=' /root/coolify-credentials.txt | cut -d= -f2-)
CJ=$(mktemp)
curl -s -c "$CJ" 'http://127.0.0.1:8000/login' >/dev/null
XSRF=$(grep XSRF-TOKEN "$CJ" | awk '{print $NF}' | python3 -c 'import sys,urllib.parse;print(urllib.parse.unquote(sys.stdin.read().strip()))')
curl -s -b "$CJ" -o /dev/null -w 'login HTTP %{http_code}\n' \
-H "X-XSRF-TOKEN: ${XSRF}" -H 'X-Requested-With: XMLHttpRequest' \
--data-urlencode "email=${EMAIL}" --data-urlencode "password=<COOLIFY_ADMIN_PASSWORD>" \
'http://127.0.0.1:8000/login' rm -f "$CJ"A 302 (redirect to the dashboard) confirms the login succeeded.
Sign in to the Coolify dashboard
Browse to http://<vm-ip>:8000/ and sign in with the email and password from Step 5. The login page notes that registration is disabled, because the first-boot root administrator is the only account.
Complete the welcome / onboarding
On first sign-in, Coolify shows a short onboarding screen. Click Skip Setup to go straight to the dashboard, or click Let's go! to walk through connecting your first server.
The Coolify dashboard
The dashboard is your single pane of glass. The left sidebar lists Projects, Servers, Sources (Git providers), Destinations, S3 Storages, Shared Variables, Keys & Tokens, Settings and more.
The localhost server, which is the Docker host Coolify runs on, is ready to deploy to immediately.
Servers
Open Servers to manage the local Docker host and connect additional servers for distributed deployments. The pre-configured localhost entry is the server Coolify itself runs on, so do not delete it.
Instance settings
Open Settings to configure the instance. You can set the public URL and name, the instance timezone, the public IPv4/IPv6 used for deployments, transactional email, OAuth providers, automated backups and scheduled jobs.
Set the URL to your own domain here once you front the dashboard with HTTPS.
Deploy your first application
From the dashboard, create a Project, then add a resource. Connect a Source (GitHub, GitLab, Bitbucket or a public Git URL), or point Coolify at a Dockerfile or Docker Compose file.
Coolify builds the image, deploys the container, wires it into its Traefik proxy and, optionally, provisions a Let's Encrypt certificate. You can also provision one-click managed databases (PostgreSQL, MySQL, MariaDB, MongoDB, Redis, KeyDB and more) and deploy ready-made services from the catalogue.
Coolify's own Traefik proxy serves the applications you deploy on ports 80 and 443. That is why this image does not run nginx and does not rebind port 80. The dashboard stays on port 8000.
Serve the dashboard over HTTPS on your own domain (optional)
To reach the dashboard at https://coolify.example.com instead of http://<vm-ip>:8000, point a DNS A record at the VM's public IP. Then open Settings > Configuration > General and set the instance URL to your domain.
Coolify's Traefik proxy requests a Let's Encrypt certificate and routes the domain to the dashboard. Make sure ports 80 and 443 are open in your NSG so the ACME HTTP-01 challenge and HTTPS traffic can reach the proxy.
Day-2 operations
Manage the stack with systemd and Docker Compose:
sudo systemctl status coolify.service --no-pager sudo systemctl restart coolify.serviceThe Coolify state, including the application database, lives under /data/coolify on the dedicated data disk. It survives instance replacement and can be resized independently.
To upgrade Coolify, review the Coolify release notes first, then run the official upgrade script at /data/coolify/source/upgrade.sh.
Support
SecureAnyCloud provides 24/7 technical support by email and chat. Support covers deployment, connecting Git providers and servers, application and database deployment, the Traefik reverse proxy and HTTPS, environment and secret management, backups and runtime tuning.
All product and company names are trademarks or registered trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them. Coolify is a trademark of its respective owner.
Deploy on Azure
Launch Coolify 4.1.2 Self-Hosted PaaS on Ubuntu 24.04 LTS on Azure with 24/7 support from SecureAnyCloud.
View this image
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com
Overview
Coolify is an open source, self-hosted platform as a service (PaaS) for deploying and managing applications, databases and services on your own server. From a single dashboard, you deploy from a Git repository, a Dockerfile or a Docker Compose file. Coolify adds a built-in reverse proxy, automatic HTTPS, one-click managed databases, environment and secret management, scheduled backups, and live build and runtime logs, with no per-seat fees or vendor lock-in.
This image installs Coolify 4.1.2 from the official installer as a Docker Compose stack and runs it under a systemd service that brings the stack up on boot. What you get:
- The Coolify stack: the Coolify application (a Laravel app), a PostgreSQL database, a Redis cache and a realtime websocket server
- All Coolify state, which holds the application database, your per-application build state, managed SSH keys and the configuration, at
/data/coolifyon a dedicated, independently resizable EBS data volume that survives instance replacement - Coolify's own first-party authentication, with the dashboard published directly on port 8000 behind its own email and password login
- Coolify's built-in Traefik reverse proxy, which owns ports 80 and 443 and routes HTTP and HTTPS traffic to the applications you deploy, so the image runs no other reverse proxy in front of the dashboard
- An initial root administrator login generated on the first boot of every instance, so two instances launched from the same Amazon Machine Image never share a login. Open self-registration is disabled once the administrator is seeded.
- The login written to
/root/coolify-credentials.txtwith mode 0600, so only the root user can read it
Prerequisites
Before you deploy this image, you need:
- An Amazon Web Services account where you can launch EC2 instances
- IAM permissions to launch instances, create security groups, and subscribe to AWS Marketplace products
- An EC2 key pair in the target Region for SSH access to the instance
- A VPC and subnet in the target Region, with a security group that allows inbound port 22 from your management network, port 8000 for the dashboard, and ports 80 and 443 for the applications you deploy
- The AWS CLI (version 2) installed locally, if you plan to deploy from the command line
Launch the Instance from the AWS Marketplace
Sign in to the AWS Management Console, open the EC2 service, and select Launch instance. Under Application and OS Images, choose AWS Marketplace AMIs and search for Coolify. Select the SecureAnyCloud listing and choose Select, then Continue on the subscription summary.
Pick an instance type of t3.large or larger. Coolify, the database, the cache and the realtime server all run as containers, and the applications you deploy run on the same host, so size the instance for your intended workload.
Choose your EC2 key pair under Key pair (login). Under Network settings, select your VPC and subnet, then create or select a security group that opens port 22 from your management network, port 8000 for the dashboard, and ports 80 and 443 for the applications you deploy. Leave the root volume at the default size or larger.
Select Launch instance. First-boot initialisation takes a short while after the instance state becomes Running and the status checks pass. During this time, the per-instance administrator login is generated and the Coolify stack finishes coming up.
Launch the Instance from the AWS CLI
Run the following command to launch an instance from the SecureAnyCloud Coolify Marketplace AMI into an existing subnet and security group. Replace <ami-id> with the AMI ID shown on the Marketplace listing, <key-name> with your EC2 key pair name, <subnet-id> with your subnet ID, and <security-group-id> with a security group that opens ports 22 and 80 as described above.
aws ec2 run-instances \
--image-id <ami-id> \
--instance-type t3.large \
--key-name <key-name> \
--subnet-id <subnet-id> \
--security-group-ids <security-group-id> \
--tag-specifications 'ResourceType=instance,Tags=[{Key=Name,Value=coolify}]'When the instance reaches the Running state and its status checks pass, note its public IP address or DNS name. You can read both from the EC2 console or with aws ec2 describe-instances.
Connect to Your Instance
Connect over SSH with your key pair. On the Ubuntu 24.04 variant, the SSH login user is ubuntu.
ssh -i <key-name>.pem ubuntu@<public-ip>Retrieve the Administrator Login
The dashboard administrator login is unique to your instance and was generated on first boot. Read the credentials file as root:
sudo cat /root/coolify-credentials.txtThe file lists the dashboard URL, the administrator email and the generated password. Self-registration is disabled, so this root administrator is the only login until you invite more users from inside the dashboard. Keep these credentials somewhere safe.
Sign In to the Dashboard
The Coolify dashboard is served directly on port 8000. In a browser, open:
http://<instance-public-ip>:8000/The Coolify sign-in page opens. Sign in with the administrator email and password from the credentials file. The dashboard then loads, showing your projects and the local server.
In the Servers view, you manage the local Docker host that Coolify deploys to. You can also connect additional servers over SSH to spread deployments across more than one machine.
To deploy something, choose New to open the resource catalogue. From there you can deploy applications from a public or private Git repository, a Dockerfile or a Docker Compose file. You can also provision one-click managed databases such as PostgreSQL, MySQL, MariaDB, MongoDB and Redis, or deploy a ready-made service from the catalogue.
Coolify manages the build, the container lifecycle and a reverse proxy with automatic Let's Encrypt certificates for the applications you deploy. The dashboard streams live build and runtime logs over its websocket connection.
Confirm Coolify Is Running
Over SSH, confirm that the stack service is active, that the dashboard answers its health endpoint on port 8000, and that the Coolify containers are up:
sudo systemctl is-active coolifycurl -s -o /dev/null -w '%{http_code}\n' http://127.0.0.1:8000/api/healthsudo docker ps --format 'table {{.Names}}\t{{.Status}}'The first command reports the service as active. The health check returns 200. The container list shows the coolify, coolify-db, coolify-redis, coolify-realtime and coolify-proxy containers running.
The Docker Compose Stack
Coolify runs as a Docker Compose stack under /data/coolify. The coolify.service systemd unit is a thin wrapper that brings the stack up on boot and takes it down on stop. The stack definition lives in /data/coolify/source, alongside the .env configuration file.
Inspect the running stack with the standard Docker tooling:
sudo docker compose --env-file /data/coolify/source/.env -f /data/coolify/source/docker-compose.yml -f /data/coolify/source/docker-compose.prod.yml psTo restart the whole stack, restart the service rather than calling Docker directly. This keeps systemd in sync:
sudo systemctl restart coolifyThe application database lives in the coolify-db Docker volume, the cache in coolify-redis, and your deployed applications, provisioned databases and managed SSH keys live under /data/coolify.
The Data Volume
The Coolify state tree lives on a dedicated EBS volume mounted at /data/coolify. This keeps the application database, your per-application build state, managed SSH keys and the configuration off the operating system disk, and lets you resize or snapshot them independently. Confirm the mount:
df -h /data/coolifyTo grow the state tree, expand the EBS volume in the AWS console, then grow the filesystem on the instance with sudo resize2fs on the underlying device.
This volume holds the database and all of your deployment state, so a snapshot of it captures the complete state of your Coolify installation.
Enable HTTPS
The dashboard is served over plain HTTP on port 8000. For production use, place it behind TLS.
The simplest option is Coolify's own proxy. Set the instance domain under Settings in the dashboard, and Coolify requests a Let's Encrypt certificate and serves the dashboard over HTTPS through its built-in Traefik proxy on port 443. Alternatively, put the instance behind an Application Load Balancer with a managed certificate that forwards to port 8000.
Restrict the security group so the dashboard port is reachable only from the networks that need it, and keep ports 80 and 443 open for the applications you deploy.
Backup and Maintenance
Back up your deployment by snapshotting the /data/coolify EBS volume, which captures the application database and all of your deployment state. Coolify also has built-in scheduled backups for the managed databases it provisions, configurable from the dashboard.
Apply operating system security updates with sudo apt-get update && sudo apt-get upgrade, and reboot when a new kernel is installed. The Coolify stack starts automatically on boot.
When you are ready to upgrade, Coolify can update itself to newer releases from the Settings area of the dashboard.
Support
SecureAnyCloud publishes and supports this image. Support covers deployment, connecting Git providers and servers, application and database deployment, the reverse proxy and HTTPS, environment and secret management, backups and runtime tuning. Contact SecureAnyCloud through the support channel listed on the AWS Marketplace listing.
All product and company names are trademarks or registered trademarks of their respective holders. Use of them does not imply any affiliation with or endorsement by them.
Deploy on AWS
Launch Coolify on AWS with 24/7 support from SecureAnyCloud.
View on Marketplace
Need Help?
Our support team is available 24/7.
sales@secureanycloud.com