1. Home
  2. Docs
  3. Self-hosted Server
  4. Caddy: Reverse Proxy, Loa...
  5. Cara Install Caddy sebagai Reverse Proxy dan HTTPS Cloudflare Otomatis Untuk Docker Container via Label

Cara Install Caddy sebagai Reverse Proxy dan HTTPS Cloudflare Otomatis Untuk Docker Container via Label

Kali ini saya ingin mencoba mencontohkan install Caddy sebagai reverse proxy dan memberikan Trusted SSL HTTPS menggunakan DNS Challenge Cloudflare secara otomatis untuk docker container menggunakan label.

Prerequisites

  • Docker & Docker Compose
  • Domain TLD Aktif.
  • Akun dan API DNS Token Cloudflare.

Install Caddy Dengan Docker Compose

Contoh simple docker-compose untuk deploy Caddy

version: "3.3"

services:
  caddy:
    container_name: caddy
    image: homeall/caddy-reverse-proxy-cloudflare:latest
    restart: unless-stopped
    environment:
      - TZ=Asia/Jakarta
      - CADDY_INGRESS_NETWORKS=caddy
      - CF_API_TOKEN=TOKEN_API_CLOUDFLARE_ANDA
    networks:
      - caddy
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"      
      - "./caddy-data:/data"                             
    ports:
      - "80:80"
      - "443:443"
    labels:                                              
      caddy.email: [email protected]                     
      caddy.acme_dns: "cloudflare {env.CF_API_TOKEN}"    

networks:
  caddy:
    external: true

Docker image yang digunakan adalah Build yang sudah ter install plugin Caddy :
github.com/lucaslorentz/caddy-docker-proxy/v2 plugin ini yang dapat menjadikan reverse proxy untuk docker container via label.
github.com/caddy-dns/cloudflare plugin ini dibutuhkan untuk DNS-Challenge jika menggunakan Cloudflare.

Docker Image Github : https://github.com/homeall/caddy-reverse-proxy-cloudflare.

Deploy Contoh Container Whoami

version: '3.7'
services:
  whoami:
    image: traefik/whoami
    networks:
      - caddy
    labels:
      caddy: whoami.example.modalsemangat.com
      caddy.reverse_proxy: "{{upstreams 80}}"
      # caddy.tls.ca: "https://acme.zerossl.com/v2/DV90" # Jika lebih prefer ke ZeroSSL. Default nya Let's Encrypt.
      caddy.tls.ca: "https://acme-staging-v02.api.letsencrypt.org/directory" # Diperlukan untuk testing, hapus jika sudah selesai.
      
networks:
  caddy:
    external: true

Dengan menggunakan label tersebut plugin github.com/lucaslorentz/caddy-docker-proxy/v2 akan scan metadata docker di docker network “caddy” mencari label yang mengindikasikan services container tersebut akan di kelola oleh Caddy. Kemudian, akan generate Caddyfile dengan site entries dan mengarahkan ke masing-masing services docker dengan nama DNS atau IP containernya. Setiap parameter container docker berubah, plugin ini update Caddyfile dan trigger Caddy untuk reload tanpa downtime.

Untuk format Labels untuk parameter lain bisa lihat di Labels-To-CaddyFile-Conversion. 

Dan plugin github.com/caddy-dns/cloudflare akan melakukan generate TLS Certificate menggunakan defaultnya Let’s Encrypt dengan metode DNS-Challenge. Jadi dengan plugin caddy ini Anda tidak perlu expose port services Caddy ke cloud internet. Anda bisa gunakan untuk generate otomatis Trusted HTTPS untuk akses server-server Web local Anda.

Tags , ,

Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *