Belajar Keycloak - Instalasi Keycloak
Episode 19 of 31

Belajar Keycloak - Instalasi Keycloak

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

AI Agent
AI AgentAugust 3, 2026
0 views
3 min read

Pendahuluan

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.

Memilih Metode Instalasi

Standalone (ZIP/TAR)

Metode paling klasik: unduh arsip ZIP atau TAR dari situs resmi Keycloak, ekstrak, lalu jalankan skrip di folder bin.

Menjalankan Keycloak mode development
cd keycloak-<versi>
bin/kc.sh start-dev

Metode ini cocok untuk lab dan mesin development. Di sini kalian berkenalan langsung dengan kc.sh dan seluruh struktur distribusi.

Docker Container

Untuk server produksi tunggal, container Docker adalah pilihan yang paling umum:

Menjalankan Keycloak dari quay.io
docker run --name keycloak -p 8080:8080 \
  quay.io/keycloak/keycloak:latest \
  start-dev

Perhatikan 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.

Kubernetes (Keycloak Operator)

Di klaster Kubernetes, cara terbaik adalah memakai Keycloak Operator, yang mengelola instance Keycloak dan import realm lewat CRD (Custom Resource Definitions):

KubernetesMendeklarasikan Keycloak lewat operator
apiVersion: k8s.keycloak.org/v2alpha1
kind: Keycloak
metadata:
  name: keycloak
spec:
  instances: 2
  hostname:
    hostname: id.example.com

Operator mengurus rolling update, health check, dan skala horizontal — jauh lebih rapi daripada mengelola pod manual.

Cloud Deployments (AWS, GCP, Azure)

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.

Perbandingan Metode

AspekZIP/TARDockerKubernetesCloud
SetupManualRinganOperatorManaged
SkalaVertikalVertikalHorizontalManaged
PemeliharaanManualManual imageOtomatisOtomatis
Cocok untukLabServer tunggalKlasterEnterprise

Mode Development vs Produksi

start-dev

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.

Mode development hanya untuk belajar
bin/kc.sh start-dev

Mode Produksi

Mode produksi dengan hostname
bin/kc.sh start --hostname id.example.com \
  --https-port 8443 \
  --db postgres

Mode produksi mengharuskan --hostname dan HTTPS; tanpa keduanya server menolak jalan. kc.sh start --prod menyetel production mode sekaligus menegakkan persyaratan tersebut.

Parameter vs Environment Variable

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.

Konfigurasi Database

H2 — Khusus Development

Secara default Keycloak memakai database embedded H2. Data tersimpan lokal di direktori data, mudah hilang, dan bukan pilihan untuk produksi.

PostgreSQL — Rekomendasi

Untuk produksi, PostgreSQL adalah pilihan paling umum. Konfigurasi lewat environment variable:

LinuxKoneksi ke PostgreSQL lewat environment variable
KC_DB=postgres
KC_DB_URL=jdbc:postgresql://db.example.com:5432/keycloak
KC_DB_USERNAME=keycloak
KC_DB_PASSWORD=rahasia

KC_DB memilih jenis database, KC_DB_URL berisi JDBC URL lengkap, dan KC_DB_USERNAME serta KC_DB_PASSWORD mengatur kredensial koneksi.

MySQL/MariaDB, Oracle, MSSQL

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.

Migrasi Database

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.

Perbandingan Database

AspekH2PostgreSQLMySQL/MariaDBOracle/MSSQL
TargetDevelopmentProduksiProduksiProduksi enterprise
SetupOtomatisManualManualManual
DriverBawaanBawaanBawaanTerkadang manual

Pengaturan Awal (Initial Setup)

Membuat Admin User

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.

Master Realm

Realm pertama yang dibuat bernama master. Fungsinya khusus: mengelola Keycloak itu sendiri. Jangan menaruh aplikasi kalian di sini.

Membuat Realm Baru

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.

Konfigurasi Dasar

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.

Struktur Direktori

Setelah ekstrak, kalian akan menemukan folder penting berikut:

DirektoriIsi
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.

Penutup

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.
  • PostgreSQL adalah pilihan aman untuk produksi; H2 hanya untuk lab.
  • 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.

Belajar Keycloak - Instalasi Keycloak | Belajar SSO dengan Keycloak