diff options
Diffstat (limited to 'roles/jails/05_homepage')
| -rw-r--r-- | roles/jails/05_homepage/defaults/main.yml | 33 | ||||
| -rw-r--r-- | roles/jails/05_homepage/templates/etc_crontab.j2 | 3 | ||||
| -rw-r--r-- | roles/jails/05_homepage/templates/usr_local_bin_update_agate_certs.sh.j2 | 28 |
3 files changed, 63 insertions, 1 deletions
diff --git a/roles/jails/05_homepage/defaults/main.yml b/roles/jails/05_homepage/defaults/main.yml index dbf767e..99c74e5 100644 --- a/roles/jails/05_homepage/defaults/main.yml +++ b/roles/jails/05_homepage/defaults/main.yml @@ -3,18 +3,51 @@ userland: "15.1-RELEASE" zfs: - name: zroot/jails/volumes/homepage_www mountpoint: /var/www + - name: zroot/jails/volumes/homepage_agate_tls + mountpoint: /usr/local/etc/agate/tls + owner: "80" + group: "80" + - name: zroot/jails/volumes/homepage_gemini + mountpoint: /var/gemini + +nullfs: + - src: /usr/local/jails/containers/ingress/usr/local/etc/letsencrypt + dst: /mnt/letsencrypt + mode: ro pkg: - pcre2 - nginx - rsync - bash + - agate files: - src: usr_local_etc_nginx_nginx.conf.j2 dest: /usr/local/etc/nginx/nginx.conf - src: etc_crontab.j2 dest: /etc/crontab + - src: usr_local_bin_update_agate_certs.sh.j2 + dest: /usr/local/bin/update-agate-certs + mode: "0755" services: - nginx + - agate + +dirs: + - /var/log/agate + +sysrc: + - name: agate_hostname + value: "jan.systems" + - name: agate_content + value: "/var/gemini" + - name: agate_certs + value: "/usr/local/etc/agate/tls" + - name: agate_logfile + value: "/var/log/agate/agate.log" + - name: agate_addr + value: "0.0.0.0" + - name: agate_port + value: "1965" diff --git a/roles/jails/05_homepage/templates/etc_crontab.j2 b/roles/jails/05_homepage/templates/etc_crontab.j2 index 8541f57..6ec1b69 100644 --- a/roles/jails/05_homepage/templates/etc_crontab.j2 +++ b/roles/jails/05_homepage/templates/etc_crontab.j2 @@ -6,4 +6,5 @@ PATH=/sbin:/bin:/usr/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin # #minute hour mday month wday who command -# TODO: update linklog +# Update agate TLS certs if letsencrypt cert has changed +*/5 * * * * root /usr/local/bin/update-agate-certs >> /var/log/update-agate-certs.log 2>&1 diff --git a/roles/jails/05_homepage/templates/usr_local_bin_update_agate_certs.sh.j2 b/roles/jails/05_homepage/templates/usr_local_bin_update_agate_certs.sh.j2 new file mode 100644 index 0000000..4f0ddaf --- /dev/null +++ b/roles/jails/05_homepage/templates/usr_local_bin_update_agate_certs.sh.j2 @@ -0,0 +1,28 @@ +#!/bin/sh +# update-agate-certs - convert letsencrypt PEM certs to DER for agate +# Runs from cron; only converts if the cert has changed + +set -eu + +CERT_SRC="/mnt/letsencrypt/live/jan.systems/fullchain.pem" +KEY_SRC="/mnt/letsencrypt/live/jan.systems/privkey.pem" +TLS_DIR="/usr/local/etc/agate/tls" +CHECKSUM_FILE="${TLS_DIR}/.cert.sha256" + +# Check if cert has changed +CURRENT_SUM=$(sha256 -q "${CERT_SRC}") +if [ -f "${CHECKSUM_FILE}" ] && [ "$(cat "${CHECKSUM_FILE}")" = "${CURRENT_SUM}" ]; then + exit 0 +fi + +echo "Certificate changed, converting to DER..." + +openssl x509 -in "${CERT_SRC}" -out "${TLS_DIR}/cert.der" -outform DER +openssl pkey -in "${KEY_SRC}" -out "${TLS_DIR}/key.der" -outform DER +chown www:www "${TLS_DIR}/cert.der" "${TLS_DIR}/key.der" +chmod 640 "${TLS_DIR}/cert.der" "${TLS_DIR}/key.der" + +echo "${CURRENT_SUM}" > "${CHECKSUM_FILE}" + +service agate status > /dev/null 2>&1 && service agate restart +echo "Done." |
