Last active 6 months ago

letsencrypt_docker.md Raw

Deploying Letsencrypt certificates with Docker.

Preparing Docker environment and configure letsencrypt

mkdir -p /srv/docker/letsencrypt/etc/
mkdir -p /srv/docker/letsencrypt/log
chmod 700 /srv/docker/letsencrypt/log
mkdir -p /srv/docker/letsencrypt/lib/webrootauth
mkdir /etc/letsencrypt/                                                         
ln -s /srv/docker/letsencrypt/etc/live/ /etc/letsencrypt/
cat > /srv/docker/letsencrypt/etc/webroot.ini <<EOF
# Use a 4096 bit RSA key instead of 2048
rsa-key-size = 4096

# Always use the staging/testing server
server = https://acme-v01.api.letsencrypt.org/directory

# Uncomment and update to register with the specified e-mail address
email = <email>

# Use the text output instead of the curses UI.
text = True

# Agree Terms of Service
agree-tos = True

# Select renewal by default
# renew-by-default = True

# Use webroot authenticator plugin
authenticator = webroot

# Define webroot path for authenticator plugin
webroot-path = /var/lib/letsencrypt/webrootauth  
EOF

Request certificate

docker run --rm --name letsencrypt -v "/srv/docker/letsencrypt/log:/var/log/letsencrypt" -v "/srv/docker/letsencrypt/etc:/etc/letsencrypt" -v "/srv/docker/letsencrypt/lib:/var/lib/letsencrypt" quay.io/letsencrypt/letsencrypt:latest --webroot-path "/var/lib/letsencrypt/webrootauth" -c "/etc/letsencrypt/webroot.ini" -d <domain> certonly

Renew

cat > /etc/cron.daily/letsencrypt_autorenew << EOF
#!/bin/bash                                                                     

docker run --rm --name letsencrypt -v "/srv/docker/letsencrypt/log:/var/log/letsencrypt" -v "/srv/docker/letsencrypt/etc:/etc/letsencrypt" -v "/srv/docker/letsencrypt/lib:/var/lib/letsencrypt" quay.io/letsencrypt/letsencrypt:latest --webroot-path "/var/lib/letsencrypt/webrootauth" -c "/etc/letsencrypt/webroot.ini" renew | grep -v -E "(^Processing|certs are not due for renewal|skipped|^No renewals were attempted|^$)"
if [ $(find /etc/letsencrypt/live/*/cert.pem -mmin -5|wc -l) -gt 0 ]; then
	/etc/init.d/nginx reload;
fi
EOF
chmod +x /etc/cron.daily/letsencrypt_autorenew