Masdika Loading..
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

  • Home
  • Portfolio
  • Services
  • Resume
  • Skills
  • Blog
  • Contact
Masdika.ID

DevOps Engineer

Cloud Engineer

System Administrator

Download CV

Recent Posts

  • Dari Laptop Bekas Jadi Server Pribadi: Cara Membangun Home Server Murah Menggunakan ISP MyRepublic dengan Public IP
  • Pembuatan Subnet dan Alokasi IP Address pada Amazon Web Service VPC
  • Instalasi dan Konfigurasi AWS CLI pada EC2 (Lab Guide)
  • Membangun Arsitektur Web + Database Highly Available di AWS (RDS Multi-AZ)
  • Cara Reset Password OpenBSD di Proxmox via VNC

Recent Comments

  1. Alif on Jangan Gunakan latest Tag pada Docker Images! Ini Alasannya
  2. Sahrull on Panduan Lengkap Anti-DDoS: Installasi Iptables, Hardening, dan Cloudflare Proxy
  3. VSTRA on Cara Cerdas Menguasai Kubernetes (K8s): Panduan Lengkap Orkestrasi Kontainer untuk Developer Modern
  4. Rikiy on Cara Mudah Deploy Website Node.js Menggunakan Docker
  5. Masdika.BIZ.ID on Disaster Recovery Cluster (DRC) WordPress dengan MariaDB Galera dan Load Balancer Caddy

Categories

  • Tutorial

Masdika.ID

  • About
  • Terms & Conditions
  • Privacy Policy
BLOG POST

Panduan Lengkap Deploy Traefik + Nginx dengan HTTPS dan Redirect pada Domain

September 12, 2025 Tutorial by Masdika.ID
Panduan Lengkap Deploy Traefik + Nginx dengan HTTPS dan Redirect pada Domain

Bagi DevOps engineer atau sysadmin yang ingin membangun infrastruktur web modern, Traefik adalah salah satu solusi reverse proxy terbaik. Traefik menawarkan fitur otomatisasi SSL dari Let’s Encrypt, routing berbasis label, serta dukungan middleware untuk redirect, autentikasi, dan monitoring. πŸ”’βš‘

Dalam artikel ini, kita akan membuat setup lengkap: Traefik + Nginx + domain syslab.my.id, dengan fitur:

  • βœ… HTTPS otomatis dengan sertifikat Let’s Encrypt
  • πŸ” Redirect dari HTTP β†’ HTTPS
  • 🌐 Redirect dari non-www (syslab.my.id) β†’ www (www.syslab.my.id)
  • πŸ”‘ Dashboard Traefik dengan proteksi BasicAuth
  • πŸ“‚ Struktur folder rapi, mudah dikelola

1. Persiapan Awal βš™οΈ

Sebelum mulai, pastikan:

  1. Server (VPS / bare-metal) dengan Docker + Docker Compose sudah terinstall.
  2. Domain syslab.my.id sudah diarahkan ke IP server (via DNS A record).
  3. Firewall sudah membuka port 80 (HTTP) dan 443 (HTTPS).

Jika menggunakan Red Hat / CentOS / AlmaLinux, aktifkan port dengan:

sudo firewall-cmd --permanent --add-service=http
sudo firewall-cmd --permanent --add-service=https
sudo firewall-cmd --reload

2. Struktur Folder πŸ“‚

Agar terstruktur rapi, kita buat folder terpisah untuk Traefik dan aplikasi Nginx.

mkdir -p /home/andika/traefik/log
mkdir -p /home/andika/traefik/letsencrypt
mkdir -p /home/andika/nginx-app/html

Tambahkan file HTML sederhana:

echo "<h1>Halo, ini Nginx di belakang Traefik!</h1>" > /home/andika/nginx-app/html/index.html

3. Konfigurasi Traefik πŸ›‘οΈ

Masuk ke folder Traefik:

cd /home/andika/traefik

Buat file .htpasswd untuk BasicAuth (username masdika, password Masdika11):

htpasswd -nb masdika Masdika11 > .htpasswd

Buat file docker-compose.yml:

services:
  traefik:
    image: traefik:v3.1
    container_name: traefik
    command:
      - "--api.dashboard=true"
      - "--api.insecure=false"
      - "--providers.docker=true"
      - "--entrypoints.web.address=:80"
      - "--entrypoints.websecure.address=:443"
      - "--certificatesresolvers.myresolver.acme.httpchallenge=true"
      - "--certificatesresolvers.myresolver.acme.httpchallenge.entrypoint=web"
      - "--certificatesresolvers.myresolver.acme.email=me@syslab.my.id"
      - "--certificatesresolvers.myresolver.acme.storage=/letsencrypt/acme.json"

      # Logging & Monitoring
      - "--log.level=INFO"
      - "--accesslog=true"
      - "--accesslog.filePath=/var/log/traefik/access.log"
      - "--metrics.prometheus=true"

    ports:
      - "80:80"
      - "443:443"
    volumes:
      - "./letsencrypt:/letsencrypt"
      - "/var/run/docker.sock:/var/run/docker.sock:ro"
      - "./.htpasswd:/etc/traefik/.htpasswd:ro"
      - "./log:/var/log/traefik"
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.dashboard.rule=Host(`traefik.syslab.my.id`)"
      - "traefik.http.routers.dashboard.entrypoints=websecure"
      - "traefik.http.routers.dashboard.tls.certresolver=myresolver"
      - "traefik.http.routers.dashboard.service=api@internal"
      - "traefik.http.middlewares.auth.basicauth.usersfile=/etc/traefik/.htpasswd"
      - "traefik.http.routers.dashboard.middlewares=auth"
    networks:
      - web
    restart: always

networks:
  web:
    external: true

4. Konfigurasi Nginx 🌐

Masuk ke folder Nginx:

cd /home/andika/nginx-app

Buat file docker-compose.yml:

services:
  nginx:
    image: nginx:alpine
    container_name: nginx-app
    volumes:
      - ./html:/usr/share/nginx/html:ro
    labels:
      - "traefik.enable=true"

      # Router utama untuk www.syslab.my.id
      - "traefik.http.routers.nginx.rule=Host(`www.syslab.my.id`)"
      - "traefik.http.routers.nginx.entrypoints=websecure"
      - "traefik.http.routers.nginx.tls.certresolver=myresolver"

      # Redirect non-www ke www
      - "traefik.http.routers.redirect.rule=Host(`syslab.my.id`)">
      - "traefik.http.routers.redirect.entrypoints=websecure"
      - "traefik.http.routers.redirect.tls.certresolver=myresolver"
      - "traefik.http.routers.redirect.middlewares=to-www"

      # Middleware redirect non-www β†’ www
      - "traefik.http.middlewares.to-www.redirectregex.regex=^https://syslab\\.my\\.id/(.*)"
      - "traefik.http.middlewares.to-www.redirectregex.replacement=https://www.syslab.my.id/$$1"
      - "traefik.http.middlewares.to-www.redirectregex.permanent=true"

      # Redirect HTTP β†’ HTTPS
      - "traefik.http.middlewares.https-redirect.redirectscheme.scheme=https"
      - "traefik.http.routers.nginx-http.rule=Host(`www.syslab.my.id`)"
      - "traefik.http.routers.nginx-http.entrypoints=web"
      - "traefik.http.routers.nginx-http.middlewares=https-redirect"
      - "traefik.http.routers.redirect-http.rule=Host(`syslab.my.id`)"
      - "traefik.http.routers.redirect-http.entrypoints=web"
      - "traefik.http.routers.redirect-http.middlewares=https-redirect"
    networks:
      - web
    restart: always

networks:
  web:
    external: true

5. Deploy Aplikasi πŸš€

Buat network web:

docker network create web

Jalankan Traefik:

cd /home/andika/traefik
docker compose up -d

Jalankan Nginx:

cd /home/andika/nginx-app
docker compose up -d

6. Uji Hasil πŸ”

  • http://syslab.my.id β†’ redirect β†’ https://www.syslab.my.id
  • http://www.syslab.my.id β†’ redirect β†’ https://www.syslab.my.id
  • https://syslab.my.id β†’ redirect β†’ https://www.syslab.my.id
  • https://www.syslab.my.id β†’ tampil konten HTML πŸš€

Untuk dashboard:

  • https://traefik.syslab.my.id β†’ login dengan masdika / Masdika11 πŸ”‘

Kesimpulan πŸ“

Dengan konfigurasi ini, kita sudah berhasil:

  • Men deploy Traefik sebagai reverse proxy πŸ”€
  • Menjalankan Nginx sebagai aplikasi backend 🌐
  • Mengaktifkan SSL otomatis dari Let’s Encrypt πŸ”’
  • Melakukan redirect HTTP β†’ HTTPS πŸ”
  • Mengarahkan trafik non-www β†’ www 🌍
  • Mengamankan dashboard dengan BasicAuth πŸ”‘

Konsep ini sangat fleksibel. Nanti, kamu bisa menambahkan service lain (WordPress, Flask API, Node.js, dsb.) dengan mudah hanya dengan menambah label domain di docker-compose.yml. Traefik akan otomatis mengurus routing dan SSL, sehingga manajemen aplikasi jadi lebih sederhana dan aman. πŸš€πŸ”₯

Share:
Tags: dockerdomainnginxtraefik
Related Posts
Membangun Jenkins Production Stabil dengan Inbound Agent dan Traefik SSL

Panduan ini menjelaskan instalasi Jenkins production menggunakan Docker + Traefik (SSL otomatis via DNS Challenge Cloudflare), dengan fokus utama pada…

VM vs Container vs Pod – Perbedaan Lengkap untuk Cloud & DevOps!

Dalam dunia Cloud Computing dan DevOps, tiga istilah yang paling sering kita dengar adalah Virtual Machine (VM), Container, dan Pod….

Post navigation

Prev
Next
Write a comment Cancel Reply


Β© 2025 www.masdika.id β€” Semua hak cipta dilindungi