AI coding assistant tidak selalu harus menggunakan layanan cloud atau API berbayar. Jika perusahaan memiliki server sendiri dengan GPU yang cukup, kita dapat menjalankan Large Language Model (LLM) menggunakan Ollama dan menggunakannya langsung dari code editor-mu.
Pada artikel ini saya akan membahas konfigurasi AI coding assistant menggunakan:
- VSCode atau VSCodium
- Continue.dev
- Ollama
- LLM yang berjalan di server kantor
- SSH Tunnel
- SSH Jump Host / Bastion Server
Topologi yang digunakan kurang lebih seperti ini:
┌─────────────────────┐
│ Laptop Developer │
│ │
│ VSCode / VSCodium │
│ Continue.dev │
│ │
│ localhost:11434 │
└──────────┬──────────┘
│
│ SSH Local Tunnel
│
▼
┌─────────────────────┐
│ Jump Host │
│ IP:Port │
│ │
│ user │
└──────────┬──────────┘
│
│ SSH ProxyJump
▼
┌─────────────────────┐
│ Server AI / Ollama │
│ localhost:port │
│ │
│ Ollama :11434 │
└─────────────────────┘
Dengan pendekatan ini, Ollama tidak perlu diekspos langsung ke internet.
Kenapa Menggunakan SSH Tunnel?
Secara default, Ollama biasanya berjalan pada port:
11434
Misalnya API Ollama dapat diakses secara lokal melalui:
http://localhost:11434
Masalahnya, server Ollama berada di jaringan kantor dan tidak dapat diakses langsung dari laptop developer.
Akses ke server tersebut harus melewati:
- Jump Host / Bastion Host
- Server tujuan
- SSH Tunnel
Daripada membuka port Ollama ke internet, kita cukup membuat tunnel SSH sehingga aplikasi di laptop dapat mengakses Ollama seolah-olah Ollama berjalan secara lokal.
Perintah SSH Tunnel
Perintah yang digunakan adalah:
ssh -N \ -L 11434:localhost:11434 \ -J user@ip:port \ user@localhost \ -p port
Mari kita bahas satu per satu.
Parameter -N
-N
Parameter ini berarti SSH tidak menjalankan remote command.
SSH hanya digunakan untuk membuat koneksi tunnel.
Ini cocok untuk kasus seperti:
- Port forwarding
- Database tunnel
- Redis tunnel
- Ollama API tunnel
- Internal service access
Terminal akan tetap terbuka selama tunnel masih aktif.
Parameter -L
-L 11434:localhost:11434
Ini adalah Local Port Forwarding.
Format dasarnya:
-L LOCAL_PORT:REMOTE_HOST:REMOTE_PORT
Dalam kasus ini:
11434:localhost:11434
Artinya:
Laptop localhost:11434
│
│ SSH Tunnel
▼
Server Ollama localhost:11434
Setelah tunnel aktif, aplikasi di laptop cukup mengakses:
http://localhost:11434
Padahal request tersebut sebenarnya diteruskan ke Ollama yang berjalan di server kantor.
Menggunakan Jump Host dengan -J
Server Ollama tidak dapat diakses langsung dari internet.
Kita harus melewati jump host:
softdev@ip:port
Kemudian menggunakan:
-J softdev@i:port
-J merupakan singkatan dari:
ProxyJump
SSH akan membuat koneksi seperti:
Laptop
│
│ SSH
▼
IP:port
│
│ SSH
▼
Server Ollama
Ini jauh lebih nyaman dibandingkan membuat tunnel SSH bertingkat secara manual.
Koneksi ke Server Tujuan
Bagian berikut:
user@localhost -p port
berarti SSH terhubung ke:
User: user
Host: localhost
Port: port
Dari perspektif jump host, localhost:2233 merupakan server tujuan yang dapat diakses melalui jaringan internal.
Secara konsep:
Laptop
│
▼
Jump Host
IP Public:Port
│
▼
localhost:port
│
▼
Server dengan Ollama
Kemudian port Ollama:
localhost:11434
pada server tujuan diteruskan ke:
localhost:11434
di laptop developer.
Menjalankan SSH Tunnel
Buka terminal dan jalankan:
Tanyakan ke admin kantor
Jika koneksi berhasil, terminal akan terlihat seperti tidak melakukan apa-apa.
Hal tersebut normal.
SSH sedang berjalan di foreground dan menjaga tunnel tetap aktif.
Jangan tutup terminal tersebut.
Menguji Ollama dari Laptop
Setelah tunnel aktif, buka terminal baru dan jalankan:
curl http://localhost:11434/api/tags
Jika berhasil, Ollama akan mengembalikan daftar model yang tersedia.
Contoh:
{
"models": [
{
"name": "qwen3-coder:latest"
}
]
}
Atau dapat menggunakan:
curl http://localhost:11434
Jika koneksi berhasil, berarti:
VSCode
│
▼
localhost:11434
│
SSH Tunnel
│
▼
Jump Host
│
▼
Ollama Server
sudah berfungsi.
Menggunakan Continue.dev
Setelah Ollama dapat diakses melalui:
http://localhost:11434
selanjutnya kita dapat menghubungkan Continue.dev.
Continue.dev dapat digunakan pada:
- Visual Studio Code
- VSCodium
- Editor berbasis VSCode lainnya yang kompatibel
Install extension Continue.dev melalui marketplace atau marketplace alternatif yang tersedia pada editor.
Setelah terinstall, konfigurasi model dapat diarahkan ke Ollama lokal.
Yang menarik adalah Continue.dev tidak perlu mengetahui bahwa Ollama sebenarnya berada di server kantor.
Dari perspektif Continue.dev:
Ollama berjalan di:
http://localhost:11434
Padahal sebenarnya request melewati SSH tunnel.
Konfigurasi Ollama di Continue.dev
Konfigurasi model secara konsep dapat menggunakan provider Ollama dengan alamat:
http://localhost:11434
Misalnya model coding yang tersedia di server:
qwen3-coder
atau model lain yang mendukung coding dan agent workflow.
Arsitektur akhirnya menjadi:
VSCode / VSCodium -> Continue.dev -> AI Agent -> HTTP -> localhost:11434 -> SSH Local Tunnel -> SSH Jump Host -> Internal AI Server -> Ollama API :11434 -> LLM Model
Mengapa Pendekatan Ini Menarik?
Ada beberapa keuntungan menggunakan arsitektur seperti ini.
1. GPU Tidak Perlu Ada di Laptop
Laptop developer tidak perlu memiliki GPU besar.
Proses inference dilakukan oleh server kantor.
Laptop hanya digunakan untuk:
- VSCode/VSCodium
- Continue.dev
- Menampilkan hasil AI
- Mengirim source code dan context
Sedangkan proses berat dilakukan oleh:
GPU Server
2. Model Tidak Perlu Di-download di Setiap Laptop
Jika menggunakan Ollama secara lokal, setiap developer mungkin perlu mengunduh model berukuran:
10 GB
20 GB
30 GB
atau lebih
Dengan Ollama Server, model cukup tersedia di satu tempat.
Developer tinggal menggunakan API.
3. Lebih Aman Dibanding Membuka Ollama ke Internet
Membuka port:
11434
langsung ke internet bukanlah pilihan ideal.
Dengan SSH Tunnel:
Ollama Server
│
localhost only
│
SSH
│
Developer
Ollama tetap dapat berjalan secara internal.
Akses hanya diberikan kepada user yang memiliki akses SSH.
4. Tidak Perlu VPN Tambahan
Dalam beberapa kasus, VPN mungkin tidak tersedia atau terlalu kompleks untuk dikonfigurasi.
SSH Tunnel dapat menjadi solusi sederhana.
Developer cukup memiliki:
- SSH Client
- Credential SSH
- Akses ke Jump Host
- Akses ke server internal
Menjalankan Tunnel di Background
Jika tidak ingin terminal selalu terbuka, SSH dapat dijalankan di background.
Contoh:
ssh -f -N \
-L 11434:localhost:11434 \
-J user@ip public : port \
user@localhost \
-p port
Parameter:
-f
akan meminta SSH berpindah ke background setelah autentikasi berhasil.
Namun untuk penggunaan awal, saya lebih menyarankan menggunakan tanpa -f terlebih dahulu.
Hal ini memudahkan troubleshooting jika:
- Password salah
- SSH key bermasalah
- Jump host tidak dapat diakses
- Port tujuan tidak tersedia
- Tunnel terputus
Membuat Konfigurasi SSH Lebih Sederhana
Perintah SSH di atas cukup panjang.
Agar lebih mudah, kita dapat menggunakan file:
~/.ssh/config
Contoh:
Host office-jump
HostName IP Public
Port port
User user
Host ollama-office
HostName localhost
Port 2233
User user
ProxyJump office-jump
LocalForward 11434 localhost:11434
Kemudian cukup menjalankan:
ssh -N ollama-office
Lebih mudah dibandingkan mengingat perintah panjang.
Selain itu konfigurasi ini dapat digunakan kembali untuk kebutuhan lain.
Menggunakan SSH Config dengan VSCode dan Tools Developer
Menggunakan ~/.ssh/config memiliki keuntungan tambahan.
Host:
ollama-office
dapat digunakan oleh berbagai tools yang mendukung OpenSSH.
Misalnya:
ssh ollama-office
atau tools lain yang menggunakan konfigurasi SSH standar.
Dengan pendekatan ini, konfigurasi jaringan tidak perlu diulang di setiap aplikasi.
Aplikasi hanya cukup mengetahui:
http://localhost:11434
Troubleshooting
Port 11434 Sudah Digunakan
Jika laptop sudah menjalankan Ollama lokal, kemungkinan muncul error:
Address already in useGunakan port lokal lain:
ssh -N \
-L 11435:localhost:11434 \
-J user@ip public:port \
user@localhost \
-p port
Kemudian akses:
http://localhost:11435
Remote Ollama tetap menggunakan:
localhost:11434
Tunnel Terputus
Koneksi SSH dapat terputus karena:
- Koneksi internet berubah
- Laptop sleep
- Server melakukan restart
- Idle connection timeout
Untuk penggunaan yang lebih stabil, dapat menambahkan:
-o ServerAliveInterval=60
-o ServerAliveCountMax=3
Contoh:
ssh -N \
-o ServerAliveInterval=60 \
-o ServerAliveCountMax=3 \
-L 11434:localhost:11434 \
-J user@ip public:port \
user@localhost \
-p port
SSH akan mengirim keepalive secara periodik.
Continue.dev Tidak Bisa Terhubung
Pastikan tunnel benar-benar aktif.
Cek:
curl http://localhost:11434/api/tags
Jika perintah ini gagal, masalah belum berada di Continue.dev.
Periksa terlebih dahulu:
- SSH tunnel
- Jump host
- Server tujuan
- Service Ollama
Di server Ollama, periksa:
ollama list
dan:
systemctl status ollama
Kesimpulan
Menggunakan AI Coding Agent tidak selalu berarti harus menggunakan API cloud.
Dengan kombinasi:
VSCode / VSCodium
+
Continue.dev
+
SSH Tunnel
+
Jump Host
+
Ollama Server
+
LLM Coding Model
kita dapat membangun environment AI coding assistant yang berjalan menggunakan infrastruktur internal.
Developer cukup mengakses:
http://localhost:11434
sementara proses inference sebenarnya dilakukan di server kantor.
Pendekatan ini memberikan beberapa keuntungan:
- GPU server dapat digunakan bersama
- Model tidak perlu di-download di setiap laptop
- Ollama tidak perlu dibuka langsung ke internet
- Akses dapat melewati SSH Jump Host
- Continue.dev tetap dapat bekerja seperti menggunakan Ollama lokal
- Cocok untuk development environment internal atau remote
Dengan arsitektur ini, VSCode atau VSCodium dapat berfungsi sebagai frontend AI Agent, sementara server kantor menjadi pusat komputasi LLM.
Dari sisi developer, semuanya tetap terasa sederhana:
Continue.dev
↓
localhost:11434
Namun di balik localhost, terdapat SSH tunnel yang menghubungkan editor dengan AI server yang berada di jaringan internal perusahaan.