Cara hos sendiri Dify guna Docker Compose
Gunakan VPS dengan RAM 4 GB untuk jalankan enam kontena Dify. Pastikan anda kemas kini fail .env dan daftar akaun di /install sebelum pelayan diakses umum.
Apa itu Dify, dan apa yang anda bakal jalankan
Dify ialah platform hos sendiri untuk membina aplikasi berasaskan model bahasa besar (LLM). Anda akan mendapat antara muka web untuk mereka bentuk aplikasi sembang, ejen, dan saluran paip capaian (retrieval pipelines), API untuk memanggilnya daripada kod anda sendiri, dan satu tempat untuk menguruskan prom, set data, serta kunci model. Ia adalah jenis alatan yang digunakan oleh pasukan kecil supaya semua orang membina di atas satu pangkalan peribadi yang dikongsi, berbanding menyebarkan kunci API dalam pelbagai skrip.
Menjalankannya sendiri bermaksud menjalankan beberapa komponen yang bergerak. Dify dihantar sebagai satu set kontena Docker: pelayan API, pekerja latar belakang, hadapan web, pangkalan data Postgres, cache Redis, dan pangkalan data vektor, semuanya disambungkan menggunakan Docker Compose. Ini lebih daripada satu fail binari tunggal, tetapi Compose menguruskan sambungan tersebut, dan VPS dengan baki RAM sebanyak beberapa gigabait boleh menjalankannya dengan selesa.
Kerana Dify menyimpan kunci API model anda dan, selalunya, dokumen peribadi yang anda muat naik untuk capaian, anggap pelayan yang menjalankannya sebagai aset sensitif dari minit pertama. Panduan ini akan memasangnya, kemudian memperkukuhkannya seperti mana anda memperkukuh mana-mana perkhidmatan yang menyimpan maklumat rahsia.
Prerequisites
Anda memerlukan VPS yang menjalankan Ubuntu 24.04 dengan Docker dan plugin Docker Compose yang telah dipasang, serta pengguna dengan sudo atau ahli kumpulan docker. Jika Docker masih baharu bagi anda, asas Docker Compose pada VPS merangkumi pemasangan dan arahan teras yang digunakan dalam panduan ini. Nama domain yang dihalakan ke pelayan adalah sangat berguna, kerana anda akan memerlukan TLS di hadapan Dify berbanding menggunakan alamat IP kosong.
Step 1: Dapatkan Dify dan fail Compose nya
Dify menyimpan tetapan Docker di dalam repositori utama. Klon repositori tersebut dan masuk ke direktori docker:
git clone https://github.com/langgenius/dify.git
cd dify/docker
cp .env.example .envFail .env adalah keseluruhan konfigurasi. Baca fail tersebut sebelum memulakan apa-apa. Nilai yang paling penting pada mulanya ialah nilai yang menetapkan kata laluan dan rahsia: SECRET_KEY, kata laluan Postgres, dan kata laluan Redis. Fail contoh disertakan dengan nilai placeholder, dan membiarkannya seperti asal adalah cara paling biasa menyebabkan Dify hos sendiri diceroboh. Jana kunci rahsia yang sebenar:
openssl rand -base64 42Tampal kunci tersebut ke dalam SECRET_KEY, dan tetapkan nilai yang kuat dan unik untuk setiap medan kata laluan dalam fail tersebut.
Step 2: Mulakan ia
Jalankan stack tersebut:
docker compose up -dLarian pertama akan memuat turun beberapa imej dan memulakan pangkalan data, jadi berikan masa seminit. Pastikan kontena berada dalam keadaan sihat:
docker compose psSetiap perkhidmatan harus membaca running. Dify menyediakan antara muka webnya melalui kontena nginx yang disertakan pada port 80 secara lalai. Pada lawatan pertama anda ke http://YOUR_SERVER/install, anda akan mencipta akaun admin. Lakukan perkara itu dengan segera, sebelum apa-apa pun boleh mencapai port tersebut, kerana selagi akaun itu belum wujud, sesiapa sahaja yang memuatkan halaman tersebut boleh menuntutnya dan memiliki instans anda.
Step 3: Jangan dedahkan secara terbuka. Letakkan TLS dan firewall di hadapan
Di sinilah kebanyakan pemasangan pantas terhenti dan kebanyakan insiden bermula. nginx milik Dify mendengar pada port 80, tanpa penyulitan, pada setiap antara muka. Anda tidak mahu log masuk admin dan kunci model anda dihantar melalui HTTP biasa, dan anda tidak mahu perkhidmatan dalaman boleh dicapai dari luar.
Kunci pelayan anda 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 enableIngat bahawa firewall yang hanya melindungi IPv4 boleh membiarkan port yang sama terbuka pada IPv6, iaitu jurang firewall IPv6 yang sering memerangkap ramai pengguna hos sendiri. Sahkan kedua-dua stack telah ditapis.
Untuk TLS, cara yang 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 di internet awam ialah proxy yang menggunakan HTTPS. .env milik Dify membolehkan anda menukar port yang didedahkan; tetapkannya untuk diikat pada 127.0.0.1 dan halakan proxy anda ke arah itu. Idea pengukuhan ejen dalam menjalankan ejen AI dengan selamat pada VPS juga terpakai di sini: kekalkan komponen yang bergerak pada loopback, dedahkan hanya apa yang perlu awam, dan biarkan satu pintu hadapan yang diperkukuh berkomunikasi melalui TLS.
Step 4: Pastikan ia sentiasa dikemas kini
Dify berkembang dengan pantas, dan kemas kini termasuk pembetulan keselamatan. Mengemas kini hanyalah proses pull dan restart dari direktori docker:
git pull
docker compose pull
docker compose up -dBaca nota keluaran sebelum melakukan lompatan versi utama, kerana Dify kadangkala menukar skema .env antara keluaran, dan pemboleh ubah baharu yang tidak anda tetapkan boleh menghalang kontena daripada bermula.
Step 5: Sandarkan apa yang tidak boleh dihasilkan semula
Dua perkara pada mesin Dify tidak boleh diganti: pangkalan data Postgres, yang menyimpan aplikasi, pengguna, dan tetapan anda, dan volume yang menyimpan dokumen yang dimuat naik serta indeks vektor. Kedua-duanya berada di bawah Docker volumes di dalam direktori docker. Buat snapshot secara berkala, dan salin snapshot tersebut keluar dari pelayan. Kunci API model boleh dikeluarkan semula; aplikasi yang anda bina selama seminggu tidak boleh.
Untuk ejen yang menjalankan kod secara lebih autonomi, lihat hos sendiri Agent Zero, dan membina ejen AI anda sendiri pada VPS merangkumi asas bagi kesemuanya.
FAQ
Apakah keperluan sistem untuk hos sendiri Dify?
Dify berjalan sebagai stack Docker Compose dengan kira-kira setengah lusin kontena, jadi rancang untuk VPS dengan sekurang-kurangnya 2 GB RAM kosong, sebaik-baiknya 4 GB, ditambah dengan beberapa teras CPU dan cakera yang mencukupi untuk dokumen yang dimuat naik dan indeks vektor anda. Tekanan memori datang daripada pangkalan data dan stor vektor, bukan daripada Dify itu sendiri.
Adakah selamat untuk mendedahkan Dify secara terus pada port 80?
Tidak. Pelayan web Dify yang disertakan mendengar pada HTTP biasa, dan ia melindungi log masuk admin serta kunci API model anda. Letakkan reverse proxy dengan sijil Let's Encrypt di hadapan, ikat port Dify sendiri ke loopback, dan biarkan hanya proxy HTTPS yang berhadapan dengan internet. Padankan itu dengan firewall "default-deny" yang melindungi kedua-dua IPv4 dan IPv6.
Bagaimanakah saya mengemas kini Dify yang dihos sendiri?
Dari direktori docker, jalankan git pull, kemudian docker compose pull dan docker compose up -d untuk mengambil imej baharu dan memulakan semula. Baca nota keluaran terlebih dahulu, kerana Dify kadangkala menambah pemboleh ubah .env baharu antara versi, dan ketiadaan satu pemboleh ubah boleh menghalang kontena daripada berfungsi.
Apakah perkara pertama yang perlu dilakukan selepas memasang Dify?
Layari /install dan cipta akaun admin dengan segera. Selagi akaun itu belum wujud, sesiapa sahaja yang boleh mencapai halaman tersebut boleh menuntutnya. Sediakan ia sebaik sahaja kontena berada dalam keadaan sihat, dan sebelum anda membuka firewall kepada dunia.