2022-05-20 15:06:41 +00:00
|
|
|
#!/bin/bash
|
|
|
|
|
2023-02-01 19:44:05 +00:00
|
|
|
set -ex
|
2022-09-09 18:00:07 +00:00
|
|
|
|
2022-05-24 18:20:59 +00:00
|
|
|
# let's do a refresh of the certificates. Let's Encrypt will not run if it's not time.
|
|
|
|
docker pull certbot/certbot:latest
|
2022-05-20 15:06:41 +00:00
|
|
|
|
2022-10-31 02:24:25 +00:00
|
|
|
# iterate over each domain and call certbot
|
|
|
|
for DOMAIN_NAME in ${DOMAIN_LIST//,/ }; do
|
|
|
|
export DOMAIN_NAME="$DOMAIN_NAME"
|
|
|
|
export SITE_PATH="$SITES_PATH/$DOMAIN_NAME"
|
|
|
|
|
|
|
|
# source the site path so we know what features it has.
|
2023-03-06 17:47:45 +00:00
|
|
|
source ../../../defaults.sh
|
2022-10-31 02:24:25 +00:00
|
|
|
source "$SITE_PATH/site_definition"
|
2023-02-01 19:44:05 +00:00
|
|
|
source ../domain_env.sh
|
2022-10-31 02:24:25 +00:00
|
|
|
|
|
|
|
# with the lxd side, we are trying to expose ALL OUR services from one IP address, which terminates
|
|
|
|
# at a cachehing reverse proxy that runs nginx.
|
|
|
|
|
|
|
|
ssh "$PRIMARY_WWW_FQDN" sudo mkdir -p "$REMOTE_HOME/letsencrypt/$DOMAIN_NAME/_logs"
|
|
|
|
|
2022-11-05 23:45:00 +00:00
|
|
|
# this is minimum required; www and btcpay.
|
|
|
|
DOMAIN_STRING="-d $DOMAIN_NAME -d $WWW_FQDN -d $BTCPAY_USER_FQDN"
|
2023-02-01 19:44:05 +00:00
|
|
|
if [ "$DOMAIN_NAME" = "$PRIMARY_DOMAIN" ]; then DOMAIN_STRING="$DOMAIN_STRING -d $CLAMS_FQDN"; fi
|
2022-11-05 23:45:00 +00:00
|
|
|
if [ "$DEPLOY_NEXTCLOUD" = true ]; then DOMAIN_STRING="$DOMAIN_STRING -d $NEXTCLOUD_FQDN"; fi
|
|
|
|
if [ "$DEPLOY_GITEA" = true ]; then DOMAIN_STRING="$DOMAIN_STRING -d $GITEA_FQDN"; fi
|
2023-03-05 16:49:06 +00:00
|
|
|
if [ "$DEPLOY_CLAMS" = true ]; then DOMAIN_STRING="$DOMAIN_STRING -d $CLAMS_FQDN"; fi
|
2023-01-07 14:37:55 +00:00
|
|
|
if [ -n "$NOSTR_ACCOUNT_PUBKEY" ]; then DOMAIN_STRING="$DOMAIN_STRING -d $NOSTR_FQDN"; fi
|
2023-03-05 16:49:06 +00:00
|
|
|
|
2022-11-05 23:45:00 +00:00
|
|
|
|
|
|
|
# if BTCPAY_ALT_NAMES has been set by the admin, iterate over the list
|
|
|
|
# and append the domain names to the certbot request
|
|
|
|
if [ -n "$BTCPAY_ALT_NAMES" ]; then
|
|
|
|
# let's stub out the rest of our site definitions, if any.
|
|
|
|
for ALT_NAME in ${BTCPAY_ALT_NAMES//,/ }; do
|
|
|
|
DOMAIN_STRING="$DOMAIN_STRING -d $ALT_NAME.$DOMAIN_NAME"
|
|
|
|
done
|
|
|
|
fi
|
|
|
|
|
|
|
|
GENERATE_CERT_STRING="docker run -it --rm --name certbot -p 80:80 -p 443:443 -v $REMOTE_HOME/letsencrypt/$DOMAIN_NAME:/etc/letsencrypt -v /var/lib/letsencrypt:/var/lib/letsencrypt -v $REMOTE_HOME/letsencrypt/$DOMAIN_NAME/_logs:/var/log/letsencrypt certbot/certbot certonly -v --noninteractive --agree-tos --key-type ecdsa --standalone --expand ${DOMAIN_STRING} --email $CERTIFICATE_EMAIL_ADDRESS"
|
|
|
|
|
|
|
|
# execute the certbot command that we dynamically generated.
|
|
|
|
eval "$GENERATE_CERT_STRING"
|
2022-10-31 02:24:25 +00:00
|
|
|
done
|