diff --git a/acme/README.md b/acme/README.md index f2271e2..ba70204 100644 --- a/acme/README.md +++ b/acme/README.md @@ -1,22 +1,21 @@ # ACME - snippet to obtain let´s encrpyt certificates authenticated by DNS-01 +## Prerequisites +* bash +* curl +* openssl +* cron + ## Dockerfile: ``` ADD ./snippets/acme/dehydrated /dehydrated/ ADD ./snippets/acme/config /dehydrated/config ADD ./snippets/acme/get_cert_ddns01.sh /app/get_cert_ddns01.sh ADD ./snippets/acme/zwackl_hook.sh /app/zwackl_hook.sh +ADD ./snippets/acme/cronjob.daily /etc/periodic/daily/acme ``` **Do not forget to include the cron snippet!** -## Cronjob -`/etc/periodic/daily/acme`: -``` -#!/bin/bash - -. /cron_env && /dehydrated/dehydrated --cron -t dns-01 -k /app/zwackl_hook.sh && ${ACME_RELOAD_CMD} -``` - ## Environment * ACME_FQDNS (required) * ACME_RELOAD_CMD (required) @@ -24,3 +23,4 @@ ADD ./snippets/acme/zwackl_hook.sh /app/zwackl_hook.sh * STAGING_URI (optional) * DDNS01URI (required) * DDNS01KEY (required) +* DDNS01_ONECERT (optional) diff --git a/acme/get_cert_ddns01.sh b/acme/get_cert_ddns01.sh index 2b7f855..83a810c 100755 --- a/acme/get_cert_ddns01.sh +++ b/acme/get_cert_ddns01.sh @@ -40,7 +40,6 @@ if [ ! -z "${ACME_FQDNS+x}" ]; then fi echo -n "" > /dehydrated/domains.txt for fqdn in ${ACME_FQDNS}; do - echo "${fqdn}" echo "${ONELINE}" "${fqdn} " >> /dehydrated/domains.txt if [ ! -d "/secrets/ssl/${fqdn}" ]; then install -d -m 775 "/secrets/ssl/${fqdn}" @@ -64,7 +63,6 @@ if [ ! -z "${ACME_FQDNS+x}" ]; then if [ ! -z "${RUN_DEHYDRATED}" ]; then /dehydrated/dehydrated --cron -t dns-01 -k /app/zwackl_hook.sh fi - export CROND_ENABLE='acme' chmod -R +x /dehydrated/certs else echo "Directory /dehydrated not found!" diff --git a/cron/start_cron.sh b/cron/start_cron.sh index 03f915d..763ed4c 100755 --- a/cron/start_cron.sh +++ b/cron/start_cron.sh @@ -1,29 +1,27 @@ #!/bin/sh -if [ ! -z "${CROND_ENABLE+x}" ]; then - # serialize ENV for cron-jobs - TMP_FILE=/tmp/cron_env - OUT_FILE=/cron_env - echo -n '' > "${OUT_FILE}" - env > "${TMP_FILE}" - while read -r line; do - echo "${line}" | grep -q "^PWD=" - if [ $? = 0 ]; then - continue - fi - echo "${line}" | grep -q "\s" - if [ $? = 0 ]; then - # double-quote blank separated values for $(export) - # 1. awk: replace first(!) appearance of = with =" - # 2. awk: replace end of line with double-quotes - QUOTED=$(echo "${line}" | awk '{sub(/=/,"=\"");}1'| awk '{sub(/$/,"\"");}1') - echo "export ${QUOTED}" >> "${OUT_FILE}" - else - echo "export ${line}" >> "${OUT_FILE}" - fi - done <"${TMP_FILE}" - unlink "${TMP_FILE}" - # start crond in background - /usr/sbin/crond -b -S -fi +# serialize ENV for cron-jobs +TMP_FILE=/tmp/cron_env +OUT_FILE=/cron_env +echo -n '' > "${OUT_FILE}" +env > "${TMP_FILE}" +while read -r line; do + echo "${line}" | grep -q "^PWD=" + if [ $? = 0 ]; then + continue + fi + echo "${line}" | grep -q "\s" + if [ $? = 0 ]; then + # double-quote blank separated values for $(export) + # 1. awk: replace first(!) appearance of = with =" + # 2. awk: replace end of line with double-quotes + QUOTED=$(echo "${line}" | awk '{sub(/=/,"=\"");}1'| awk '{sub(/$/,"\"");}1') + echo "export ${QUOTED}" >> "${OUT_FILE}" + else + echo "export ${line}" >> "${OUT_FILE}" + fi +done <"${TMP_FILE}" +unlink "${TMP_FILE}" +# start crond in background +/usr/sbin/crond -b -S