Cara Install n8n dengan Docker untuk Bisnis Kecil
Cara paling rapi menjalankan n8n di server sendiri adalah lewat Docker Compose: satu container untuk n8n, satu untuk database PostgreSQL, dan reverse proxy di depannya untuk HTTPS. Semua pengaturan tersimpan di satu file, jadi mudah dipindah, di-backup, dan di-update.
Panduan ini untuk tim IT kecil atau founder yang cukup nyaman dengan terminal. Kita bahas persiapan, file Docker Compose, HTTPS, backup, sampai checklist setelah instalasi. Kalau Anda belum pernah memakai n8n sama sekali, baca dulu panduan belajar n8n dari nol supaya istilah seperti workflow, node, dan trigger sudah akrab.
Kenapa Docker cara paling praktis
n8n bisa dipasang langsung dengan npm, tapi Docker punya beberapa kelebihan untuk bisnis kecil:
- Tidak mengotori server. Semua kebutuhan n8n ada di dalam container. Anda tidak perlu mengatur versi Node.js sendiri.
- Update lebih mudah. Cukup tarik image versi baru, lalu jalankan ulang container.
- Pengaturan terdokumentasi. File
docker-compose.ymlmenjadi catatan tertulis tentang cara n8n Anda dijalankan. Orang lain di tim bisa membacanya. - Mudah pindah server. Selama volume data dan file konfigurasi ikut dipindah, n8n bisa jalan di VPS baru dengan pengaturan yang sama.
Docker sendiri adalah alat untuk menjalankan aplikasi di dalam “kotak” terisolasi yang disebut container. Docker Compose adalah cara menjalankan beberapa container sekaligus dari satu file.
Persiapan server dan domain
Sebelum mulai, siapkan tiga hal ini.
1. VPS dengan Linux. Ubuntu LTS adalah pilihan yang umum. Untuk tim kecil dengan belasan workflow, VPS dengan 2 vCPU dan RAM 2 sampai 4 GB biasanya cukup sebagai titik awal. Kalau nanti workflow makin banyak atau memproses file besar, spesifikasinya bisa dinaikkan. Harga VPS berbeda-beda per penyedia dan sering berubah, jadi bandingkan sendiri sebelum memilih.
2. Subdomain. Misalnya n8n.namausaha.co.id. Buat A record di pengaturan DNS yang mengarah ke IP VPS Anda. Subdomain ini penting karena webhook dari aplikasi lain akan dikirim ke alamat tersebut.
3. Docker dan Docker Compose. Pasang mengikuti panduan resmi Docker untuk distribusi Linux Anda. Setelah itu, cek dengan perintah docker compose version.
Pastikan juga firewall hanya membuka port yang perlu: 22 untuk SSH, 80 dan 443 untuk web. Port 5678 milik n8n tidak perlu dibuka ke internet karena aksesnya lewat reverse proxy.
Docker Compose dengan PostgreSQL
Secara bawaan, n8n menyimpan data di SQLite, yaitu database berbentuk satu file. Ini cukup untuk coba-coba. Untuk pemakaian bisnis, PostgreSQL lebih tahan banting saat data eksekusi mulai banyak, dan lebih mudah di-backup dengan alat standar.
Gambaran susunannya seperti ini:

Buat folder, misalnya /opt/n8n, lalu buat file .env untuk menyimpan rahasia:
POSTGRES_USER=n8n
POSTGRES_PASSWORD=ganti-dengan-password-panjang
POSTGRES_DB=n8n
N8N_ENCRYPTION_KEY=ganti-dengan-string-acak-panjang
N8N_HOST=n8n.namausaha.co.id
Lalu buat docker-compose.yml:
services:
postgres:
image: postgres:16
restart: always
env_file: .env
volumes:
- db_data:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U n8n -d n8n"]
interval: 10s
retries: 5
n8n:
image: docker.n8n.io/n8nio/n8n
restart: always
ports:
- "127.0.0.1:5678:5678"
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}
- N8N_ENCRYPTION_KEY=${N8N_ENCRYPTION_KEY}
- N8N_HOST=${N8N_HOST}
- N8N_PROTOCOL=https
- WEBHOOK_URL=https://${N8N_HOST}/
- GENERIC_TIMEZONE=Asia/Jakarta
- TZ=Asia/Jakarta
volumes:
- n8n_data:/home/node/.n8n
depends_on:
postgres:
condition: service_healthy
volumes:
db_data:
n8n_data:
Beberapa hal yang perlu diperhatikan:
N8N_ENCRYPTION_KEYdipakai n8n untuk mengenkripsi kredensial yang Anda simpan, seperti token API dan password aplikasi lain. Simpan nilainya di tempat aman di luar server. Kalau kunci ini hilang, kredensial di database tidak bisa dibuka lagi.127.0.0.1:5678membuat n8n hanya bisa diakses dari dalam server. Akses dari luar lewat reverse proxy.WEBHOOK_URLmemastikan alamat webhook yang ditampilkan n8n memakai domain Anda. Tanpa ini, alamatnya bisa tertulislocalhostdan tidak bisa dipanggil aplikasi lain.GENERIC_TIMEZONEpenting untuk trigger terjadwal. Tanpa ini, workflow “jalan jam 7 pagi” bisa jalan di jam yang salah.- Untuk produksi, sebaiknya kunci image ke nomor versi tertentu (misalnya
docker.n8n.io/n8nio/n8n:<nomor-versi>) supaya update terjadi saat Anda siap. Cek nomor versi stabil di halaman rilis n8n.
Jalankan dengan docker compose up -d, lalu cek log dengan docker compose logs -f n8n.
HTTPS, backup volume, dan update
HTTPS dengan reverse proxy
Reverse proxy adalah “penjaga pintu” yang menerima permintaan dari internet, mengurus sertifikat HTTPS, lalu meneruskannya ke n8n. Dua pilihan populer adalah Caddy dan Traefik. Dokumentasi resmi n8n memakai contoh Traefik. Caddy sering dipilih karena konfigurasinya sangat pendek dan sertifikat HTTPS diurus otomatis.
Contoh Caddyfile minimal, dengan Caddy dipasang langsung di server (di luar Docker):
n8n.namausaha.co.id {
reverse_proxy localhost:5678
}
Dengan konfigurasi sesingkat itu, Caddy akan meminta sertifikat HTTPS dan memperbaruinya sendiri.
Backup yang benar-benar bisa dipulihkan
Ada tiga hal yang perlu di-backup:
- Database PostgreSQL, lewat
pg_dumpyang dijalankan terjadwal, misalnya tiap malam. - Volume
n8n_data, yang berisi file konfigurasi n8n. - File
.envdandocker-compose.yml, termasuk encryption key.
Simpan hasil backup di luar VPS, misalnya object storage atau Google Drive perusahaan. Backup yang disimpan di server yang sama akan ikut hilang kalau servernya bermasalah. Sesekali, coba pulihkan backup ke server uji. Backup yang belum pernah dicoba pulihkan belum bisa dianggap aman.
Sebagai lapisan tambahan, ekspor juga workflow Anda secara berkala. n8n menyediakan perintah CLI untuk ekspor workflow ke file JSON.
Update tanpa panik
Langkah update yang aman:
- Baca catatan rilis n8n, terutama bagian breaking changes.
- Backup database dulu.
- Ubah nomor versi image di
docker-compose.yml. - Jalankan
docker compose pulllaludocker compose up -d. - Buka beberapa workflow penting dan jalankan tes manual.
Jangan loncat terlalu banyak versi sekaligus kalau tidak perlu. Update kecil tapi rutin biasanya lebih aman.
Checklist setelah instalasi
Setelah n8n bisa dibuka di browser, jangan langsung dipakai untuk proses penting. Cek dulu daftar ini:
- Akun owner sudah dibuat dengan password kuat, dan email pemulihan valid.
- Akses ke dashboard n8n hanya lewat HTTPS.
- Port 5678 tidak bisa diakses langsung dari internet.
- Encryption key tersimpan di password manager tim.
- Backup database jalan otomatis dan sudah pernah dites pulih.
- Zona waktu sudah benar (cek dengan workflow jadwal sederhana).
- Ada workflow error yang mengirim notifikasi ke email atau Slack kalau workflow lain gagal.
- Ada satu orang yang jelas bertanggung jawab atas update dan pemantauan.
- Pengaturan penyimpanan riwayat eksekusi sudah diatur supaya database tidak membengkak.
Poin terakhir sering terlupa. Secara bawaan, n8n menyimpan data eksekusi workflow. Kalau ada workflow yang jalan tiap menit, datanya cepat menumpuk. Atur batas umur data eksekusi sesuai kebutuhan audit Anda.
Setelah semua dicentang, mulai dari satu workflow kecil yang manfaatnya jelas. Kalau Anda masih menimbang apakah proses tersebut lebih cocok dikerjakan dengan n8n atau cukup dengan skrip di Google Sheets, bandingkan dulu dengan Google Apps Script. Untuk gambaran jenis-jenis otomatisasi secara umum, lihat juga otomatisasi adalah.
Menjalankan n8n sendiri memang hemat biaya lisensi, tapi ada pekerjaan rutin di baliknya: update, backup, dan pemantauan. Kalau tim Anda ingin fokus ke pekerjaan inti, Aqilatic bisa membantu memasang, mengamankan, dan merawat n8n Anda. Mulai saja dari audit proses gratis, atau lihat dulu layanan kami.
Pertanyaan yang sering muncul
Apakah n8n self-hosted dengan Docker gratis?
Community Edition n8n bisa di-self-host tanpa biaya lisensi untuk keperluan internal bisnis, dengan ketentuan Sustainable Use License. Anda tetap menanggung biaya VPS dan waktu perawatan.
Apakah wajib memakai PostgreSQL?
Tidak wajib. SQLite bawaan cukup untuk uji coba atau pemakaian ringan. Untuk pemakaian bisnis jangka panjang, PostgreSQL lebih disarankan karena lebih stabil dan mudah di-backup.
Bisakah n8n dijalankan di komputer kantor saja?
Bisa untuk belajar. Tapi untuk produksi, VPS lebih cocok karena menyala terus dan punya alamat publik untuk menerima webhook. Komputer kantor yang dimatikan tiap malam akan membuat workflow terjadwal dan webhook ikut berhenti.