Caddy บน Docker กับ การขอ Cert บน Let’s Encrypt แล้วติด Rate Limit

ตอนโน้น เคยจดบันทึกเอาไว้เรื่องการใช้ Caddy บน docker แล้วมันจะเอา cert จาก let’s encrypt มาติดตั้งและ enable HTTPS ให้โดยอัตโนมัติ ทีนี้ใช้งานไปใช้งานมาสักพัก ก็เจอปัญหาใหม่ตอนที่พยายาม start container บ่อย ๆ แล้วมันไปเอา cert บ่อย ๆ จนติด rate limit ทำให้ไม่สามารถไปขอ cert ใหม่ได้ และส่งผลให้ไม่สามารถ start container ได้

rate limit คือจำนวนครั้งในการอนุญาตในการเข้าเรียกใช้งาน service ต่อช่วงเวลาหนึ่ง ๆ หรือจำนวนอะไรสักอย่าง ต่อจำนวนอะไรสักอย่าง ซึ่งทาง let’s encrypt ก็มีการชี้แจงไว้เต็มไปหมดที่ https://letsencrypt.org/docs/rate-limits/

ทีนี้ปัญหาที่เจอที่เป็น rate limit ในการไปขอ cert ตอน start container ก็เป็นตัวหนึ่ง ซึ่งสามารถแก้ไขได้โดยการเก็บ cert ไว้ใช้ในอนาคต ทำให้ต่อไปถ้ามีการ start container แล้วมันเจอว่ามี cert อยู่แล้ว มันก็จะไม่ไปขอใหม่ ก็จะลดจำนวนครั้งในการขอ cert ได้

วิธีก็ตรงไปตรงมาคือ map volume ที่เอาไว้เก็บ certificate ออกมาจาก caddy container และเราสามารถระบุตำแหน่งที่เก็บ certificate ให้กับ caddy ได้ผ่าน environment variable ชื่อ CADDYPATH ดังนั้น service ของ caddy ใน docker-compose file ก็จะมีหน้าตาประมาณนี้

  caddy:
    image: abiosoft/caddy
    ports:
      - 80:80
      - 443:443
    volumes:
      - ./docker/caddy/data/Caddyfile:/etc/Caddyfile
      - ./docker/caddy/cert:/etc/caddycerts
    restart: always
    environment:
      - CADDYPATH=/etc/caddycerts

เป็นอันจบ

Leave a Reply

Your email address will not be published. Required fields are marked *