Salah satu hal yang paling mengganggu saat development web adalah URL http://localhost:3000. Bukan hanya karena tidak ada HTTPS — yang artinya beberapa fitur browser seperti Service Worker atau Clipboard API tidak bisa diuji — tapi juga karena tidak bisa langsung dibagikan ke rekan tim atau klien untuk demo cepat. Solusi konvensionalnya membutuhkan mkcert untuk sertifikat, konfigurasi DNS lokal, reverse proxy seperti Caddy atau Nginx, dan kalau mau publik, masih perlu ngrok atau tools tunneling terpisah.
Slim menyatukan semua itu dalam satu CLI tool. Satu perintah untuk domain HTTPS lokal, satu perintah lagi untuk membagikan server lokal ke internet dengan URL publik. Tidak ada konfigurasi server, tidak ada edit /etc/hosts manual.
Slim Itu Apa Sebenarnya
Slim adalah CLI tool berbasis Go yang bertindak sebagai proxy layer di antara browser dan server development kita. Ketika kita jalankan slim start myapp --port 3000, Slim melakukan tiga hal secara otomatis: membuat local Certificate Authority (CA) yang dipercaya sistem, menerbitkan sertifikat TLS untuk domain myapp.test, dan mengarahkan semua request ke myapp.test ke localhost:3000.
Ini berbeda dengan pendekatan mkcert yang hanya mengurus sertifikat — Slim juga menangani routing dan DNS resolution sekaligus. Berbeda juga dengan ngrok yang primarily dirancang untuk tunneling publik; Slim lebih fokus ke pengalaman domain lokal yang bersih, dengan fitur sharing publik sebagai bonus.
Slim tersedia untuk macOS dan Linux. Windows belum didukung secara resmi per dokumentasi saat ini.
Instalasi Slim
Instalasi menggunakan satu perintah curl:
curl -sL https://slim.sh/install.sh | sh
Setelah instalasi selesai, verifikasi dengan menjalankan slim --version. Jika ingin membangun dari source, diperlukan Go 1.25 atau lebih baru:
git clone https://github.com/kamranahmedse/slim
cd slim
make build
make install
Langkah pertama setelah instalasi adalah menjalankan setup awal yang akan membuat local CA dan mendaftarkannya ke trust store sistem:
slim setup
Perintah ini yang membuat semua domain lokal yang dibuat Slim nantinya akan langsung dipercaya browser tanpa warning keamanan.
Membuat Domain HTTPS Lokal
Anggap kita sedang mengerjakan aplikasi manajemen inventaris yang berjalan di port 4000. Untuk membuat domain lokal HTTPS-nya:
slim start inventaris --port 4000
Slim langsung menerbitkan sertifikat dan domain https://inventaris.test siap diakses. Tidak perlu restart browser, tidak perlu konfigurasi tambahan.
Secara default Slim menggunakan TLD .test, tapi ini bisa dikustomisasi jika perlu menggunakan .loc atau .dev:
slim start inventaris --port 4000 --tld loc
# https://inventaris.loc → localhost:4000
Path Routing ke Port Berbeda
Satu fitur yang sangat berguna untuk arsitektur monorepo atau proyek full-stack adalah path routing — kemampuan mengarahkan path URL yang berbeda ke port yang berbeda dalam satu domain:
slim start inventaris --port 4000 --route /api=8080
Dengan perintah di atas, https://inventaris.test mengarah ke frontend di port 4000, sedangkan https://inventaris.test/api mengarah ke backend API di port 8080. Cocok untuk setup Next.js + API server terpisah tanpa perlu memodifikasi CORS configuration di development.
Konfigurasi dengan .slim.yaml
Untuk proyek yang punya banyak service, mendefinisikan semuanya di file konfigurasi jauh lebih praktis daripada mengetik ulang perintah setiap sesi. Buat file .slim.yaml di root proyek:
services:
- domain: inventaris
port: 4000
routes:
- path: /api
port: 8080
- path: /storage
port: 9000
- domain: admin
port: 5173
log_mode: minimal
cors: true
Dengan file ini, semua service bisa dijalankan sekaligus:
slim up # jalankan semua service
slim down # hentikan semua service
log_mode menerima tiga nilai: full untuk logging semua request, minimal hanya menampilkan error, dan off untuk menonaktifkan log sama sekali. Field cors menambahkan CORS headers secara otomatis — berguna saat frontend dan backend berjalan di origin yang berbeda meski dalam domain lokal yang sama.
Membagikan Server Lokal ke Internet
Ketika perlu menunjukkan progress ke klien atau kolaborasi remote, Slim menyediakan fitur sharing menggunakan domain slim.show:
slim share --port 4000
Output-nya berupa URL publik sementara seperti https://xyz123.slim.show yang langsung bisa dibagikan. Untuk subdomain yang lebih mudah diingat:
slim share --port 4000 --subdomain demo-inventaris
# https://demo-inventaris.slim.show
Tambahkan flag --ttl 2h untuk mengatur berapa lama URL publik aktif. Ini membantu menghindari lupa menutup tunnel yang sudah tidak dipakai.
Fitur ini juga mendukung password protection untuk session yang lebih sensitif:
slim share --port 4000 --subdomain preview --password r4hasiaDemo
Perintah Diagnostik dan Manajemen
Slim menyediakan beberapa perintah utilitas yang berguna sehari-hari:
slim list # lihat semua domain lokal yang sedang berjalan
slim logs # akses log request secara real-time
slim doctor # diagnosa: cek status CA, port forwarding, dan daemon
slim update # update Slim ke versi terbaru
slim doctor terutama berguna saat setup pertama kali di mesin baru atau ketika tiba-tiba domain lokal tidak bisa diakses. Perintah ini memeriksa apakah CA terdaftar dengan benar, apakah port forwarding aktif, dan apakah daemon Slim berjalan normal.
Kesimpulan
Slim menyederhanakan satu area friction yang sering diabaikan dalam setup development: gap antara localhost dengan kondisi produksi yang sesungguhnya. HTTPS lokal yang bersih memungkinkan kita menguji fitur yang bergantung pada secure context, sementara fitur sharing membuat kolaborasi dan demo klien tidak perlu setup tambahan. Untuk proyek dengan banyak service, .slim.yaml membuat seluruh environment bisa dijalankan dengan satu perintah. Bagi yang sudah familiar dengan tools self-hosted seperti Coolify atau Dokploy, Slim melengkapi workflow development lokal sebelum deployment.