我试图找到在docker-container中运行certbot的简单文档,但我能找到的只是运行certbot + webserver等的复杂指南。官方页面有点没用。.. https://hub.docker.com/r/certbot/certbot/。我已经有了独立于我的网站的网络服务器,我想在它自己的运行certbot。
有人能给予我一些指导,告诉我如何用/opt/mysite/html
的webroot为mysite.com
生成证书吗?
由于我已经在端口443和80上提供了服务,我想如果certbot需要的话,可以使用“主机网络”,但我真的不明白为什么它需要访问443,而我的网站已经通过443提供服务。
我已经找到了这样的东西来生成一个certbot容器,但我不知道如何“使用它”或告诉它为我的网站生成一个cert。
例如:
WD=/opt/certbot
mkdir -p $WD/{mnt,setup,conf,www}
cd $WD/setup
cat << 'EOF' >docker-compose.yaml
version: '3.7'
services:
certbot:
image: certbot/certbot
volumes:
- type: bind
source: /opt/certbot/conf
target: /etc/letsencrypt
- type: bind
source: /opt/certbot/www
target: /var/www/certbot
entrypoint: "/bin/sh -c 'trap exit TERM; while :; do certbot renew; sleep 12h & wait $${!}; done;'"
EOF
chmod +x docker-compose.yaml
这个链接有一些接近我需要的东西,(显然我需要以某种方式给予它我的域作为一个参数!)
Letsencrypt + Docker + Nginx
docker run -it --rm \
-v certs:/etc/letsencrypt \
-v certs-data:/data/letsencrypt \
deliverous/certbot \
certonly \
--webroot --webroot-path=/data/letsencrypt \
-d api.mydomain.com
我喜欢让一切都非常“隔离”,所以我希望只让certbot在自己的容器中运行,并配置nginx/webserver以单独使用certbot,而不是让certbot自动配置nginx或在与webserver相同的堆栈中运行。
1条答案
按热度按时间yqkkidmi1#
certbot dockerfile给了我一些启示。
基本上你可以在
docker-compose.yaml
上附加following,就像在CLI上附加certbot
一样。请注意"Rate Limit of 5 failed auths/hour"并使用
staging
进行测试参见
DockerFile
中的Entrypoint
Docker-Compose。yaml:
完整配置示例:
变量:
NGinx:
注意:要启动nginx w/ SSL,您需要证书,即使它们是错误的。所以我将使用旧的证书来启动nginx,然后使用certbot来获取正确的证书,然后重新启动nginx加载正确的证书。这只是第一次设置。
更新个人博客--〉https://www.freesoftwareservers.com/display/FREES/Use+CertBot+-+LetsEncrypt+-+In+StandAlone+Docker+Container