Part 2 – Setup Traefik Proxy + Docker + DNS di Server Stagging

Photo of author
Publish in

Melanjutkan pemabahsan awal Part 1 mengenai setup traefik pada server stagging dengan menggunakan label pada doker, muncul pertanyaan lain dari benak saya setelah melakukan setup.

Jawabannya sudah jelas BISA, karena traefik sendiri secara basic memiliki fitur yang sama dengan proxy nginx. Maka kita bisa menambahkan server diluar docker dengan menggunakan provider file.

Artikel Sebelumnya : Part 1 – Setup Proxy + Docker + DNS di Server Stagging

Bagian 1 – Mengaktifkan File Provider Traefik

Karena sebelumnya kita menggunakan traefik docker, maka kita pointing directory /etc/traefik/dynamic pada traefik ke directory tempat kita menyimpan file provider.

services:
  traefik:
    image: traefik:v3.1
    command:
      - --providers.docker=true
      - --providers.docker.exposedbydefault=false
      - --providers.file.directory=/etc/traefik/dynamic
      - --providers.file.watch=true
      - --entrypoints.web.address=:80
      # - --entrypoints.websecure.address=:443   # kalau butuh HTTPS lokal
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock:ro
      - ./dynamic:/etc/traefik/dynamic    # <— penting
      # - ./certs:/etc/traefik/certs       # kalau pakai TLS lokal
    ports:
      - "80:80"
      # - "443:443"
    restart: unless-stopped

Setelah itu jalankan ulang docker compose untuk mengaktifkan konfigurasi pada traefik.

docker compose up -d

Setelah itu kita bisa lanjut melakukan konfigurasi pada file konfigurasi.

Bagian 2 – Membuat File Provider reverse.yaml

Karena fitur provider sudah diaktifkan, sekarang kita buat file dengan nama reverse.yaml pada directory dynamic. Lalu sesuaikan konfigurasi seperti dibawah ini dengan case server1 dan server2 yang terhubung ke traefik.

http:
  routers:
    server1:
      rule: Host(`server1.stagging.dev`)
      entryPoints: [web]              # Traefik :80
      service: server1-service
    server2:
      rule: Host(`server2.stagging.dev`)
      entryPoints: [web]              # Traefik :80
      service: server2-service

  services:
    server1-service:
      loadBalancer:
        passHostHeader: true
        servers:
          - url: "http://192.168.0.100"
     server2-service:
      loadBalancer:
        passHostHeader: true
        servers:
          - url: "http://192.168.0.200"

Setelah itu simpan konfigurasi, secara otomatis traefik akan membaca konfigurasi tanpa perlu melakukan restart layanan.

Bagian 3 – Testing

Selanjutnya untuk memastikan bahwa server1 dan server2 sudah bisa dipanggil melalui domain dari traefik, maka kita bisa test menggunakan perintah dig.

dig +short server1.stagging.dev @192.168.0.121
dig +short server2.stagging.dev @192.168.0.121

Ujicoba dengan melakukan nslookup atau mengakses langsung domain server1.stagging.dev di browser. Apabila berhasil maka akan muncul kontendari aplikasi tersebut.

Penutup

Konfigurasi traefik sangat simple dan pleksibel, kita bisa mengarahkan server yang akan kita proxy menggunakan file provider, dan setiap konfigurasi yang kita ubah tidak perlu melakukan restart layanan sehingga layanan lain yang sebelumnya sudah terdaftar tidak akan mengalami masalah.

Menutut saya traefik ini sangat cocok digunakan baik di stagging maupun production, menyesuaikan dengan kebutuhan masing masing 🙂

Referensi

  • https://doc.traefik.io/traefik/expose/docker/
  • Discussion with chatgpt