1104: Improve traefik-certdumper - run.sh and documentation r=mergify[bot] a=boldt

## What type of PR?

Bug fix and documentation

## What does this PR do?

On the first run, the `run.sh` script shows the error `diff: can't stat '/output/cert.pem': No such file or directory`, because the file does not exist in the folder `/output` yet. This bugfix ensures, that the diff is only called, when all required files are available.

Additionally, the corresponding documentation was updated, since the `run.sh` writes the two files `cert.pem` and `key.pem`, and not `your.doma.in.crt` and `your.doma.in.key`. Also some volume fixes.

## Prerequistes
Before we can consider review and merge, please make sure the following list is done and checked.
If an entry in not applicable, you can check it or remove it from the list.

- [X] In case of feature or enhancement: documentation updated accordingly

Co-authored-by: Dennis Boldt <info@dennis-boldt.de>
master
bors[bot] 5 years ago committed by GitHub
commit 2329fe7929
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23

@ -176,20 +176,21 @@ One such example is ``mailu/traefik-certdumper``, which has been adapted for use
# !!! Also dont forget to add "TRAEFIK_DOMAIN=[...]" to your .env! # !!! Also dont forget to add "TRAEFIK_DOMAIN=[...]" to your .env!
- DOMAIN=$TRAEFIK_DOMAIN - DOMAIN=$TRAEFIK_DOMAIN
volumes: volumes:
# Folder, which contains the acme.json
- "/data/traefik:/traefik" - "/data/traefik:/traefik"
- "$ROOT/certs:/output" # Folder, where cert.pem and key.pem will be written
- "/data/mailu/certs:/output"
Assuming you have ``volume-mounted`` your ``acme.json`` put to ``/data/traefik`` on your host. The dumper will then write out ``/data/mailu/certs/cert.pem`` and ``/data/mailu/certs/key.pem`` whenever ``acme.json`` is updated.
Assuming you have ``volume-mounted`` your ``acme.json`` put to ``/data/traefik`` on your host. The dumper will then write out ``/data/traefik/ssl/your.doma.in.crt`` Yay! Now lets mount this to our ``front`` container like:
and ``/data/traefik/ssl/your.doma.in.key`` whenever ``acme.json`` is updated. Yay! Now lets mount this to our ``front`` container like:
.. code-block:: yaml .. code-block:: yaml
volumes: volumes:
- "$ROOT/overrides/nginx:/overrides" - /data/mailu/certs:/certs
- /data/traefik/ssl/$TRAEFIK_DOMAIN.crt:/certs/cert.pem
- /data/traefik/ssl/$TRAEFIK_DOMAIN.key:/certs/key.pem This works, because we set ``TLS_FLAVOR=mail``, which picks up the key-certificate pair (e.g., ``cert.pem`` and ``key.pem``) from the certs folder in the root path (``/certs/``).
.. _`Traefik`: https://traefik.io/ .. _`Traefik`: https://traefik.io/

@ -5,8 +5,10 @@ function dump() {
traefik-certs-dumper file --crt-name "cert" --crt-ext ".pem" --key-name "key" --key-ext ".pem" --domain-subdir --dest /tmp/work --source /traefik/acme.json > /dev/null traefik-certs-dumper file --crt-name "cert" --crt-ext ".pem" --key-name "key" --key-ext ".pem" --domain-subdir --dest /tmp/work --source /traefik/acme.json > /dev/null
if diff -q /tmp/work/${DOMAIN}/cert.pem /output/cert.pem >/dev/null && \ if [[ -f /tmp/work/${DOMAIN}/cert.pem && -f /tmp/work/${DOMAIN}/key.pem && -f /output/cert.pem && -f /output/key.pem ]] && \
diff -q /tmp/work/${DOMAIN}/key.pem /output/key.pem >/dev/null ; then diff -q /tmp/work/${DOMAIN}/cert.pem /output/cert.pem >/dev/null && \
diff -q /tmp/work/${DOMAIN}/key.pem /output/key.pem >/dev/null ; \
then
echo "$(date) Certificate and key still up to date, doing nothing" echo "$(date) Certificate and key still up to date, doing nothing"
else else
echo "$(date) Certificate or key differ, updating" echo "$(date) Certificate or key differ, updating"

Loading…
Cancel
Save