Berikut cara install n8n self-hosted paling mudah menggunakan Docker di Ubuntu/Linux server. Metode ini cocok untuk VPS, server rumah, VM Proxmox, atau K3s node. n8n sendiri merekomendasikan Docker untuk self-hosting.
1. Install Docker
Update package:
sudo apt update && sudo apt upgrade -y
Install Docker:
curl -fsSL https://get.docker.com | sh
Cek Docker:
docker --version
Tambahkan user ke group docker:
sudo usermod -aG docker $USER
newgrp docker
2. Buat Volume Data n8n
Agar workflow dan credential tidak hilang:
docker volume create n8n_data
3. Jalankan n8n
Untuk timezone Indonesia gunakan Asia/Jakarta.
docker run -d \
--name n8n \
-p 5678:5678 \
-e TZ="Asia/Jakarta" \
-e GENERIC_TIMEZONE="Asia/Jakarta" \
-e N8N_RUNNERS_ENABLED=true \
-e N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true \
-v n8n_data:/home/node/.n8n \
--restart unless-stopped \
docker.n8n.io/n8nio/n8n
Konfigurasi ini mengikuti dokumentasi resmi n8n Docker install.
4. Akses n8n
Buka browser:
http://IP-SERVER:5678
Contoh:
http://192.168.1.10:5678
Jika berhasil akan muncul halaman setup account admin.
5. Cek Container
Lihat status:
docker ps
Lihat log:
docker logs -f n8n
Install Menggunakan Docker Compose (Recommended)
Lebih bagus untuk production.
1. Buat Folder
mkdir n8n
cd n8n
2. Buat File docker-compose.yml
nano docker-compose.yml
Isi:
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- TZ=Asia/Jakarta
- GENERIC_TIMEZONE=Asia/Jakarta
- N8N_RUNNERS_ENABLED=true
- N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
3. Jalankan
docker compose up -d
4. Stop / Start
Stop:
docker compose down
Start:
docker compose up -d
Update n8n
Pull image terbaru:
docker compose pull
docker compose down
docker compose up -d
Atau jika pakai docker biasa:
docker pull docker.n8n.io/n8nio/n8n
docker restart n8n
Dokumentasi update resmi ada di: n8n Docker Docs
Setup Domain + HTTPS (Production)
Biasanya production memakai:
- Nginx Proxy Manager
- Traefik
- Caddy
- Cloudflare Tunnel
Contoh:
n8n.domain.com
Lalu reverse proxy ke:
localhost:5678
Port Penting
| Service | Port |
|---|---|
| n8n | 5678 |
| HTTPS | 443 |
| HTTP | 80 |
Backup Workflow
Backup volume:
docker run --rm \
-v n8n_data:/data \
-v $(pwd):/backup \
ubuntu \
tar czf /backup/n8n-backup.tar.gz /data
Jika Mau Lebih Advanced
Biasanya production menggunakan:
- PostgreSQL
- Redis Queue
- Reverse Proxy
- HTTPS SSL
- Domain
- Cloudflare Tunnel
- Docker Compose Stack
Arsitektur Production Umum
Internet
↓
Cloudflare
↓
Nginx Proxy Manager
↓
n8n Container
↓
PostgreSQL
Resource Minimal
| User | RAM |
|---|---|
| Testing | 1 GB |
| Small Production | 2 GB |
| Heavy Automation AI | 4-8 GB |
Install n8n menggunakan Cloudflare Tunnel tanpa IP public
Berikut cara install n8n self-hosted + Cloudflare Tunnel tanpa IP public.
Arsitektur ini cocok untuk:
- server rumah
- VM Proxmox
- mini PC
- VPS private
- K3s node
- jaringan CGNAT ISP
Karena Cloudflare Tunnel membuat koneksi outbound dari server ke Cloudflare, jadi tidak perlu:
- port forwarding
- IP public
- NAT static
Arsitektur
Internet
↓
Cloudflare DNS
↓
Cloudflare Tunnel
↓
Server Ubuntu/Linux
↓
n8n Docker
Yang Dibutuhkan
- Domain di Cloudflare
- Server Ubuntu/Linux
- Docker
- Account Cloudflare
1. Install Docker
Install Docker:
curl -fsSL https://get.docker.com | sh
Cek:
docker --version
2. Jalankan n8n
Buat volume:
docker volume create n8n_data
Jalankan container:
docker run -d \
--name n8n \
-p 5678:5678 \
-e TZ=Asia/Jakarta \
-e GENERIC_TIMEZONE=Asia/Jakarta \
-e N8N_HOST=n8n.domainanda.com \
-e N8N_PROTOCOL=https \
-e WEBHOOK_URL=https://n8n.domainanda.com \
-e N8N_RUNNERS_ENABLED=true \
-v n8n_data:/home/node/.n8n \
--restart unless-stopped \
docker.n8n.io/n8nio/n8n
Ganti:
n8n.domainanda.com
menjadi domain milik Anda.
Contoh:
n8n.yubykyuby.my.id
3. Install Cloudflared
Download:
wget https://github.com/cloudflare/cloudflared/releases/latest/download/cloudflared-linux-amd64.deb
Install:
sudo dpkg -i cloudflared-linux-amd64.deb
Cek:
cloudflared --version
4. Login ke Cloudflare
Jalankan:
cloudflared tunnel login
Nanti muncul URL login.
Contoh:
Please open the following URL and log in with your Cloudflare account:
https://dash.cloudflare.com/argotunnel?aud=xxxxx
Buka URL tersebut dari browser laptop/PC Anda.
Pilih domain yang ingin digunakan.
5. Buat Tunnel
Misal nama tunnel:
n8n-tunnel
Buat:
cloudflared tunnel create n8n-tunnel
Output contoh:
Tunnel credentials written to:
/root/.cloudflared/xxxxxxxx.json
6. Buat DNS Tunnel
Misal domain:
n8n.domainanda.com
Jalankan:
cloudflared tunnel route dns n8n-tunnel n8n.domainanda.com
Cloudflare otomatis membuat DNS record.
7. Buat Config Tunnel
Buat folder:
mkdir -p ~/.cloudflared
Edit config:
nano ~/.cloudflared/config.yml
Isi:
tunnel: n8n-tunnel
credentials-file: /root/.cloudflared/xxxxxxxx.json
ingress:
- hostname: n8n.domainanda.com
service: http://localhost:5678
- service: http_status:404
Ganti:
xxxxxxxx.jsonn8n.domainanda.com
8. Jalankan Tunnel
Manual test:
cloudflared tunnel run n8n-tunnel
Jika berhasil:
Connection registered
9. Jadikan Service Linux
Install service:
sudo cloudflared service install
Enable:
sudo systemctl enable cloudflared
sudo systemctl start cloudflared
Cek:
systemctl status cloudflared
10. Akses n8n
Sekarang buka:
https://n8n.domainanda.com
Tanpa IP public.
Tanpa port forwarding.
Docker Compose Version (Recommended)
Struktur:
n8n/
├── docker-compose.yml
Isi compose:
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- TZ=Asia/Jakarta
- GENERIC_TIMEZONE=Asia/Jakarta
- N8N_HOST=n8n.domainanda.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.domainanda.com
- N8N_RUNNERS_ENABLED=true
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
Jalankan:
docker compose up -d
Keamanan Tambahan (Recommended)
Tambahkan basic auth:
-e N8N_BASIC_AUTH_ACTIVE=true \
-e N8N_BASIC_AUTH_USER=admin \
-e N8N_BASIC_AUTH_PASSWORD=passwordku
Atau di compose:
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=passwordku
Cek Log
n8n:
docker logs -f n8n
cloudflared:
journalctl -u cloudflared -f
Kelebihan Cloudflare Tunnel
| Feature | Benefit |
|---|---|
| Tanpa IP public | Bisa jalan di ISP rumahan |
| Tanpa port forwarding | Lebih aman |
| HTTPS otomatis | SSL otomatis |
| Bisa Zero Trust | Login Google/GitHub |
| Bisa multi service | n8n, GitLab, Rancher, Grafana |
Contoh Multi Service
n8n.domain.com
gitlab.domain.com
rancher.domain.com
grafana.domain.com
Semua bisa lewat 1 server tanpa IP public.
Integrasi yang Bagus dengan n8n
Anda sebelumnya belajar:
- GitLab
- K3s
- Rancher
- Monitoring
- CI/CD
n8n bisa dipakai untuk:
- auto deploy
- auto backup
- alert Telegram
- monitoring workflow
- webhook GitLab
- auto restart service
- AI workflow automation
Dokumentasi Resmi
Install n8n dengan domain HTTPS
Berikut cara install n8n self-hosted dengan domain HTTPS menggunakan:
- Docker
- Nginx Proxy Manager (NPM)
- SSL Let’s Encrypt otomatis
Metode ini paling umum dipakai production karena mudah dan stabil.
Arsitektur
Internet
↓
Domain DNS
↓
Nginx Proxy Manager
↓
n8n Docker
Yang Dibutuhkan
- Domain
- VPS / server Ubuntu
- Port 80 & 443 terbuka
- Docker
Jika tidak punya IP public, gunakan metode sebelumnya:
- Cloudflare Tunnel
1. Install Docker
Install Docker:
curl -fsSL https://get.docker.com | sh
Cek:
docker --version
2. Install Nginx Proxy Manager
Buat folder:
mkdir ~/npm
cd ~/npm
Buat compose:
nano docker-compose.yml
Isi:
services:
npm:
image: 'jc21/nginx-proxy-manager:latest'
container_name: npm
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
Jalankan:
docker compose up -d
3. Login Nginx Proxy Manager
Buka:
http://IP-SERVER:81
Default login:
Email: [email protected]
Password: changeme
Nanti diminta ganti password.
4. Jalankan n8n
Buat folder:
mkdir ~/n8n
cd ~/n8n
Buat compose:
nano docker-compose.yml
Isi:
services:
n8n:
image: docker.n8n.io/n8nio/n8n
container_name: n8n
restart: unless-stopped
ports:
- "5678:5678"
environment:
- TZ=Asia/Jakarta
- GENERIC_TIMEZONE=Asia/Jakarta
- N8N_HOST=n8n.domainanda.com
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://n8n.domainanda.com
- N8N_RUNNERS_ENABLED=true
volumes:
- n8n_data:/home/node/.n8n
volumes:
n8n_data:
Ganti:
n8n.domainanda.com
contoh:
n8n.yubykyuby.my.id
Jalankan:
docker compose up -d
5. Setting DNS Domain
Di provider domain atau Cloudflare buat:
| Type | Name | Value |
|---|---|---|
| A | n8n | IP_SERVER |
Contoh:
n8n.domainanda.com → 123.123.123.123
6. Setup HTTPS di Nginx Proxy Manager
Masuk ke:
http://IP-SERVER:81
Tambahkan Proxy Host
Pilih:
Hosts → Proxy Hosts → Add Proxy Host
Isi:
| Field | Value |
|---|---|
| Domain Names | n8n.domainanda.com |
| Scheme | http |
| Forward Hostname/IP | IP_SERVER |
| Forward Port | 5678 |
Jika n8n dan NPM satu server:
Forward Hostname/IP = localhost
atau:
172.17.0.1
Port:
5678
7. Aktifkan SSL
Masuk tab:
SSL
Pilih:
Request a new SSL Certificate
Centang:
- Force SSL
- HTTP/2
- Agree Let’s Encrypt
Save.
8. Selesai
Sekarang buka:
https://n8n.domainanda.com
HTTPS otomatis aktif.
Setup Login Basic Auth (Recommended)
Tambahkan di compose:
environment:
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=admin
- N8N_BASIC_AUTH_PASSWORD=passwordku
Restart:
docker compose restart
Cek Log
n8n:
docker logs -f n8n
NPM:
docker logs -f npm
Update n8n
docker compose pull
docker compose up -d
Backup Data
Backup volume:
docker run --rm \
-v n8n_n8n_data:/data \
-v $(pwd):/backup \
ubuntu \
tar czf /backup/n8n-backup.tar.gz /data
Production Recommended Stack
Biasanya production menggunakan:
| Service | Function |
|---|---|
| n8n | Automation |
| PostgreSQL | Database |
| Redis | Queue |
| Nginx Proxy Manager | Reverse Proxy |
| Cloudflare | DNS + Security |
| Watchtower | Auto update |
