Cara Instal n8n Menggunakan Docker dan Reverse Proxy Caddy dengan HTTPS (SSL Otomatis)

n8n adalah platform otomasi alur kerja open-source yang sangat fleksibel dan dapat dihosting sendiri. Untuk memastikan keamanan dan kinerja terbaik, banyak pengguna memilih untuk menjalankan n8n menggunakan Docker dan reverse proxy seperti Caddy yang menyediakan HTTPS secara otomatis melalui Let’s Encrypt.
Dalam panduan ini, Anda akan mempelajari cara menginstal dan mengonfigurasi n8n dengan Docker Compose, PostgreSQL sebagai database, dan Caddy sebagai reverse proxy dengan SSL otomatis. ๐
โ Keuntungan Menggunakan Docker dan Caddy
- ๐งฉ Isolasi lingkungan: Docker menjaga aplikasi tetap terpisah dari sistem host.
- โ๏ธ Kemudahan deployment: Konfigurasi dapat dilakukan dalam satu file YAML.
- ๐ SSL otomatis: Caddy akan mengelola sertifikat HTTPS secara otomatis.
- ๐ Skalabilitas: Mudah ditingkatkan sesuai kebutuhan bisnis Anda.
๐ ๏ธ Prasyarat
Sebelum mulai, pastikan Anda telah:
- โ Menginstal Docker dan Docker Compose
- ๐ Memiliki nama domain (misalnya:
n8n.domainkamu.com
) - ๐งญ A record domain mengarah ke IP server
๐ Struktur Folder
n8n-setup/
โโโ docker-compose.yml
โโโ Caddyfile
โโโ .env
๐งพ 1. Buat File .env
โ ๏ธ Gantilah nilai
DOMAIN
,BASIC_AUTH_USER
,BASIC_AUTH_PASSWORD
,POSTGRES_USER
, danPOSTGRES_PASSWORD
dengan kredensial dan domain yang sesuai sebelum digunakan di lingkungan produksi.
DOMAIN=n8n.domainkamu.com
BASIC_AUTH_USER=user
BASIC_AUTH_PASSWORD=ganti_passwordku123
POSTGRES_USER=n8n
POSTGRES_PASSWORD=n8npass
POSTGRES_DB=n8ndb
๐งฑ 2. Buat File docker-compose.yml
services:
postgres:
image: postgres:15
container_name: n8n_postgres
restart: unless-stopped
environment:
POSTGRES_USER: ${POSTGRES_USER}
POSTGRES_PASSWORD: ${POSTGRES_PASSWORD}
POSTGRES_DB: ${POSTGRES_DB}
volumes:
- postgres_data:/var/lib/postgresql/data
n8n:
image: docker.n8n.io/n8nio/n8n:1.98.2
container_name: n8n
restart: unless-stopped
environment:
- DB_TYPE=postgresdb
- DB_POSTGRESDB_HOST=postgres
- DB_POSTGRESDB_PORT=5432
- DB_POSTGRESDB_DATABASE=${POSTGRES_DB}
- DB_POSTGRESDB_USER=${POSTGRES_USER}
- DB_POSTGRESDB_PASSWORD=${POSTGRES_PASSWORD}
- DB_POSTGRESDB_SCHEMA=public
- N8N_BASIC_AUTH_ACTIVE=true
- N8N_BASIC_AUTH_USER=${BASIC_AUTH_USER}
- N8N_BASIC_AUTH_PASSWORD=${BASIC_AUTH_PASSWORD}
- N8N_HOST=${DOMAIN}
- N8N_PORT=5678
- WEBHOOK_URL=https://${DOMAIN}/
- N8N_SECURE_COOKIE=true
- GENERIC_TIMEZONE=Asia/Jakarta
- TZ=Asia/Jakarta
volumes:
- n8n_data:/home/node/.n8n
depends_on:
- postgres
networks:
- caddy_net
caddy:
image: caddy:2
container_name: caddy
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./Caddyfile:/etc/caddy/Caddyfile
- caddy_data:/data
- caddy_config:/config
networks:
- caddy_net
volumes:
postgres_data:
n8n_data:
caddy_data:
caddy_config:
networks:
caddy_net:
driver: bridge
โ๏ธ 3. Buat File Caddyfile
${DOMAIN} {
reverse_proxy n8n:5678
encode gzip
log
}
๐ก Catatan: Caddy akan otomatis mengurus HTTPS dari Let’s Encrypt selama domain valid.
โถ๏ธ 4. Menjalankan Docker Compose
docker compose up -d
๐ 5. Akses n8n
Buka browser ke https://n8n.domainkamu.com
, lalu login dengan:
- ๐ค Username: user
- ๐ Password: ganti_passwordku123

โ Penutup
Dengan setup ini, Anda telah berhasil menjalankan n8n dalam lingkungan Docker yang aman dan modern. Reverse proxy Caddy membuat pengelolaan HTTPS sangat mudah tanpa konfigurasi rumit. Setup ini cocok untuk produksi dan dapat diperluas dengan monitoring, backup otomatis, dan integrasi lainnya. ๐ฆ
Untuk keamanan tambahan, pertimbangkan juga menambahkan firewall, fail2ban, dan backup ke Google Drive atau S3. ๐