Best Self-Hosted Code Editor untuk Dev Server Kamu
Situasinya begini: kamu lagi kerja dari laptop kantor yang dikunci IT department, nggak bisa install extension sembarangan, Node.js-nya masih versi 14, dan kamu butuh akses ke project yang jalan di server production. Atau lebih simpel — kamu pengen coding dari iPad atau Chromebook tanpa setup ribet.
Solusi paling masuk akal: self-hosted code editor yang jalan di browser. Tapi begitu kamu mulai research, langsung ketemu tiga atau empat nama yang saling klaim jadi yang terbaik. Artikel ini bukan ranking afiliasi — ini hasil gue nyoba satu-satu di VPS DigitalOcean 2 vCPU / 4 GB RAM, dan gue tulis apa yang actually works.
Kenapa Self-Hosted, Bukan Cloud IDE Biasa?
Gitpod.io dan GitHub Codespaces bagus, tapi ada dua masalah nyata:
- Billing tak terduga. Lupa matiin workspace, tagihan meledak. Gue pernah kena $40 dalam seminggu karena workspace Gitpod cloud jalan terus di background.
- Data keluar dari server kamu. Kalau kamu kerja di project klien atau ada NDA, code kamu lewat infrastruktur pihak ketiga.
Self-hosted artinya kamu kontrol penuh — mulai dari resource sampai network policy.
Tiga Kandidat yang Worth Dibahas
1. code-server (Coder OSS)
Ini yang paling populer. Basically VS Code yang di-port jalan di browser. Extension marketplace-nya pakai Open VSX, bukan Microsoft Marketplace langsung — ini gotcha pertama yang perlu kamu tahu.
Install di Ubuntu 22.04:
curl -fsSL https://code-server.dev/install.sh | sh
systemctl enable --now code-server@$USER
Default-nya jalan di localhost:8080 dengan password yang di-generate otomatis. Cek di:
cat ~/.config/code-server/config.yaml
Output-nya kira-kira:
bind-addr: 127.0.0.1:8080
auth: password
password: abc123randomstring
cert: false
Supaya bisa diakses dari luar dengan HTTPS (wajib kalau mau pakai dari browser mobile), setup Nginx reverse proxy:
server {
listen 443 ssl;
server_name code.domainmu.com;
ssl_certificate /etc/letsencrypt/live/code.domainmu.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/code.domainmu.com/privkey.pem;
location / {
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
}
Jalankan Certbot dulu:
apt install certbot python3-certbot-nginx -y
certbot --nginx -d code.domainmu.com
Gotcha yang gue temuin: Beberapa extension populer kayak Pylance dan GitHub Copilot nggak ada di Open VSX. Workaround-nya kamu bisa download file .vsix dari marketplace Microsoft secara manual, lalu install via:
code-server --install-extension /path/to/extension.vsix
Tapi ini agak ribet dan harus diulang tiap update. Kalau kamu heavily dependent sama Microsoft-exclusive extensions, ini pain point nyata.
Resource usage: Idle sekitar 200–300 MB RAM. Buka project TypeScript besar bisa naik ke 1.5 GB. Untuk VPS 2 GB RAM, agak mepet.
2. Coder (Platform, bukan code-server)
Ini versi enterprise-nya, tapi ada community edition yang gratis. Bedanya sama code-server: Coder adalah platform untuk manage multiple workspace, bisa provisioning via Terraform, dan support berbagai IDE — bukan cuma VS Code, tapi juga JetBrains via JetBrains Gateway.
Install via Docker Compose:
# docker-compose.yml
version: "3.9"
services:
coder:
image: ghcr.io/coder/coder:latest
ports:
- "3000:3000"
environment:
CODER_ACCESS_URL: "https://coder.domainmu.com"
CODER_PG_CONNECTION_URL: "postgresql://coder:password@db/coder?sslmode=disable"
volumes:
- /var/run/docker.sock:/var/run/docker.sock
depends_on:
- db
db:
image: postgres:15
environment:
POSTGRES_USER: coder
POSTGRES_PASSWORD: password
POSTGRES_DB: coder
volumes:
- coder_db:/var/lib/postgresql/data
volumes:
coder_db:
docker compose up -d
Setelah up, buka http://localhost:3000 dan setup admin account. Dari sini kamu bisa bikin template workspace — misalnya template "Python Dev" yang udah include Python 3.11, pip, dan virtual environment pre-configured.
Kapan pilih Coder platform? Kalau kamu manage tim kecil (3–10 orang) dan pengen semua dev punya environment yang konsisten. Untuk solo dev, ini overkill. Resource minimum yang disarankan: 4 vCPU, 8 GB RAM untuk beberapa workspace aktif.
3. Gitpod Self-Hosted (Gitpod Community)
Gitpod punya self-hosted version via Helm chart untuk Kubernetes. Jujur — ini bukan untuk VPS tunggal. Minimum requirement-nya Kubernetes cluster dengan minimal 3 node, masing-masing 4 vCPU / 16 GB RAM.
Gue coba di k3s single-node dan hasilnya... berjalan, tapi workspace startup time-nya 3–5 menit. Terlalu lambat untuk daily use.
Kalau kamu udah punya Kubernetes cluster dan tim yang cukup besar untuk justify kompleksitasnya, Gitpod self-hosted masuk akal. Untuk kebanyakan pembaca di sini, skip dulu.
Perbandingan Langsung
| Aspek | code-server | Coder Platform | Gitpod Self-Hosted |
|---|---|---|---|
| Setup complexity | Rendah | Sedang | Tinggi |
| Min. RAM | 1 GB | 4 GB | 48 GB (cluster) |
| Multi-user | Tidak native | Ya | Ya |
| IDE support | VS Code only | VS Code + JetBrains | VS Code + JetBrains |
| Extension marketplace | Open VSX | Open VSX | Open VSX |
| Cocok untuk | Solo dev | Tim kecil | Tim besar |
Setup code-server yang Lebih Secure
Default setup code-server cukup untuk development, tapi kalau server kamu public-facing, tambahkan beberapa layer:
1. Ganti password dengan hashed password:
# Generate hashed password
echo -n "passwordkamu" | npx argon2-cli -e
# Output: $argon2i$v=19$m=4096...
Edit ~/.config/code-server/config.yaml:
bind-addr: 127.0.0.1:8080
auth: password
hashed-password: "$argon2i$v=19$m=4096..."
cert: false
2. Batasi akses via UFW:
ufw allow from 103.x.x.x to any port 8080 # IP kantor/rumah kamu
ufw deny 8080
Karena kamu pakai Nginx sebagai reverse proxy, port 8080 sebenarnya nggak perlu dibuka ke public — cukup port 443.
3. Tambah HTTP Basic Auth di Nginx sebagai layer kedua:
apt install apache2-utils -y
htpasswd -c /etc/nginx/.htpasswd userkamu
Tambahkan ke block location / di Nginx config:
location / {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/.htpasswd;
proxy_pass http://localhost:8080;
proxy_set_header Host $host;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection upgrade;
proxy_set_header Accept-Encoding gzip;
}
Dua layer auth (code-server password + HTTP Basic Auth) cukup untuk personal use.
Gotcha Lain yang Perlu Kamu Tahu
Clipboard di browser. Copy-paste antara local machine dan code-server kadang bermasalah di Firefox. Chrome/Chromium works better. Ini bukan bug code-server — ini limitasi browser API.
Git credentials. Kalau kamu push ke GitHub dari code-server, setup credential helper supaya nggak ketik password terus:
git config --global credential.helper store
# Atau pakai SSH key yang lebih aman:
ssh-keygen -t ed25519 -C "email@kamu.com"
cat ~/.ssh/id_ed25519.pub # Copy ke GitHub SSH keys
Persistent terminal sessions. Kalau koneksi internet putus di tengah proses panjang (misalnya npm install di project besar), process-nya ikut mati. Fix-nya: pakai tmux atau screen:
apt install tmux -y
tmux new -s dev
# Sekarang semua command jalan di dalam tmux session
# Kalau koneksi putus, attach lagi dengan:
tmux attach -t dev
Extension yang gue install di code-server:
code-server --install-extension esbenp.prettier-vscode
code-server --install-extension dbaeumer.vscode-eslint
code-server --install-extension eamodio.gitlens
code-server --install-extension ms-python.python # Via Open VSX
Yang Gue Pakai Sekarang
Setup gue: code-server di VPS Hetzner CX21 (2 vCPU / 4 GB RAM, ~€4.5/bulan). Ini yang gue jalankan untuk project-project side income dan beberapa client work.
Alasan milih code-server dibanding yang lain:
- Setup 15 menit, bukan 2 jam.
- Resource usage masuk akal untuk VPS kecil.
- Familiar — basically VS Code yang sama yang gue pakai di local.
Kalau suatu saat tim gue berkembang lebih dari 3 orang, gue akan migrate ke Coder platform karena workspace isolation-nya lebih proper. Tapi untuk sekarang, code-server cukup.
Langkah lanjutan yang bisa kamu coba:
- Setup dotfiles repository supaya environment kamu reproducible — kalau VPS mati, tinggal clone dan run script. Untuk referensi lebih lengkap tentang infrastructure dan performance, kamu bisa cek WordPress hosting CDN performance impact yang membahas optimization di level infrastructure.
- Explore
devcontainer.jsonuntuk project-specific environment yang otomatis ke-load waktu buka folder. - Kalau butuh preview web app dari code-server, pakai fitur port forwarding bawaan — klik ikon "Ports" di status bar bawah.
Best self-hosted code editor terbaik itu yang actually kamu setup dan pakai — bukan yang punya feature list paling panjang di landing page-nya.