Kembali ke Blog

Instal n8n Self-Hosted di VPS dengan Docker & HTTPS

Pasang n8n self-hosted di VPS pakai Docker & HTTPS otomatis. Praktis, aman, cocok untuk non-DevOps dan vibe coders.

Frendi Triarista
Instal n8n Self-Hosted di VPS dengan Docker & HTTPS

Gambaran Cepat

  • Apa: n8n = automation builder (drag & drop), webhook, cron, integrasi API.
  • Target: 15–30 menit, 1 VPS + 1 domain → HTTPS aktif + login basic.
  • Arsitektur: Docker (n8n) ←reverse proxy→ Caddy (HTTPS otomatis)

Storage pakai SQLite (cukup buat solo/kecil, upgrade ke Postgres nanti kalau perlu).


Prasyarat

  • VPS Ubuntu 22.04/24.04 (min 1 vCPU, 1–2 GB RAM).
  • Domain/subdomain, mis. n8n.example.com sudah diarahkan ke IP VPS (A/AAAA).
  • Akses SSH (sudo). Port 80/443 terbuka.

Langkah Instalasi (copy–paste)

Quick path: kita pakai Docker Compose. No manual TLS—Caddy urus semua.

1) Pasang Docker

curl -fsSL https://get.docker.com | sh
sudo usermod -aG docker $USER && newgrp docker

2) Siapkan folder proyek

sudo mkdir -p /opt/n8n && sudo chown -R $USER:$USER /opt/n8n
cd /opt/n8n
mkdir -p data/n8n data/caddy data/caddy-config

3) Buat file .env

cat > .env << 'EOF'
TZ=Asia/Jakarta
DOMAIN=n8n.example.com

# Basic Auth buat gerbang depan
N8N_BASIC_AUTH_USER=admin
N8N_BASIC_AUTH_PASSWORD=GantiDenganPasswordKuat

# Secret untuk enkripsi kredensial node
N8N_ENCRYPTION_KEY=GantiDenganSecretPanjangBanget
EOF

Tips: bikin secret cepat

openssl rand -base64 32 → tempel ke N8N_ENCRYPTION_KEY.

4) Buat filedocker-compose.yml

version: "3.8"

services:
  n8n:
    image: n8nio/n8n:latest
    restart: unless-stopped
    environment:
      N8N_HOST: ${DOMAIN}
      N8N_PORT: 5678
      N8N_PROTOCOL: https
      WEBHOOK_URL: https://${DOMAIN}
      N8N_EDITOR_BASE_URL: https://${DOMAIN}
      GENERIC_TIMEZONE: ${TZ}

      # Security
      N8N_BASIC_AUTH_ACTIVE: "true"
      N8N_BASIC_AUTH_USER: ${N8N_BASIC_AUTH_USER}
      N8N_BASIC_AUTH_PASSWORD: ${N8N_BASIC_AUTH_PASSWORD}
      N8N_ENCRYPTION_KEY: ${N8N_ENCRYPTION_KEY}
      N8N_SECURE_COOKIE: "true"
      N8N_DIAGNOSTICS_ENABLED: "false"
    volumes:
      - ./data/n8n:/home/node/.n8n
    # Tidak expose port; semua lewat caddy

  caddy:
    image: caddy:2
    restart: unless-stopped
    depends_on:
      - n8n
    ports:
      - "80:80"
      - "443:443"
    volumes:
      - ./Caddyfile:/etc/caddy/Caddyfile:ro
      - ./data/caddy:/data
      - ./data/caddy-config:/config

5) Buat Caddyfile (HTTPS otomatis)

{
  email you@example.com
}

{$DOMAIN} {
  encode gzip
  reverse_proxy n8n:5678
}

6) Jalankan

docker compose pull
docker compose up -d
docker compose ps

Tunggu ~30 detik sampai sertifikat TLS siap.

Buka: https://n8n.example.com → login dengan Basic Auth (user/pass dari .env) → lanjut buat akun n8n pertama.


Cara Pakai (5 Menit)

  1. Klik + New → pilih Webhook (Trigger).
  2. Set path test → Listen for test event.
  3. Kirim request:
curl -X POST https://n8n.example.com/webhook/test -d '{"ok":true}' -H "Content-Type: application/json"

  1. Tambah node Function atau HTTP Request → Execute.
  2. Activate workflow. Selesai.

Maintenance Mudah

  • Update n8n:
cd /opt/n8n
docker compose pull n8n && docker compose up -d n8n

  • Backup cepat (SQLite + config):
tar czf /opt/n8n-backup-$(date +%F).tgz -C /opt/n8n/data n8n

File DB ada di data/n8n/database.sqlite (tersimpan otomatis dalam arsip di atas).


Troubleshooting

  • Domain belum HTTPS: cek DNS sudah ke IP VPS & port 80/443 terbuka; lihat docker compose logs -f caddy.
  • Loop login: pastikan N8N_HOST = domain kamu dan akses via https://... (bukan IP).
  • Webhook 404: path di node Webhook harus sama persis dengan URL yang dipanggil.

Naik Kelas (untuk trafik lebih tinggi)

  • Pindah ke Postgres (lebih tahan banting): tambah service postgres, ubah DB_TYPE=postgresdb + variabel DB terkait, lalu migrasi data.
  • SSO/2FA: taruh SSO di depan (Authelia/Keycloak) atau aktifkan SSO n8n sesuai dokumentasi.
  • Queue mode: tambahkan Redis untuk eksekusi paralel volume tinggi.

Prinsipnya: mulai ringan, scale bertahap. Kamu bangun automations dulu, bukan data center.


Checklist Akhir

Itu saja. Copy–paste, hidupkan, langsung ngoprek automations.