Membedah struktur configuration.yml dari theme, jwt_secret, dan default_redirection_url hingga access_control, session, regulation, storage, notifier, dan authentication_backend, lengkap dengan validasi authelia validate-config dan manajemen secret lewat environment variable.

Di episode 3 kalian sudah menjalankan Authelia dengan konfigurasi minimal. Sekarang saatnya memahami otak Authelia: configuration.yml. Ini adalah file yang menentukan segalanya — dan karena YAML peka indentasi, kesalahan kecil berujung pada perilaku yang salah atau server yang menolak start. Di episode ini kita membedah setiap bagiannya: dari identitas server (theme, secret, URL default) hingga kebijakan (access control, session, regulation), penyimpanan (storage), notifikasi (notifier), dan sumber pengguna (authentication backend). Kita juga akan mempelajari cara memvalidasi konfigurasi sebelum menjalankannya — keterampilan yang akan menyelamatkan kalian berkali-kali di sisa series ini.
File konfigurasi Authelia terdiri dari bagian-bagian berikut, masing-masing dengan tanggung jawab yang jelas:
| Bagian | Fungsi |
|---|---|
host, port | Alamat dan port tempat server mendengarkan |
theme | Tema portal (light, dark, auto) |
jwt_secret | Secret untuk menandatangani token internal |
default_redirection_url | URL tujuan setelah login berhasil |
access_control | Aturan siapa boleh mengakses apa |
session | Cookie, domain, masa berlaku, dan Redis |
regulation | Proteksi brute force (percobaan login gagal) |
storage | Tempat menyimpan data MFA (SQLite/PostgreSQL/MySQL) |
notifier | Cara mengirim email (SMTP atau filesystem) |
authentication_backend | Sumber akun pengguna (file, LDAP, AD) |
identity_validation | Secret dan konfigurasi reset password |
totp, webauthn | Konfigurasi metode MFA |
host: 0.0.0.0
port: 9091
log_level: info
theme: auto
jwt_secret: dari-environment-variable
default_redirection_url: https://auth.example.comhost: 0.0.0.0 membuat server menerima koneksi dari antarmuka mana pun (wajib untuk kontainer); theme: auto mengikuti preferensi OS pengunjung portal — ringan tapi profesional.jwt_secret dipakai untuk menandatangani token verifikasi — jangan hardcode, injeksi lewat environment (lihat di bawah). default_redirection_url adalah "rumah" pengguna setelah login; arahkan ke portal atau halaman utama yang aman.Bagian paling penting dan paling sering salah. Aturan dievaluasi dari atas ke bawah, yang cocok pertama menang:
access_control:
default_policy: deny
rules:
- domain: "public.example.com"
policy: bypass
- domain: "*.example.com"
policy: two_factor
subject:
- "group:admins"default_policy: deny memastikan apa pun yang tidak tercantum ditolak. Rule pertama mengizinkan public.example.com tanpa login; rule kedua mensyaratkan dua faktor bagi grup admins di semua subdomain. Episode 6 membahas access control secara mendalam.
Mengatur cookie dan session storage:
session:
name: authelia_session
domain: example.com
expiration: 1h
inactivity: 5m
remember_me_duration: 1M
redis:
host: redis
port: 6379
password: dari-environment-variableCookie dibatasi ke domain example.com (agar berlaku untuk semua subdomain), kadaluarsa setelah 1 jam, dan bisa "diingat" hingga 1 bulan. inactivity: 5m memaksa logout otomatis setelah 5 menit tanpa aktivitas — fitur keamanan yang sering diremehkan.
regulation:
max_retries: 5
find_time: 2m
ban_time: 5mArtinya: setelah 5 percobaan login gagal dalam 2 menit, pengguna/IP diblokir selama 5 menit. Ini perisai pertama melawan serangan tebak-password. Episode 21 membahas penalaannya.
storage:
local:
path: /config/db.sqlite3
notifier:
filesystem:
filename: /config/notifications.txtStorage menyimpan secret TOTP dan kredensial WebAuthn — data yang tidak boleh hilang (backup penting, episode 27). Notifier filesystem cukup untuk lab; produksi memakai SMTP.
authentication_backend:
file:
path: /config/users_database.yml
identity_validation:
reset_password:
jwt_secret: dari-environment-variable
totp:
issuer: Authelia
webauthn:
display_name: Autheliaauthentication_backend menentukan sumber akun pengguna (episode 5). identity_validation.reset_password.jwt_secret dipakai untuk token reset password — juga wajib di-inject lewat environment. totp dan webauthn menyesuaikan nama issuer yang tampil saat pengguna memindai QR code.
Sebelum me-restart stack setelah mengubah config, selalu validasi dulu. Authelia menyediakan perintah authelia validate-config:
docker run --rm -v $(pwd)/config:/config authelia/authelia:latest \
authelia validate-config --config /config/configuration.ymlJika ada kesalahan, Authelia melaporkan nomor baris dan deskripsi masalahnya — baca itu sebelum menebak. Validasi ini tidak butuh server berjalan, jadi aman dijalankan kapan saja. Perhatikan: authelia validate-config membutuhkan semua secret yang diperlukan; jika dilewati, ia akan error sebelum memvalidasi isi file — ini sebabnya injeksi environment penting bahkan saat validasi.
Tip
Jadikan validasi bagian dari alur kerja: ubah konfigurasi → authelia validate-config → jika hijau, docker compose up -d --force-recreate authelia. Ini menyelamatkan kalian dari loop "restart gagal" yang tidak jelas.
Authelia mendukung override konfigurasi penuh lewat environment variables. Setiap key di configuration.yml punya padanan env var: huruf kecil diganti garis bawah dan diawali AUTHELIA_. Contoh:
| Key di configuration.yml | Environment variable |
|---|---|
jwt_secret | AUTHELIA_JWT_SECRET |
session.secret | AUTHELIA_SESSION_SECRET |
storage.encryption_key | AUTHELIA_STORAGE_ENCRYPTION_KEY |
identity_validation.reset_password.jwt_secret | AUTHELIA_IDENTITY_VALIDATION_RESET_PASSWORD_JWT_SECRET |
session.redis.password | AUTHELIA_SESSION_REDIS_PASSWORD |
authentication_backend.ldap.password | AUTHELIA_AUTHENTICATION_BACKEND_LDAP_PASSWORD |
Pola ini membuat file configuration.yml bebas dari secret — ia bisa di-version-control dengan aman, sementara nilai rahasia hidup di .env, environment sistem, atau secret manager (pola yang sudah kalian lihat berjalan di episode 3).
Important
Environment variable menang atas nilai di file config. Ini berguna, tapi juga sumber kebingungan: jika Authelia berperilaku tidak terduga, cek apakah ada env var AUTHELIA_* yang bocor dari shell atau .env.
default_policy: bypass "biar mudah" membuka seluruh lab tanpa login; sedangkan session.domain yang berbeda dari domain portal membuat cookie tidak terkirim dan login "mengambang".Pada episode 4 ini kalian telah membedah configuration.yml dari ujung ke ujung: identitas server (host, theme, jwt_secret, default_redirection_url), kebijakan (access_control, session, regulation), penyimpanan (storage), notifikasi (notifier), sumber pengguna (authentication_backend), dan konfigurasi MFA (identity_validation, totp, webauthn). Kalian juga menguasai validasi konfigurasi dengan authelia validate-config dan pola secret via environment variables berprefiks AUTHELIA_.
Poin yang harus kalian bawa:
configuration.yml adalah satu-satunya otak Authelia — pahami setiap bagian sebelum mengubah.default_policy: deny dan evaluasi aturan first match wins adalah fondasi access control.authelia validate-config mencegah loop restart yang sia-sia..env, bukan di YAML.Di episode 5 selanjutnya kita akan membahas bagian yang membuat Authelia benar-benar "tahu" penggunanya: authentication backends — backend file dengan users_database.yml dan password ter-hash argon2id untuk homelab, serta backend LDAP untuk organisasi dengan OpenLDAP atau Active Directory. Sampai jumpa di episode 5!