~/ / Artikel AI / LLM lokal di VPS / Pasang nginx di depan Ollama: autentikasi dasar, HTTPS, dan pengaturan streaming
Pasang nginx di depan Ollama: autentikasi dasar, HTTPS, dan pengaturan streaming
Secara bawaan, Ollama mendengarkan di server itu sendiri, dan itulah tempat yang paling aman baginya. Ketika mesin lain perlu mengaksesnya, FAQ Ollama merujuk ke server proxy seperti nginx. Artikel ini menyusun konfigurasi tersebut berdasarkan dokumentasi nginx: kata sandi, HTTPS, pengaturan yang penting untuk jawaban yang dialirkan, dan firewall yang menutup pintu-pintu lainnya.
Terbit: · 5 menit baca · Diperiksa terhadap dokumentasi resmi Ollama dan nginx pada 2026-10-26. Nilai bawaan direktif bergantung pada versi nginx, jadi periksa versi yang Anda jalankan.
Isi FAQ Ollama
FAQ Ollama menyebutkan bahwa Ollama menjalankan server HTTP dan dapat dibuka ke luar menggunakan server proxy seperti Nginx. Contohnya mendengarkan di port 80, menetapkan server_name, meneruskan permintaan dengan proxy_pass http://localhost:11434, dan mengatur header Host menjadi localhost:11434.
Halaman FAQ yang kami periksa tidak menjelaskan autentikasi apa pun untuk server Ollama. Karena itu kata sandi harus berasal dari proxy di depannya. Ollama secara bawaan terikat ke 127.0.0.1 port 11434, sehingga nginx di server yang sama dapat menjangkaunya tanpa mengubah alamat tersebut.
Kata sandi dengan autentikasi dasar
ngx_http_auth_basic_module membatasi akses dengan memeriksa nama pengguna dan kata sandi. Dua direktif yang bekerja di sini: auth_basic, yang string-nya dipakai sebagai realm dan nilai bawaannya off, serta auth_basic_user_file, yang menunjuk file kata sandi.
| Direktif | Nilai bawaan | Yang dikatakan dokumentasi |
|---|---|---|
| auth_basic string | off; | off | Parameternya dipakai sebagai realm autentikasi. Nilai off membatalkan pengaturan yang diwarisi dari tingkat sebelumnya. |
| auth_basic_user_file file; | tidak ada | File tersebut berisi satu entri name:password per baris, dan baris yang diawali # adalah komentar. |
- Jenis kata sandi yang didukung: kata sandi terenkripsi crypt() dan hash apr1, keduanya dibuat dengan utilitas htpasswd dari Apache atau dengan openssl passwd.
- Sintaks {SCHEME}data juga didukung. Halaman itu menyatakan bahwa PLAIN hanyalah contoh dan tidak boleh dipakai, dan bahwa SHA, yaitu SHA-1 tanpa salt, juga tidak boleh dipakai karena rentan terhadap serangan rainbow table. SSHA adalah SHA-1 dengan salt.
- Contoh dari dokumentasi: location / { auth_basic "closed site"; auth_basic_user_file conf/htpasswd; }
Halaman itu menyebut htpasswd dan openssl passwd tetapi tidak memberikan perintahnya. Bentuk yang umum dipakai, yang merupakan buatan kami dan bukan dari halaman tersebut, adalah htpasswd -c /etc/nginx/ollama.htpasswd alice, yang meminta kata sandi, dan openssl passwd -apr1, yang mencetak hash untuk ditempelkan setelah nama pengguna dan tanda titik dua.
Mengamankan dengan HTTPS
Pembacaan kami, bukan pernyataan dari dokumen: autentikasi dasar mengirim kata sandi pada setiap permintaan, jadi gunakan hanya di balik HTTPS. Menurut dokumentasi nginx, sebuah server memerlukan parameter ssl pada soket yang mendengarkan, serta lokasi sertifikat dan kunci privat.
| Direktif | Contoh dari dokumentasi |
|---|---|
| listen | listen 443 ssl; |
| server_name | server_name www.example.com; |
| ssl_certificate | ssl_certificate www.example.com.crt; |
| ssl_certificate_key | ssl_certificate_key www.example.com.key; |
- Secara bawaan nginx memakai ssl_protocols TLSv1.2 TLSv1.3 dan ssl_ciphers HIGH:!aNULL:!MD5, sehingga mengatur keduanya secara eksplisit pada umumnya tidak diperlukan.
- Kunci privat sebaiknya disimpan dalam file dengan akses terbatas, tetapi file itu harus dapat dibaca oleh proses master nginx.
- Jika peramban melaporkan galat untuk sertifikat dari otoritas ternama, server mungkin perlu mengirim sertifikat perantara. Sertifikat server harus muncul sebelum sertifikat berantai dalam file gabungan, jika tidak nginx gagal dimulai dengan galat key values mismatch.
- Halaman memulai dari Let's Encrypt menyatakan bahwa jika penyedia Anda tidak mengurus sertifikat untuk Anda dan Anda dapat mengelola server sendiri, Anda dapat menjalankan klien ACME, dan bahwa Let's Encrypt merekomendasikan Certbot untuk kebanyakan orang.
Pengaturan untuk jawaban yang dialirkan dan lambat
Sebuah model menulis jawabannya sepotong demi sepotong, dan potongan pertama bisa lama tiba, misalnya saat model besar dimuat ke memori. Tiga pengaturan nginx menentukan bagaimana hal ini terlihat dari luar.
| Direktif | Nilai bawaan | Yang dikatakan dokumentasi |
|---|---|---|
| proxy_buffering | on | Ketika buffering dinonaktifkan, respons diteruskan ke klien secara sinkron, segera setelah diterima. Ketika diaktifkan, nginx menyimpan respons ke dalam buffer terlebih dahulu. |
| proxy_read_timeout | 60s | Timeout hanya ditetapkan di antara dua operasi baca yang berurutan, bukan untuk seluruh respons. Jika server yang di-proxy tidak mengirim apa pun dalam waktu ini, koneksi ditutup. |
| proxy_http_version | 1.1 sejak nginx 1.29.7 | Sebelum 1.29.7 nilai bawaannya adalah 1.0. Versi 1.1 atau 2 direkomendasikan untuk koneksi keepalive. |
Pembacaan kami, bukan pernyataan dari dokumen: agar jawaban terlihat muncul saat ditulis, matikan proxy_buffering untuk location Ollama, dan jika model bisa diam lebih dari satu menit saat dimuat, naikkan proxy_read_timeout. Menetapkan proxy_http_version 1.1 secara eksplisit tidak berbahaya di versi mana pun.
Menyatukan semuanya
Konfigurasi ini menggabungkan direktif di atas untuk satu nama server. Ini adalah susunan kami dari direktif yang terdokumentasi, jadi ujilah dengan nginx -t sebelum Anda memuat ulang.
| Baris | Alasan |
|---|---|
| server { | satu blok server untuk nama Ollama |
| listen 443 ssl; | HTTPS |
| server_name ollama.example.com; | nama Anda sendiri |
| ssl_certificate /etc/ssl/ollama.crt; | sertifikat, dengan sertifikat perantara setelahnya |
| ssl_certificate_key /etc/ssl/ollama.key; | kunci privat, hanya dapat dibaca sesuai kebutuhan |
| auth_basic "ollama"; | mengaktifkan kata sandi |
| auth_basic_user_file /etc/nginx/ollama.htpasswd; | tempat pengguna disimpan |
| location / { | semuanya diarahkan ke Ollama |
| proxy_pass http://localhost:11434; | dari FAQ Ollama |
| proxy_set_header Host localhost:11434; | dari FAQ Ollama |
| proxy_http_version 1.1; | direkomendasikan untuk keepalive |
| proxy_buffering off; | agar jawaban dialirkan |
| proxy_read_timeout 300s; | mengizinkan potongan pertama yang lambat |
| } | akhir location |
| } | akhir server |
Tutup pintu-pintu lainnya
Proxy hanya berguna jika orang tidak dapat menjangkau Ollama atau aplikasi di baliknya lewat jalan lain. Ollama tetap berada di alamat bawaannya, dan firewall hanya mengizinkan alamat yang Anda pakai.
| Tugas | Perintah dari dokumentasi Ubuntu |
|---|---|
| Mengaktifkan firewall | sudo ufw enable |
| Mengizinkan sebuah port | sudo ufw allow 22 |
| Mengizinkan satu alamat ke satu port | sudo ufw allow proto tcp from 192.168.0.2 to any port 22 |
| Mengizinkan satu subnet penuh | ganti alamat dengan 192.168.0.0/24 |
| Memeriksa status | sudo ufw status |
Halaman Ubuntu menyatakan bahwa UFW pada awalnya dinonaktifkan. Halaman itu tidak memuat peringatan tentang terkunci dari SSH. Rekomendasi kami: izinkan port SSH Anda sebelum mengaktifkan firewall pada server yang Anda akses dari jarak jauh, dan izinkan port 443 hanya dari alamat yang membutuhkannya.
Sumber
Baca selanjutnya
- Open WebUI di VPS: jalankan dengan Docker dan hubungkan ke OllamaJalankan Open WebUI dengan Docker dan hubungkan ke Ollama di server Anda sendiri: perintahnya, akun pertama, dua jenis koneksi, dan cara memperbarui.
- Memanggil model lokal dari kode Anda: structured outputs dan API yang kompatibel dengan OpenAI di OllamaBatasi keluaran model lokal dengan JSON Schema dan panggil Ollama dari klien bergaya OpenAI: apa kata dokumentasi resmi, dan apa saja yang tidak didukung.
- Apa saja yang bisa dilakukan model lokal? Tools, thinking, vision, dan embedding di Ollama, serta apa yang muat di VPSTools, thinking, vision, embedding: arti label di pustaka Ollama, model mana yang membawanya, dan seberapa besar unduhannya.
- Memasang Ollama di VPS dan menjaganya tetap berjalan: instalasi, layanan systemd, pengaturan, dan pembaruanPasang Ollama di VPS Linux dan jaga tetap berjalan: perintah instalasi, layanan systemd, variabel lingkungan, penyimpanan model, dan pembaruan, dari dokumentasi resmi.