Installing Twenty CRM on Hetzner
This guide walks you through deploying Twenty CRM on a Hetzner server. It assumes you have already completed the Coolify + Hetzner Deployment with Docker and NGINX Proxy Manager installed.
Prerequisites
- A Hetzner server with Docker and NGINX Proxy Manager installed
- A domain name (we'll use Porkbun in this example)
- Basic command line knowledge
🌐 1. Point DNS to Your Server
On Porkbun:
| Type | Host | Answer (IP Address) | TTL |
|---|---|---|---|
| A | crm | your.server.ip | 300 |
📝 This will resolve crm.yourdomain.com to your VPS.
📁 2. Clone and Configure Twenty CRM
Here are the offical install docs to Twenty CRM:
One-line Docker Install
Install the latest stable version of Twenty with a single command:
To install a specific version or branch: - Replace x.y.z with the desired version number. - Replace branch-name with the name of the branch you want to install.Alternatively, Clone the repo:
Create a .env file:
Example contents:
PG_DATABASE_USER=postgres
PG_DATABASE_PASSWORD=your_password
PG_DATABASE_HOST=db
PG_DATABASE_PORT=5432
NODE_PORT=3000
SERVER_URL=https://crm.yourdomain.com
REDIS_URL=redis://redis:6379
STORAGE_TYPE=local
APP_SECRET=your_random_secret
Generate a secure secret:
Add restart: always to docker-compose.yml
Add this line under each service in your docker-compose.yml:
🧱 3. Start Twenty CRM
🔁 4. Configure NGINX Proxy Manager
- Open
http://your.server.ip:81 - Go to Proxy Hosts > Add Proxy Host
- Fill in:
- Domain Names:
crm.yourdomain.com - Forward Hostname / IP:
localhost - Forward Port:
3000 - ✅ Websockets Support
- ✅ Block Common Exploits
- Go to the SSL tab:
- Enable SSL
- Request a new Let's Encrypt certificate
- Accept terms and enter a valid email
- Save
✅ 5. Test Your Installation
Visit:
https://crm.yourdomain.com
You should see the live Twenty CRM instance with a green padlock ✅
📋 Post-Installation Checklist
- All containers are running (
docker ps) - DNS is resolving properly
- SSL certificate is working
-
.envfile and secrets are backed up securely - All services have
restart: alwaysset
🔧 Troubleshooting
If you encounter issues:
- Check container logs:
- Verify all services are running:
- Ensure DNS has propagated:
Author: Wesley Ordonez Last updated: April 14, 2025