Cara install Dify di VPS pakai Docker Compose
Panduan instalasi Dify menggunakan Docker Compose. Siapkan VPS dengan RAM minimal 4 GB dan pastikan semua secret di file .env sudah diatur sebelum dijalankan.
Apa itu Dify, dan apa yang akan Anda jalankan
Dify adalah platform self-host untuk membangun aplikasi di atas large language models. Anda mendapatkan antarmuka web untuk merancang aplikasi chat, agent, dan pipeline retrieval, sebuah API untuk memanggilnya dari kode Anda sendiri, serta satu tempat untuk mengelola prompt, dataset, dan model keys. Ini adalah jenis alat yang digunakan tim kecil agar semua orang membangun di atas satu basis privat yang sama, alih-alih menyebarkan API keys di berbagai skrip.
Menjalankannya sendiri berarti menjalankan beberapa komponen yang saling terhubung. Dify hadir sebagai sekumpulan Docker containers: sebuah API server, background worker, web frontend, database Postgres, cache Redis, dan vector database, semuanya terhubung menggunakan Docker Compose. Ini lebih kompleks daripada satu file binary tunggal, tetapi Compose menangani koneksinya, dan sebuah VPS dengan sisa RAM beberapa gigabyte dapat menjalankannya dengan nyaman.
Karena Dify menyimpan model API keys Anda dan, sering kali, dokumen privat yang Anda unggah untuk retrieval, perlakukan server tempat ia berjalan sebagai aset sensitif sejak menit pertama. Panduan ini akan menginstalnya, lalu memperkuat keamanannya seperti Anda memperkuat layanan apa pun yang menyimpan rahasia.
Prerequisites
Anda memerlukan VPS yang menjalankan Ubuntu 24.04 dengan Docker dan plugin Docker Compose yang sudah terinstal, serta pengguna dengan hak akses sudo atau anggota grup docker. Jika Docker masih baru bagi Anda, dasar-dasar Docker Compose pada VPS membahas instalasi dan perintah inti yang diasumsikan dalam panduan ini. Nama domain yang diarahkan ke server sangat disarankan, karena Anda akan membutuhkan TLS di depan Dify alih-alih hanya menggunakan alamat IP mentah.
Step 1: Dapatkan Dify dan file Compose-nya
Dify menyimpan pengaturan Docker-nya di repositori utama. Clone repositori tersebut dan masuk ke direktori docker:
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .envFile .env adalah seluruh konfigurasi. Bacalah sebelum memulai apa pun. Nilai yang paling penting di awal adalah nilai yang mengatur password dan rahasia: SECRET_KEY, password Postgres, dan password Redis. File contoh hadir dengan nilai placeholder, dan membiarkannya tetap seperti bawaan adalah cara paling umum yang menyebabkan Dify self-hosted mengalami kompromi. Buatlah secret key yang asli:
openssl rand -base64 42Tempelkan nilai tersebut ke dalam SECRET_KEY, dan tetapkan nilai yang kuat serta unik untuk setiap field password di dalam file tersebut.
Step 2: Jalankan
Jalankan stack tersebut:
docker compose up -dJalankan pertama kali akan menarik beberapa image dan menginisialisasi database, jadi tunggu sebentar. Periksa apakah container dalam kondisi sehat:
docker compose psSetiap layanan harus dapat diakses melalui running. Dify melayani antarmuka webnya melalui container nginx bawaan pada port 80 secara default. Pada kunjungan pertama Anda ke http://YOUR_SERVER/install, Anda akan membuat akun admin. Lakukan hal itu segera, sebelum hal lain dapat mengakses port tersebut, karena sebelum akun itu ada, siapa pun yang memuat halaman tersebut dapat mengklaimnya dan menguasai instance Anda.
Step 3: Jangan mengeksposnya secara mentah. Gunakan TLS dan firewall di depannya
Di sinilah sebagian besar instalasi cepat berhenti dan sebagian besar insiden dimulai. nginx bawaan Dify mendengarkan pada port 80, tanpa enkripsi, pada setiap interface. Anda tidak ingin login admin dan model keys Anda terkirim melalui HTTP biasa, dan Anda tidak ingin layanan internal dapat dijangkau dari luar.
Amankan server dengan firewall default-deny yang hanya mengizinkan lalu lintas SSH dan web:
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enableIngatlah bahwa firewall yang hanya mencakup IPv4 dapat membiarkan port yang sama terbuka pada IPv6, sebuah celah firewall IPv6 yang menjebak banyak pengguna self-host. Pastikan kedua stack telah difilter.
Untuk TLS, jalur terbersih adalah mengikat web port Dify ke loopback dan menjalankan reverse proxy dengan sertifikat Let's Encrypt di depannya, sehingga satu-satunya hal yang ada di internet publik adalah proxy yang menggunakan HTTPS. .env milik Dify memungkinkan Anda mengubah port yang diekspos; atur untuk mengikat pada 127.0.0.1 dan arahkan proxy Anda ke sana. Ide pengamanan agent dalam menjalankan AI agent dengan aman di VPS juga berlaku di sini: jaga komponen yang bergerak tetap pada loopback, ekspos hanya apa yang harus publik, dan biarkan satu pintu depan yang diperkuat berbicara melalui TLS.
Step 4: Tetap lakukan patching
Dify berkembang dengan cepat, dan pembaruan mencakup perbaikan keamanan. Pembaruan dilakukan dengan melakukan pull dan restart dari direktori docker:
git pull
docker compose pull
docker compose up -dBaca catatan rilis sebelum melakukan lompatan versi mayor, karena Dify terkadang mengubah skema .env di antara rilis, dan variabel baru yang belum Anda tetapkan dapat menghentikan container untuk berjalan.
Step 5: Cadangkan apa yang tidak dapat Anda buat ulang
Ada dua hal pada server Dify yang tidak tergantikan: database Postgres, yang menyimpan aplikasi, pengguna, dan pengaturan Anda, serta volume yang menyimpan dokumen yang diunggah dan vector index. Keduanya berada di bawah Docker volumes di direktori docker. Lakukan snapshot secara terjadwal, dan salin snapshot tersebut keluar dari server. Model API key dapat diterbitkan ulang; aplikasi yang Anda bangun selama seminggu tidak dapat.
Untuk agent yang menjalankan kode secara lebih otonom, lihat self-hosting Agent Zero, dan membangun AI agent Anda sendiri di VPS membahas fondasi dasar untuk semuanya.
FAQ
Apa persyaratan sistem untuk self-host Dify?
Dify berjalan sebagai Docker Compose stack dengan sekitar setengah lusin container, jadi rencanakan VPS dengan setidaknya 2 GB RAM kosong, idealnya 4 GB, ditambah beberapa core CPU dan penyimpanan yang cukup untuk dokumen yang Anda unggah dan vector index. Tekanan memori berasal dari database dan vector store, bukan dari Dify itu sendiri.
Apakah aman mengekspos Dify secara langsung pada port 80?
Tidak. Web server bawaan Dify mendengarkan pada HTTP biasa, dan ia mengamankan login admin serta model API keys Anda. Gunakan reverse proxy dengan sertifikat Let's Encrypt di depannya, ikat port Dify ke loopback, dan biarkan hanya proxy HTTPS yang menghadap ke internet. Pasangkan itu dengan firewall default-deny yang mencakup IPv4 dan IPv6.
Bagaimana cara memperbarui Dify yang di-self-host?
Dari direktori docker, jalankan git pull, lalu docker compose pull dan docker compose up -d untuk mengambil image baru dan melakukan restart. Baca catatan rilis terlebih dahulu, karena Dify terkadang menambahkan variabel .env baru di antara versi, dan variabel yang hilang dapat menghentikan container untuk berjalan.
Apa hal pertama yang harus dilakukan setelah menginstal Dify?
Kunjungi /install dan buat akun admin segera. Sebelum akun tersebut ada, siapa pun yang dapat menjangkau halaman tersebut dapat mengklaimnya. Siapkan segera setelah container dalam kondisi sehat, dan sebelum Anda membuka firewall ke dunia luar.