Menggabungkan dua langganan Ollama Pro pada mesin yang sama dengan Docker
Diterbitkan 08 May 2026
Dua langganan Pro, satu mesin, satu kartu bank, dan tidak ada konflik jaringan. Bagaimana Docker memungkinkan saya menggandakan kapasitas inferensi cloud saya tanpa membeli komputer kedua.
Pengantar
Saya telah menggunakan Ollama Pro selama beberapa bulan untuk memenuhi sesi OpenCode saya dengan model cloud. Halnya, meski dengan langganan Pro, kita cepat terbatas oleh rate limiting ketika meluncurkan beberapa agen secara paralel. Solusi yang jelas: langganan kedua.
Tapi sekarang, ini adalah drama.
Ollama mengidentifikasi setiap mesin dengan kunci SSH unik — Device Key yang terkenal. Dua instance pada OS yang sama akan berbagi identitas yang sama, dan tidak memungkinkan untuk menghubungkan dua akun Pro ke perangkat yang sama. Dan seperti yang Anda duga, saya tidak akan membeli laptop kedua hanya untuk itu.
Solusi: mencurangi. Membuat Ollama percaya bahwa ia berjalan pada dua mesin yang berbeda, padahal mereka berbagi CPU yang sama, RAM yang sama, dan koneksi jaringan yang sama. Docker akan memberi kita gelembung isolasi yang sempurna.
@startuml
!theme plain
skinparam BoxPadding 10
skinparam DefaultFontSize 12
left to right direction
node "Mesin Fisik" {
frame "Ollama Instansi A (Asli)" as Native {
database "Identitas\n/usr/share/ollama/.ollama/id_ed25519" as KeyA
portin "API\n:11434" as PortA
}
frame "Ollama Instance B (Docker)" as Docker {
database "Identitas
~/ollama-b-data/id_ed25519" as KeyB
portin "API\n:11435" as PortB
}
}
cloud "Ollama Awan" {
actor "Akun Profesional A
(email 1)" as AccountA
actor "Akun Pro B\n(surel 2)" as AccountB
}
KeyA --> AccountA : "Kunci SSH A"
KeyB --> AccountB : "Kunci SSH B"
PortA --> AccountA : "Permintaan A"
PortB --> AccountB : "Permintaan B"
note bottom of Docker
Conteneur isolé : identité SSH distincte,
port réseau distinct, volume persistant
end note
@enduml
Kenapa dua kali hal yang sama?
Sebelum Anda menganggap saya orang gila, izinkan saya menjelaskan kasus penggunaan.
Dengan satu langganan Pro, saya dapat menjalankan model seperti`deepseek-v4-pro:cloud`dalam sesi OpenCode. Masalah muncul ketika saya ingin dua sesi simultan. Kuota rate limiting menyebabkan sesi kedua mengalami lag atau ditolak sepenuhnya.
Dengan dua langganan Pro yang independen:
-
Sesi OpenCode 1 → Akun Pro A`localhost:11434`)
-
Sesi OpenCode 2 → akun Pro B`localhost:11435`)
Setiap sesi memiliki kuota masing-masing, konteks masing-masing, dan tidak mengganggu yang lain. Ini adalah multi-processing manusia.
|
Dua langganan Pro = dua email yang berbeda. Kartu bank yang sama berfungsi — sistem pembayaran Ollama tidak memblokir langganan berulang dari cara pembayaran yang sama. Saya telah memeriksa. |
Jantung Masalah : Kunci Perangkat
Ketika Anda menginstal Ollama, sepasang kunci SSH ed25519 dihasilkan di direktori identitas:
$ cat /usr/share/ollama/.ollama/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAI...
Kunci ini diunggah ke server Ollama saat`ollama signin`. Dia yang mengatakan « mesin ini milik akun Pro tertentu ». Jika kedua instance Anda berbagi file yang sama`id_ed25519`, mereka memiliki identitas yang sama. Akhir permainan.
Berikan instance kedua kita direktori identitas miliknya sendiri, yang terisolasi dalam volume Docker.
Penyiapan — Langkah demi Langkah
Prasyarat
-
Instalasi native Ollama yang berfungsi (skrip resmi`curl | sh`)
-
Docker terpasang dan berfungsi
-
Portainer atau docker-compose untuk deployment
-
Dua akun Ollama dengan dua email yang berbeda
Saya telah menggunakan versi`0.20.2`— yang disediakan oleh skrip resmi dan gambar Docker yang sesuai.
Tahap 1 : Membuat Volume
Sebuah direktori sederhana pada host akan berfungsi sebagai volume persisten untuk identitas instance B:
mkdir -p ~/ollama-b-data
Folder ini akan dipasang di kontainer Docker sebagai`/root/.ollama`, di tempat Ollama menyimpan kunci identitasnya, riwayat dan modelnya.
Langkah 2 : Menjalankan Kontainer Docker
# docker-compose.yml
services:
ollama-instance-b:
image: ollama/ollama:0.20.2
container_name: ollama-instance-b
ports:
- "11435:11434"
volumes:
- /home/cheroliv/ollama-b-data:/root/.ollama
environment:
- OLLAMA_HOST=0.0.0.0
restart: always
Apa yang terjadi di sini:
-
Pelabuhan11435dari host dipetakan ke11434dalam kontainer. demikian, instance Docker mendengarkan pada`:11435`tanpa konflik dengan instansi native yang mengokupi`:11434`.
-
Volume`~/ollama-b-data`dipasang pada`/root/.ollama`— ini adalah tempat identitas SSH akan disimpan.
-
`OLLAMA_HOST=0.0.0.0`memungkinkan kontainer untuk menerima koneksi eksternal.
Saya telah men-deploy stack ini melalui Portainer, tetapi sebuah sederhana`docker compose up -d`juga berfungsi sama baiknya.
Langkah 3 : Mengambil Kunci Publik
Karena kontainer masih bersih saat pertama kali dijalankan, Ollama otomatis menghasilkan pasangan kunci SSH baru dalam volume. Kita mengambil kunci publik:
$ docker exec ollama-instance-b cat /root/.ollama/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDDQ+dvnfmuo49q5O8LOlvgZ39SKORFw47ry9k4H2jPc
Saya memastikan bahwa kunci ini berbeda dari kunci instance asli:
# Instance native
$ cat /usr/share/ollama/.ollama/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIGyF...(différente)
# Instance Docker
$ cat ~/ollama-b-data/id_ed25519.pub
ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIDDQ...(différente)
Dua kunci yang berbeda, dua identitas terpisah. Permainan selesai.
|
Jika kontainer Anda memulai ulang, ia menggunakan kembali kunci yang ada dalam volume. Identitas bersifat persisten. Anda tidak akan kehilangan asosiasi dengan akun Pro. |
Langkah 4 : Simpan Kunci di Ollama.com
Buka https://ollama.com/settings/keys → Tambahkan Kunci SSH. Kita menempelkan kunci publik instance Docker lalu memvalidasi.
Selanjutnya, kami menautkan identitas ini ke akun Pro B:
$ docker exec -it ollama-instance-b ollama signin
Browser terbuka, kita masuk dengan email akun B, dan token terhubung dengan kunci SSH kontainer. Kita memastikan bahwa semuanya OK :
$ docker exec -it ollama-instance-b ollama signin
User: cherolivpro
Langkah 5: Menguji dengan model kecil gratis
Sebelum saya membahas harga berlangganan Pro, saya ingin yakin bahwa pipa berfungsi. Saya menarik sebuah model lokal kecil dan gratis untuk memvalidasi konektivitas :
$ docker exec ollama-instance-b ollama pull qwen3:0.6b
pulling manifest
pulling 7f4030143c1c: 100% ▕██████████████████▏ 522 MB
success
$ curl -s http://localhost:11435/api/tags
{"models":[{"name":"qwen3:0.6b","model":"qwen3:0.6b",...}]}
Pelabuhan`11435`mengjawab, model telah disajikan. Instans B masih hidup.
Setelah saya merasa tenang, saya beralih ke pull dari model cloud Pro yang sebenarnya:
$ docker exec ollama-instance-b ollama pull deepseek-v4-pro:cloud
pulling manifest
pulling 31c3059e137e: 100% ▕██████████████████▏ 344 B
success
344 byte untuk manifest model cloud — normal, inferensi dilakukan di sisi server, bukan lokal. Dan inilah ujian terakhir:
$ curl -s http://localhost:11435/v1/chat/completions \
-H "Content-Type: application/json" \
-d '{"model":"deepseek-v4-pro:cloud","messages":[{"role":"user","content":"Dis bonjour en une phrase courte."}]}'
{
"id": "chatcmpl-480",
"model": "deepseek-v4-pro",
"choices": [{
"message": { "content": "Bonjour !" },
"finish_reason": "stop"
}],
"usage": { "total_tokens": 181 }
}
Halo juga, instance B.
Jebakan API `/v1/models
Saya kehilangan 20 menit karena detail bodoh. Ketika saya mengonfigurasi penyedia`ollama-b`di OpenCode, tidak ada yang muncul di pemilih model. Tidak ada. Tidak apa-apa.
Alasan? API`/v1/models`dari instance B kembali`{"object":"list","data":null}`alih-alih`{"object":"list","data":[]}`tidak ada model yang ditarik. Nilai`null`membuat parsing crash di sisi OpenCode, yang tidak menampilkan provider.
Solusi: mendeklarasikan model eksplisit dalam konfigurasi OpenCode alih-alih bergantung pada penemuan dinamis.
{
"$schema": "https://opencode.ai/config.json",
"provider": {
"ollama": {
"npm": "@ai-sdk/openai-compatible",
"name": "Ollama (local)",
"options": { "baseURL": "http://localhost:11434/v1" },
"models": {
"gemma4:e2b": { "name": "Gemma 4 E2B (local)" }
}
},
"ollama-b": {
"npm": "@ai-sdk/openai-compatible",
"name": "Ollama Instance B (Docker)",
"options": { "baseURL": "http://localhost:11435/v1" },
"models": {
"qwen3:0.6b": { "name": "Qwen3 0.6B (B)" },
"deepseek-v4-pro:cloud": { "name": "DeepSeek V4 Pro (B)" }
}
}
}
}
Dengan pernyataan eksplisit ini, OpenCode segera melihat provider B dan model-modelnya. Merestart sesi, dan selektor`/models`Menampilkan kedua instance berdampingan.
|
Jika Anda tidak melihat provider khusus Anda di`/models`, jangan buang tiga jam untuk me-restart terminal Anda. Deklarasikan model secara manual di`opencode.json`— Ini menyelesaikan masalah secara langsung. |
Hasil : Dua Sesi, Dua Akun, Nol Konflik
Pada akhirnya, saya dapat meluncurkan dua sesi OpenCode secara bersamaan:
Session 1 → /models → Ollama (local) → deepseek-v4-pro:cloud → Compte A
Session 2 → /models → Ollama Instance B (Docker) → deepseek-v4-pro:cloud → Compte B
Setiap sesi memiliki kuota dan batas laju masing-masing, dan tidak saling mengganggu. Meski mesin sama, kartu biru sama, dua email berbeda.
Dan yang terbaik? Kontainer Docker sedang`restart: always`. Dia tetap bertahan setelah reboot sistem tanpa perlu intervensi manual.
Pelajaran yang Dipelajari
-
Docker mengisolasi semua, bahkan identitas— Bind mount volume sederhana sudah cukup untuk memberikan kontainer kumpulan kunci SSH miliknya sendiri, sehingga membuatnya tak dapat dibedakan dari mesin fisik yang berbeda dari perspektif Ollama.
-
Dua email, CB yang sama— Ollama tidak memblokir langganan berganda dari metode pembayaran yang sama. Hanya email yang harus berbeda.
-
Coba gratis sebelum membayar — Un
ollama pull qwen3:0.6b(modèle libre, 522 Mo) permet de valider toute la chaîne réseau sans débourser un centime. Vous validez le plomberie d’abord, vous activez le Pro ensuite. -
/v1/models` dengan
data: nullmerusak OpenCode— Jika Anda mengonfigurasi provider khusus dengan`"models": {}`, OpenCode mencoba menemukan model melalui API. Jika API merespons`data: null`, penyedia tidak muncul. Deklarasikan model-model secara eksplisit. -
Dua akun, itu adalah multi-processing manusia— Satu akun Pro = satu sesi OpenCode aktif. Dua akun = dua sesi paralel. Bagi seseorang yang mengelola beberapa proyek Gradle secara bersamaan, itu merupakan game changer.
Untuk pergi lebih jauh
Artikel dipublikasikan pada 2026-05-08