Menginstal Keycloak pertama kali: metode standalone ZIP/TAR, container Docker dari quay.io, Kubernetes lewat operator, serta konfigurasi database dan pengaturan awal admin realm.

Di episode 18 kalian menguasai kelompok dan peran sebagai fondasi authorization. Episode 19 ini menandai perpindahan dari teori ke praktik: menginstal Keycloak untuk pertama kali. Kalian akan melihat metode ZIP/TAR, container Docker, hingga Kubernetes, memilih database yang tepat, membuat admin pertama, dan memahami struktur direktori distribusi.
Metode paling klasik: unduh arsip ZIP atau TAR dari situs resmi Keycloak, ekstrak, lalu jalankan skrip di folder bin.
cd keycloak-<versi>
bin/kc.sh start-devMetode ini cocok untuk lab dan mesin development. Di sini kalian berkenalan langsung dengan kc.sh dan seluruh struktur distribusi.
Untuk server produksi tunggal, container Docker adalah pilihan yang paling umum:
docker run --name keycloak -p 8080:8080 \
quay.io/keycloak/keycloak:latest \
start-devPerhatikan registry-nya: quay.io/keycloak/keycloak adalah lokasi resmi image Keycloak, bukan Docker Hub. Pada akses pertama, Keycloak akan meminta pembuatan akun admin lewat halaman web.
Di klaster Kubernetes, cara terbaik adalah memakai Keycloak Operator, yang mengelola instance Keycloak dan import realm lewat CRD (Custom Resource Definitions):
apiVersion: k8s.keycloak.org/v2alpha1
kind: Keycloak
metadata:
name: keycloak
spec:
instances: 2
hostname:
hostname: id.example.comOperator mengurus rolling update, health check, dan skala horizontal — jauh lebih rapi daripada mengelola pod manual.
Di cloud, prinsipnya sama dengan di atas: image yang sama, database managed, dan load balancer yang mengakhiri TLS. Perbedaan utama hanya pada cara menyimpan secret dan mengatur network policy.
| Aspek | ZIP/TAR | Docker | Kubernetes | Cloud |
|---|---|---|---|---|
| Setup | Manual | Ringan | Operator | Managed |
| Skala | Vertikal | Vertikal | Horizontal | Managed |
| Pemeliharaan | Manual | Manual image | Otomatis | Otomatis |
| Cocok untuk | Lab | Server tunggal | Klaster | Enterprise |
bin/kc.sh start-dev menyalakan server dengan banyak pengaman dinonaktifkan: HTTPS tidak wajib, hostname longgar, database H2 bawaan. Tujuannya satu: memudahkan belajar. Jangan dipakai di produksi.
bin/kc.sh start-devbin/kc.sh start --hostname id.example.com \
--https-port 8443 \
--db postgresMode produksi mengharuskan --hostname dan HTTPS; tanpa keduanya server menolak jalan. kc.sh start --prod menyetel production mode sekaligus menegakkan persyaratan tersebut.
Setiap opsi --xxx punya padanan environment variable KC_XXX. Misalnya --http-port menjadi KC_HTTP_PORT. Mana yang dipakai terserah kalian — keduanya setara; environment variable lebih praktis di Docker.
Secara default Keycloak memakai database embedded H2. Data tersimpan lokal di direktori data, mudah hilang, dan bukan pilihan untuk produksi.
Untuk produksi, PostgreSQL adalah pilihan paling umum. Konfigurasi lewat environment variable:
KC_DB=postgres
KC_DB_URL=jdbc:postgresql://db.example.com:5432/keycloak
KC_DB_USERNAME=keycloak
KC_DB_PASSWORD=rahasiaKC_DB memilih jenis database, KC_DB_URL berisi JDBC URL lengkap, dan KC_DB_USERNAME serta KC_DB_PASSWORD mengatur kredensial koneksi.
Selain PostgreSQL, Keycloak mendukung MySQL/MariaDB, Oracle, dan SQL Server. Beberapa database butuh driver JDBC yang disimpan di folder providers; pastikan driver tersedia sebelum memulai.
Saat upgrade versi, Keycloak melakukan migrasi skema secara otomatis selama konfigurasi koneksi masih sama. Selalu backup database sebelum upgrade — migrasi yang gagal di tengah jalan lebih mudah dipulihkan dengan cadangan.
| Aspek | H2 | PostgreSQL | MySQL/MariaDB | Oracle/MSSQL |
|---|---|---|---|---|
| Target | Development | Produksi | Produksi | Produksi enterprise |
| Setup | Otomatis | Manual | Manual | Manual |
| Driver | Bawaan | Bawaan | Bawaan | Terkadang manual |
Pada jalankan pertama, kunjungi alamat server dan halaman pembuatan admin akan muncul (username dan password). Atau set sebelum start pertama lewat environment variable: rilis terbaru memakai KC_BOOTSTRAP_ADMIN_USERNAME dan KC_BOOTSTRAP_ADMIN_PASSWORD, sementara rilis yang lebih lama memakai KEYCLOAK_ADMIN dan KEYCLOAK_ADMIN_PASSWORD.
Realm pertama yang dibuat bernama master. Fungsinya khusus: mengelola Keycloak itu sendiri. Jangan menaruh aplikasi kalian di sini.
Buat realm baru (misal myrealm) untuk aplikasi. Login user dan klien aplikasi tinggal di realm ini, terpisah dari master, sehingga administrasi dan pengaturan kebijakan tidak tercampur.
Sesuaikan nama tampilan realm, aktifkan fitur login yang dibutuhkan, dan atur database tadi sudah di titik yang benar. Detail konfigurasi realm akan dibedah di episode 20.
Setelah ekstrak, kalian akan menemukan folder penting berikut:
| Direktori | Isi |
|---|---|
bin/ | Skrip eksekusi seperti kc.sh dan kcadm.sh |
conf/ | File konfigurasi, termasuk keycloak.conf |
themes/ | Tema bawaan untuk login, account, admin, dan email |
providers/ | Direktori untuk menaruh JAR extension |
data/ | Data lokal seperti database H2 dan cache |
Memahami struktur ini membantu kalian tahu ke mana harus menyuntik konfigurasi, tema, dan provider kustom.
Pada episode 19, kalian menginstal Keycloak: memilih metode (ZIP/TAR, Docker dari quay.io, Kubernetes operator, atau cloud), membedakan mode development dan produksi, mengkonfigurasi database (H2, PostgreSQL, MySQL/MariaDB, Oracle/MSSQL), melakukan pengaturan awal (admin user, master realm, realm baru), dan mengenal struktur direktori.
Inti yang harus dibawa pulang:
start-dev untuk belajar, start --prod untuk produksi — jangan tertukar.master realm untuk administrasi, realm sendiri untuk aplikasi.--hostname dan HTTPS wajib di produksi; tanpanya server menolak berjalan.Di episode 20 berikutnya, kalian akan menyetel instansi yang barusan terpasang: Keycloak Configuration — realm settings, client settings, authentication flows, dan password policies.