Certbot Cron Docker

Certbot được đóng gói trong Docker, sử dụng cron để lên lịch tạo và gia hạn chứng chỉ SSL. Hỗ trợ các phương pháp độc lập, webroot hoặc Cloudflare. Mặc định, quá trình gia hạn tự động diễn ra mỗi 6 giờ.

Trước đây, để tạo ssl, mình hay dùng trực tiếp ssl từ Cloudflare, không thì dùng Caddy, cơ bản mọi thứ đều tự động, nhanh gọn lẹ

Mà dạo này làm thèng dns.bibica.net, nó chỉ chạy thuần túy 1 ứng dụng DNS server, không dùng được ssl từ Cloudflare, vì thiếu hỗ trợ DoT/DoQ, cài Caddy vào chỉ để lấy ssl tự động thì hơi phí, vì nó cũng ăn 1 ít RAM

Tìm kiếm một hồi thì thấy dự án Certbot Cron Docker chạy đúng ý

  • Hỗ trợ chạy qua Cloudflare DNS API
  • Khi chạy, tạo mới ssl xong tự tắt docker (không chạy ngầm, đỡ tốn RAM và CPU)
  • Khi gọi chạy lại tự tạo mới hoặc gia hạn, xong tự tắt docker

Nói chung nó hoạt động hợp lý, các bản images khác thì thường không có tính năng tự tắt sau khi chạy, hoặc hướng dẫn của họ hơi nhức đầu, nói chung vấn đề này không đáng để tìm hiểu, vì tạo SSL là thứ cơ bản nhất rồi

  • Trong cấu hình compose.yml, thêm vào tương tự như bên dưới
services:
  certbot:
    image: bibica/certbot-cron:latest
    container_name: certbot
    environment:
      - EMAIL=${CERTBOT_EMAIL}
      - DOMAINS=${CERTBOT_DOMAINS}
      - PLUGIN=cloudflare
      - CLOUDFLARE_TOKEN=${CLOUDFLARE_API_TOKEN}
      - TZ=Asia/Ho_Chi_Minh
      - ONE_SHOT=true
      - GENERATE_DHPARAM=false
    volumes:
      - ./certbot:/config
  • Tạo file .env các thông tin cấu hình
CERTBOT_EMAIL=your-email@example.com
CERTBOT_DOMAINS=yourdomain.com,*.yourdomain.com
CLOUDFLARE_API_TOKEN=your_cloudflare_api_token_here

Chạy nó tự tạo ssl theo domain bạn thêm vào, ví dụ đường dẫn nằm tại

/certbot/letsencrypt/live/dns.bibica.net/cert.pem
/certbot/letsencrypt/live/dns.bibica.net/chain.pem
/certbot/letsencrypt/live/dns.bibica.net/fullchain.pem
/certbot/letsencrypt/live/dns.bibica.net/privkey.pem
  • Tạo 1 cron để nó tự chạy hàng ngày
0 3 * * * docker start certbot

3h sáng tự khởi động lại docker để gia hạn domain, chạy xong tự thoát

Lười cấu hình cron lỉnh kỉnh thì bỏ tùy chọn - ONE_SHOT=true đi, docker sẽ không tự thoát, hoạt động ở chế độ mặc định 6h tự chạy gia hạn 1 lần, hình như dùng cỡ 2-4MB RAM gì đó thôi

Chú ý nhỏ duy nhất, certbot chạy với user 1000, nếu backup thủ công, upload thủ công cấu hình cũ lên VPS mới, thường sẽ chạy theo user root, khiến certbot không đọc được cấu hình cũ

  • Nếu đổi dữ liệu thủ công sang VPS khác, phân quyền thư mục ./certbot lại cho đúng là được
chown -R 1000:1000 /home/certbot

Các cấu hình mặc định khác tác giả viết mình cũng lười xem, chủ yếu chỉ dùng Cloudflare DNS API nên xem phần này, bạn nào dùng trên các nền tảng khác thì đọc hướng dẫn của tác giả là được, lý thuyết bản images này hỗ trợ rất nhiều cách tạo SSL, vì thấy cài luôn cả Nginx vào để hỗ trợ

Cá nhân tạo thành 1 images riêng trên docker hub, tránh tình huống images gốc của tác giả xóa, lười thì dùng Caddy tạo ssl cho nhanh cũng được


Related Posts

Chính sách bình luận: Chúng tôi rất trân trọng các bình luận của bạn và cảm ơn thời gian bạn dành để chia sẻ ý tưởng và phản hồi.
Ghi chú: Những bình luận được xác định là spam hoặc chỉ mang tính quảng cáo sẽ bị xóa.

• Để cải thiện trải nghiệm bình luận, chúng tôi khuyến khích bạn tạo một tài khoản Gravatar. Thêm avatar vào tài khoản Gravatar sẽ giúp bình luận của bạn dễ nhận diện hơn đối với các thành viên khác.

✂️ Sao chép và 📋 Dán Emoji 💪 giúp bình luận thêm sinh động và thú vị!