Requirements
- A REGTR cloud server
- Docker and Compose (see the Docker guide)
- A subdomain, e.g. n8n.example.com → server IP (A record)
Steps
-
1Add the DNS record
Point the subdomain to the server IP. Caddy can't get a certificate before the record propagates.
# DNS: n8n.example.com A SUNUCU_IP dig +short n8n.example.com -
2Compose file
Define the n8n and Caddy services. Replace example.com with your domain.
mkdir -p ~/n8n && cd ~/n8n cat > compose.yaml <<'EOF' services: n8n: image: docker.n8n.io/n8nio/n8n restart: unless-stopped environment: - N8N_HOST=n8n.example.com - N8N_PROTOCOL=https - WEBHOOK_URL=https://n8n.example.com/ - GENERIC_TIMEZONE=Europe/Istanbul - TZ=Europe/Istanbul volumes: - n8n_data:/home/node/.n8n caddy: image: caddy:2 restart: unless-stopped ports: - "80:80" - "443:443" volumes: - ./Caddyfile:/etc/caddy/Caddyfile - caddy_data:/data volumes: n8n_data: caddy_data: EOF -
3Caddy configuration
Caddy forwards HTTPS requests to the n8n container.
cat > Caddyfile <<'EOF' n8n.example.com { reverse_proxy n8n:5678 } EOF -
4Start and create the owner account
When the services are up, open https://n8n.example.com and create the owner account right away.
docker compose up -d docker compose logs -f caddy
Tips
- Don't publish n8n's port 5678; in this setup only Caddy (80/443) is exposed.
- Workflow credentials are stored encrypted in the n8n_data volume; back it up or take regular snapshots.
- To update: docker compose pull && docker compose up -d
FAQ
Which plan for n8n?
For personal and small-team use, 2 vCPU / 4 GB (ARM 2) is enough. For heavy workflows and many concurrent executions, 4 vCPU / 8 GB.
Does it run on ARM?
Yes, the official n8n and Caddy images support ARM64.
Updated: 2026-10-23