Episode ini membedah static configuration Traefik: format YAML, TOML, CLI, dan environment variable beserta urutan prioritasnya. Kalian mempelajari definisi entrypoints, pengaktifan API dan dashboard yang aman, konfigurasi certificate resolver, serta pengaturan access log dan level logging.

Di episode 3 kalian menjalankan Traefik dengan flag CLI. Sekarang saatnya berpindah ke cara yang lebih profesional: static configuration dalam file. Konfigurasi statis adalah seluruh pengaturan yang Traefik baca saat startup — entrypoints, provider, API dashboard, log, dan certificate resolver.
Episode 4 menjelaskan keempat cara menulis static config, urutan prioritasnya, lalu mempraktikkan bagian-bagian terpenting satu per satu. Setelah episode ini, kalian akan memiliki file traefik.yml yang layak dipakai sebagai dasar semua eksperimen selanjutnya — dan yang terpenting, dashboard yang tidak lagi terbuka tanpa autentikasi.
Traefik menerima static configuration lewat empat mekanisme, dengan prioritas dari tertinggi ke terendah:
--entrypoints.web.address=:80TRAEFIK_ENTRYPOINTS_WEB_ADDRESS=:80traefik.yml (YAML) atau traefik.toml (TOML)Aturan praktis: jika sebuah nilai ditulis di lebih dari satu tempat, nilai dengan prioritas lebih tinggi yang menang. Konversi dari CLI ke environment variable mengikuti pola: -- dihilangkan, titik diganti underscore, dan huruf dijadikan kapital.
--entrypoints.web.address=:80
TRAEFIK_ENTRYPOINTS_WEB_ADDRESS=:80Contoh TOML untuk perbandingan — format yang populer di Traefik v2:
[api]
dashboard = true
[entryPoints]
[entryPoints.web]
address = ":80"Untuk series ini kita konsisten memakai YAML. Bahasa markah TOML dan YAML sama-sama didukung penuh oleh Traefik.
Entrypoint adalah alamat listen Traefik: kombinasi protokol, host, dan port. Penamaan bebas, tapi konvensi umum memakai web untuk HTTP dan websecure untuk HTTPS. Traefik v3 juga mendukung protokol TCP dan UDP terpisah yang akan kita bahas di episode 18.
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
api:
address: ":8080"Setiap router nanti menyatakan entrypoint mana yang dilayaninya. Entrypoint api di atas kita gunakan khusus untuk dashboard, sehingga dashboard tidak bisa diakses lewat entrypoint publik. Konfigurasi di bawah ini menunjukkan pengaturan lengkap yang akan menjadi standar series ini:
api:
dashboard: true
entryPoints:
web:
address: ":80"
websecure:
address: ":443"
dashboard:
address: ":8080"
providers:
docker:
exposedByDefault: false
log:
level: INFO
filePath: "/var/log/traefik/traefik.log"
accessLog:
filePath: "/var/log/traefik/access.log"Api Traefik menyediakan endpoint HTTP yang mengekspos seluruh konfigurasi dinamis saat runtime. Dashboard adalah antarmuka grafis di atas API tersebut. Saat diaktifkan, keduanya bisa diakses lewat entrypoint mana pun yang terikat — termasuk entrypoint publik, sehingga harus diamankan.
Cara paling sederhana: letakkan dashboard di entrypoint internal, lalu pasang middleware BasicAuth di router dashboard. Middleware ini akan kita bedah di episode 9, tapi lihat dulu polanya di sini:
# dibaca oleh providers.file (episode 19)
http:
routers:
dashboard:
rule: "Host(`traefik.localhost`) && PathPrefix(`/api`) || Host(`traefik.localhost`) && PathPrefix(`/dashboard`)"
entrypoints:
- dashboard
service: api@internal
middlewares:
- auth
middlewares:
auth:
basicAuth:
users:
- "admin:$apr1$H6uskkkW$IgXLP6ewTrSuBkPqGkHpv5"Router khusus bernama dashboard ini menunjuk ke service bawaan api@internal — service internal Traefik yang menyediakan dashboard. Pasangan Host dan PathPrefix membuat hanya trafik dashboard yang diizinkan, dan middleware auth menuntut kredensial sebelum konten dashboard tampil.
Selain dashboard, API mengekspos endpoint berguna untuk debugging:
/api/overview -> ringkasan komponen
/api/http/routers -> daftar router aktif
/api/http/services -> daftar service aktif
/api/http/middlewares -> daftar middleware aktifKita akan memakai endpoint ini di episode 24 untuk inspeksi konfigurasi runtime.
Traefik memiliki dua jalur log: Traefik logs (aktivitas internal) dan access logs (log setiap request). Traefik logs punya lima level: DEBUG, INFO, WARN, ERROR, dan FATAL. Untuk debugging rutin, level INFO sudah cukup; DEBUG menghasilkan output sangat besar tapi berguna saat menelusuri masalah routing.
Access logs bisa memakai format Common (default, satu baris per request) atau JSON untuk mesin parsing:
accessLog:
filePath: "/var/log/traefik/access.log"
format: json
filters:
statusCodes:
- "200"
- "5xx"
fields:
headers:
names:
User-Agent: keepDi atas, kita membatasi log hanya untuk status 200 dan semua 5xx, serta mempertahankan header User-Agent. Rotasi file bisa dilakukan dengan logrotate di host atau membiarkan Traefik menulis stdout dan menyerahkan agregasi ke tool eksternal — akan kita bahas di episode 24.
Warning
Environment variable mengalahkan file konfigurasi. Jika kalian mendefinisikan entrypoint di traefik.yml tetapi lupa bahwa CI mengekspor TRAEFIK_ENTRYPOINTS_*, nilai yang menang bukan dari file kalian. Periksa environment saat debugging konfigurasi aneh.
Inti yang harus dibawa pulang:
api@internal adalah pintu ke dashboard Traefik.Di episode 5 selanjutnya kita akan membahas Docker Provider: Labels & Discovery — cara Traefik menemukan container, struktur label traefik.http.*, routing dasar dengan Host dan Path, konfigurasi service load balancer, serta siklus hidup container yang berubah secara dinamis. Di sinilah keajaiban auto-discovery dimulai.