aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--docker/auto-certbot/Dockerfile10
-rwxr-xr-xdocker/auto-certbot/daemon.bash31
-rw-r--r--template/docker-compose.yaml.template4
3 files changed, 35 insertions, 10 deletions
diff --git a/docker/auto-certbot/Dockerfile b/docker/auto-certbot/Dockerfile
index 53ab077..e37057b 100644
--- a/docker/auto-certbot/Dockerfile
+++ b/docker/auto-certbot/Dockerfile
@@ -1,8 +1,14 @@
FROM certbot/certbot:latest
ARG CRUPEST_DOMAIN
-ARG CRUPEST_CERTBOT_RENEW_COMMAND=""
+ARG CRUPEST_AUTO_CERTBOT_ADDITIONAL_PACKAGES=""
+ARG CRUPEST_AUTO_CERTBOT_POST_HOOK=""
+ARG CRUPEST_AUTO_CERTBOT_RENEW_COMMAND=""
# install bash
-RUN apk add --no-cache bash
+ENV CRUPEST_DOMAIN=${CRUPEST_DOMAIN}
+ENV CRUPEST_AUTO_CERTBOT_ADDITIONAL_PACKAGES=${CRUPEST_AUTO_CERTBOT_ADDITIONAL_PACKAGES}
+ENV CRUPEST_AUTO_CERTBOT_POST_HOOK=${CRUPEST_AUTO_CERTBOT_POST_HOOK}
+ENV CRUPEST_AUTO_CERTBOT_RENEW_COMMAND=${CRUPEST_AUTO_CERTBOT_RENEW_COMMAND}
+RUN apk add --no-cache bash ${CRUPEST_AUTO_CERTBOT_ADDITIONAL_PACKAGES}
COPY daemon.bash /daemon.bash
VOLUME ["/var/www/certbot", "/etc/letsencrypt", "/var/lib/letsencrypt"]
ENTRYPOINT [ "/daemon.bash" ]
diff --git a/docker/auto-certbot/daemon.bash b/docker/auto-certbot/daemon.bash
index de21ba8..10b2a25 100755
--- a/docker/auto-certbot/daemon.bash
+++ b/docker/auto-certbot/daemon.bash
@@ -1,18 +1,23 @@
#!/usr/bin/env bash
+set -e
+
# Check I'm root.
if [[ $EUID -ne 0 ]]; then
echo "This script must be run as root" 1>&2
exit 1
fi
-# Check CRUPEST_CERTBOT_RENEW_COMMAND is defined.
-if [ -z "$CRUPEST_CERTBOT_RENEW_COMMAND" ]; then
- echo "CRUPEST_CERTBOT_RENEW_COMMAND is not defined or empty"
- CRUPEST_CERTBOT_RENEW_COMMAND="certbot renew --webroot -w /var/www/certbot"
- printf "Will use:\n%s\n" "$CRUPEST_CERTBOT_RENEW_COMMAND"
+# Check certbot version.
+certbot --version
+
+# Check CRUPEST_AUTO_CERTBOT_RENEW_COMMAND is defined.
+if [ -z "$CRUPEST_AUTO_CERTBOT_RENEW_COMMAND" ]; then
+ echo "CRUPEST_AUTO_CERTBOT_RENEW_COMMAND is not defined or empty"
+ CRUPEST_AUTO_CERTBOT_RENEW_COMMAND="certbot renew --webroot -w /var/www/certbot"
+ printf "Will use:\n%s\n" "$CRUPEST_AUTO_CERTBOT_RENEW_COMMAND"
else
- printf "CRUPEST_CERTBOT_RENEW_COMMAND is defined as:\n%s\n" "$CRUPEST_CERTBOT_RENEW_COMMAND"
+ printf "CRUPEST_AUTO_CERTBOT_RENEW_COMMAND is defined as:\n%s\n" "$CRUPEST_AUTO_CERTBOT_RENEW_COMMAND"
fi
# Check CRUPEST_CERT_PATH, default to /etc/letsencrypt/live/$CRUPEST_DOMAIN/fullchain.pem
@@ -20,6 +25,12 @@ if [ -z "$CRUPEST_CERT_PATH" ]; then
CRUPEST_CERT_PATH="/etc/letsencrypt/live/$CRUPEST_DOMAIN/fullchain.pem"
fi
+# Check CRUPEST_CERT_PATH exists.
+if [ ! -f "$CRUPEST_CERT_PATH" ]; then
+ echo "Cert file does not exist"
+ exit 1
+fi
+
function check_and_renew_cert {
expire_info=$(openssl x509 -enddate -noout -in "$CRUPEST_CERT_PATH")
@@ -48,8 +59,12 @@ function check_and_renew_cert {
else
# No, renew now.
echo "Renewing now..."
- # Run CRUPEST_CERTBOT_RENEW_COMMAND
- $CRUPEST_CERTBOT_RENEW_COMMAND
+ # Run CRUPEST_AUTO_CERTBOT_RENEW_COMMAND
+ if [ -n "$CRUPEST_AUTO_CERTBOT_POST_HOOK" ]; then
+ $CRUPEST_AUTO_CERTBOT_RENEW_COMMAND --post-hook "$CRUPEST_AUTO_CERTBOT_POST_HOOK"
+ else
+ $CRUPEST_AUTO_CERTBOT_RENEW_COMMAND
+ fi
fi
}
diff --git a/template/docker-compose.yaml.template b/template/docker-compose.yaml.template
index 058a60c..57a9b5c 100644
--- a/template/docker-compose.yaml.template
+++ b/template/docker-compose.yaml.template
@@ -83,6 +83,8 @@ services:
pull: true
args:
- CRUPEST_DOMAIN=$CRUPEST_DOMAIN
+ - CRUPEST_AUTO_CERTBOT_ADDITIONAL_PACKAGES="docker"
+ - CRUPEST_AUTO_CERTBOT_POST_HOOK="docker restart nginx"
tags:
- "crupest/auto-certbot:latest"
container_name: auto-certbot
@@ -90,6 +92,8 @@ services:
- "./data/certbot/certs:/etc/letsencrypt"
- "./data/certbot/data:/var/lib/letsencrypt"
- "./data/certbot/webroot:/var/www/certbot"
+ # map docker socket to allow auto-certbot to restart nginx
+ - "/var/run/docker.sock:/var/run/docker.sock"
restart: on-failure:3
networks:
- internal