SSD Nodes Learn Hosting plans →
Panduan Matt ConnorOleh Matt Connor · Dikemas kini 2026-08-29

Cara Self-host Dify di VPS Menggunakan Docker Compose

Panduan lengkap memasang Dify dengan 6 bekas Docker. Pastikan anda memperuntukkan sekurang-kurangnya 4GB RAM dan menukar semua kunci rahsia dalam fail .env sebelum memulakan.

Apakah Dify dan perkara yang anda persetujui untuk jalankan

Dify ialah platform yang boleh dihoskan sendiri untuk membina aplikasi di atas model bahasa besar (LLM). Anda mendapat antara muka web untuk mereka bentuk aplikasi sembang, ejen dan talian paip perolehan (retrieval pipelines), API untuk memanggilnya daripada kod anda sendiri, serta satu lokasi untuk menguruskan prompt, set data dan kunci model. Ini merupakan jenis alat yang disediakan oleh pasukan kecil supaya semua orang membina di atas satu pangkalan peribadi yang dikongsi, bukannya menyelerakkan kunci API merentasi skrip. Jika istilah seperti ejen, panggilan alat (tool call) dan talian paip perolehan masih samar, memahami konsep tersebut dari asas terlebih dahulu akan menjadikan skrin pembina Dify kelihatan seperti kawalan yang biasa, bukannya deretan suis tanpa label.

Menjalankannya sendiri bermakna mengendalikan beberapa komponen yang bergerak. Dify diedarkan sebagai satu set bekas Docker: pelayan API, pekerja latar belakang, bahagian hadapan web, pangkalan data Postgres, cache Redis dan pangkalan data vektor, semuanya disambungkan dengan Docker Compose. Ia lebih daripada sekadar binari tunggal, tetapi Compose mengendalikan penyambungan tersebut, dan VPS dengan beberapa gigabait RAM yang tersedia boleh menjalankannya dengan selesa. Jika VPS tersebut juga akan menjalankan aplikasi lain, tentukan saiznya berdasarkan angka yang diukur dan bukannya angka yang diiklankan, kerana keperluan RAM sebenar PhotoPrism dan Immich jauh melebihi tahap minimum yang diterbitkan, dan pelayan foto yang berkongsi mesin yang sama akan melumpuhkan pangkalan data dan stor vektor Dify terlebih dahulu. Pertikaian CPU juga memberi kesan yang sama: pustaka Jellyfin yang diubah suai seperti kedai video tahun 90-an hampir tidak menggunakan sumber semasa melayari karya seni, tetapi sebaik sahaja seseorang memulakan transkod, baris gilir pekerja Dify akan tergendala di belakangnya. Kelebihannya ialah jumlah bekas Dify adalah tetap tidak kira berapa banyak aplikasi yang anda bina di atasnya, yang merupakan corak penggunaan sumber yang lebih stabil berbanding OpenBot, di mana setiap rakan sekerja AI mendapat bekas dan pelayar sendiri dan setiap pengambilan pekerja baharu akan meningkatkan keperluan memori.

Oleh kerana Dify menyimpan kunci API model anda dan, selalunya, dokumen peribadi yang telah anda muatkan untuk perolehan, anggap mesin yang menjalankannya sebagai sensitif sejak minit pertama. Panduan ini akan memasangnya, kemudian mengeraskannya (harden) seperti mana-mana servis yang menyimpan maklumat sulit.

Prasyarat

Anda memerlukan VPS yang menjalankan Ubuntu 24.04 dengan Docker dan pemalam Docker Compose dipasang, serta pengguna dengan sudo atau keahlian dalam kumpulan docker. Jika Docker baharu bagi anda, asas Docker Compose pada VPS merangkumi pemasangan dan arahan teras yang diandaikan oleh panduan ini. Nama domain yang dihalakan ke pelayan adalah disyorkan, kerana anda pasti mahukan TLS di hadapan Dify dan bukannya alamat IP kosong.

Langkah 1: Dapatkan Dify dan fail Compose miliknya

Dify menyimpan tetapan Docker di dalam repositori utama. Lakukan klon repositori tersebut dan masuk ke direktori docker:

git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .env

Fail .env mengandungi keseluruhan konfigurasi. Baca fail ini sebelum memulakan sebarang tindakan. Nilai yang perlu diutamakan ialah nilai yang menetapkan kata laluan dan rahsia: SECRET_KEY, kata laluan Postgres, dan kata laluan Redis. Fail contoh yang dibekalkan mengandungi nilai pemegang tempat, dan membiarkannya seperti yang dibekalkan merupakan punca paling lazim Dify yang dihoskan sendiri terdedah kepada ancaman. Jana kunci rahsia yang sebenar:

openssl rand -base64 42

Tampal kunci tersebut ke dalam SECRET_KEY, dan tetapkan nilai yang kuat serta unik bagi setiap medan kata laluan di dalam fail tersebut.

Langkah 2: Mulakannya

Jalankan stack tersebut:

docker compose up -d

Jalankan kali pertama akan memuat turun beberapa imej dan memulakan pangkalan data, jadi berikan masa selama seminit. Pastikan bekas (container) berada dalam keadaan sihat:

docker compose ps

Setiap servis sepatutnya memaparkan running. Dify menyediakan antara muka webnya melalui bekas nginx yang disertakan pada port 80 secara lalai. Pada lawatan pertama anda ke http://YOUR_SERVER/install, anda perlu mencipta akaun pentadbir. Lakukan perkara ini dengan segera, sebelum orang lain boleh mencapai port tersebut, kerana selagi akaun itu belum wujud, sesiapa sahaja yang memuatkan halaman tersebut boleh menuntutnya dan menguasai instans anda.

Langkah 3: Jangan dedahkannya secara mentah. Letakkan TLS dan firewall di hadapan

Di sinilah kebanyakan pemasangan pantas terhenti dan kebanyakan insiden bermula. Nginx milik Dify mendengar pada port 80, dalam bentuk teks jelas, pada setiap antara muka. Anda tidak mahu log masuk pentadbir dan kunci model anda dihantar melalui HTTP biasa, dan anda tidak mahu servis dalaman boleh dicapai dari luar.

Kunci pelayan dengan firewall default-deny yang hanya membenarkan trafik 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 enable

Ingat bahawa firewall yang hanya meliputi IPv4 boleh membiarkan port yang sama terbuka pada IPv6, iaitu jurang firewall IPv6 yang memerangkap ramai pengguna self-host. Pastikan kedua-dua stack ditapis.

Untuk TLS, cara paling bersih adalah dengan mengikat port web Dify ke loopback dan menjalankan reverse proxy dengan sijil Let’s Encrypt di hadapan, supaya satu-satunya perkara yang berada di internet awam ialah proksi yang menggunakan HTTPS. .env Dify membolehkan anda menukar port yang didedahkan; tetapkannya untuk mengikat pada 127.0.0.1 dan halakan proksi anda ke situ. Idea pengukuhan ejen dalam menjalankan ejen AI dengan selamat pada VPS juga terpakai di sini: pastikan bahagian yang bergerak berada pada loopback, dedahkan hanya apa yang perlu menjadi awam, dan biarkan satu pintu hadapan yang kukuh menggunakan TLS. Di mana antara muka alat adalah untuk anda sahaja dan tidak memerlukan sijil sama sekali, langkau proksi dan capai ia melalui SSH tunnel, seperti cara self-hosting pengimbas keselamatan open-kritt memastikan papan pemukanya terikat pada loopback dan diforward ke komputer riba anda dan bukannya diterbitkan. Jika satu pasukan memerlukan Dify tetapi internet awam tidak, rangkaian overlay menskalakan idea itu melebihi satu komputer riba: mengiklankan subnet peribadi pelayan ke tailnet anda membolehkan setiap peranti yang diluluskan mencapai pembina pada alamat peribadi sementara firewall kekal tertutup kepada segala-galanya kecuali SSH. Jika anda mentadbir kotak ini melalui ejen pengekodan dan bukannya secara manual, tentukan sejauh mana ia boleh melakukan kerja tanpa pengawasan sebelum anda menyerahkan kunci kepadanya, kerana mod kebenaran yang anda tetapkan untuk Claude Code menentukan sama ada ia akan berhenti untuk bertanya sebelum menulis semula .env atau memulakan semula stack. Jika anda berakhir dengan satu sesi memantau log kontena sementara satu lagi menyunting konfigurasi proksi, kedua-dua sesi tersebut boleh menghantar teks antara satu sama lain pada kotak yang sama, yang lebih baik daripada menyalin output antara terminal setiap kali anda memulakan semula stack.

Langkah 4: Pastikan ia ditampal (patched)

Dify berkembang dengan pantas, dan kemas kini merangkumi pembaikan keselamatan. Mengemas kini dilakukan dengan arahan pull dan memulakan semula dari direktori docker:

git pull
docker compose pull
docker compose up -d

Baca nota keluaran sebelum melakukan lompatan versi utama, kerana Dify kadangkala menukar skema .env antara keluaran, dan pemboleh ubah baharu yang belum anda tetapkan boleh menyebabkan kontena gagal bermula.

Langkah 5: Sandarkan perkara yang tidak boleh dijana semula

Dua perkara pada kotak Dify tidak boleh diganti: pangkalan data Postgres, yang menyimpan aplikasi, pengguna dan tetapan anda, serta volum yang menyimpan dokumen yang dimuat naik dan indeks vektor. Kedua-duanya berada di bawah volum Docker dalam direktori docker. Lakukan snapshot mengikut jadual dan salin snapshot tersebut keluar dari pelayan. Snapshot tersebut membawa setiap kunci model dan dokumen yang dimuat naik dalam satu fail, jadi enkripsikannya sebelum ia meninggalkan kotak tersebut, atas sebab yang sama seperti sandaran Vaultwarden menjadi titik lemah bagi pelayan kata laluan yang sebaliknya kukuh. Kunci API model boleh dikeluarkan semula; aplikasi yang anda ambil masa seminggu untuk dibina tidak boleh. Penaakulan yang sama mengawal mana-mana ejen yang keadaannya perlu bertahan lebih lama daripada mesin tempat ia dijalankan: mengekalkan KiroCrew berjalan sebagai bekas yang sentiasa hidup bergantung pada melakukan snapshot memori dan jadual yang sebaliknya akan hilang pada but semula seterusnya.

Apabila anda mahu ejen yang anda bina di sini mencapai lebih daripada set data anda sendiri dan mencari web secara langsung, menghalakannya ke instans SearXNG yang dihoskan sendiri mengekalkan aliran pertanyaan pada perkakasan yang anda kawal, walaupun adalah berbaloi untuk membaca tentang permukaan suntikan prompt yang terbuka sebelum anda menghidupkannya. Untuk ejen yang lebih autonomi dan menjalankan kod, lihat mengehoskan sendiri Agent Zero, dan membina ejen AI anda sendiri pada VPS merangkumi asas di bawah kesemuanya.

FAQ

Apakah keperluan sistem untuk mengehos sendiri Dify?

Dify berjalan sebagai tindanan Docker Compose yang terdiri daripada kira-kira setengah dozen kontena. Oleh itu, rancangkan penggunaan VPS dengan sekurang-kurangnya 2 GB RAM yang bebas, sebaik-baiknya 4 GB, berserta beberapa teras CPU dan ruang cakera yang mencukupi untuk dokumen yang dimuat naik serta indeks vektor anda. Tekanan memori berpunca daripada pangkalan data dan stor vektor, bukan daripada Dify itu sendiri.

Adakah selamat untuk mendedahkan Dify secara terus pada port 80?

Tidak. Pelayan web yang disertakan bersama Dify mendengar pada HTTP biasa, dan ia menjadi pintu masuk kepada log masuk pentadbir serta kunci API model anda. Letakkan reverse proxy dengan sijil Let’s Encrypt di hadapan, ikat port Dify sendiri kepada loopback, dan biarkan hanya proksi HTTPS yang menghadap internet. Padankan konfigurasi ini dengan firewall yang menolak semua trafik secara lalai (default-deny) yang merangkumi kedua-dua IPv4 dan IPv6.

Bagaimanakah cara saya mengemas kini Dify yang diehos sendiri?

Dari direktori docker, jalankan git pull, kemudian docker compose pull dan docker compose up -d untuk mendapatkan imej baharu serta memulakan semula perkhidmatan. Baca nota keluaran terlebih dahulu, kerana Dify kadangkala menambah pemboleh ubah .env baharu antara versi, dan pemboleh ubah yang tiada boleh menyebabkan kontena gagal untuk bermula.

Apakah perkara pertama yang perlu dilakukan selepas memasang Dify?

Lawati /install dan cipta akaun pentadbir dengan segera. Selagi akaun tersebut belum wujud, sesiapa sahaja yang boleh mencapai halaman tersebut boleh menuntut akaun itu. Sediakan akaun tersebut sebaik sahaja kontena berada dalam keadaan sihat, dan sebelum anda membuka firewall kepada akses awam.