From febe3d23a618847c40d1baca8a12b296c64740fa Mon Sep 17 00:00:00 2001 From: Luke Berndt Date: Sat, 3 Feb 2024 10:53:46 -0500 Subject: [PATCH] cerbot compose --- certbot-compose.yml | 38 +++++++++++++++++++++++++++ init-letsencrypt.sh | 2 +- nginx-proxy/cert/vhosts/site.template | 10 +++++++ 3 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 certbot-compose.yml create mode 100644 nginx-proxy/cert/vhosts/site.template diff --git a/certbot-compose.yml b/certbot-compose.yml new file mode 100644 index 0000000..9909bd1 --- /dev/null +++ b/certbot-compose.yml @@ -0,0 +1,38 @@ +version: "3" +services: + nginx: + build: + context: ./nginx-proxy + args: + STAGE: "cert" + environment: + - DOMAIN_NAME + image: "nginx:${TAG}-cert" + networks: + - proxy + ports: + - "80:80" + restart: always + volumes: + - ${PWD}/data/log/syslog:/var/log/syslog + - ${PWD}/data/log/nginx:/var/log/nginx + - ${PWD}/data/certbot/www/:/var/www/certbot/:ro + - ${PWD}/data/certbot/conf/:/etc/letsencrypt/:ro + command: /bin/bash -c "envsubst '$$DOMAIN_NAME' < /etc/nginx/conf.d/site.template > /etc/nginx/conf.d/default.conf && while :; do sleep 6h & wait $${!}; nginx -s reload; done & nginx -g 'daemon off;'" + + certbot: + image: certbot/certbot:latest + volumes: + - ${PWD}/data/certbot/www/:/var/www/certbot/:rw + - ${PWD}/data/certbot/conf/:/etc/letsencrypt/:rw + entrypoint: "certbot certonly --webroot -w /var/www/certbot \ + --staging \ + --email ${REACT_APP_ADMIN_EMAIL} \ + -d ${DOMAIN_NAME} -d www.${DOMAIN_NAME} -d api.${DOMAIN_NAME} -d admin.${DOMAIN_NAME}\ + --rsa-key-size $rsa_key_size \ + --agree-tos \ + --force-renewal" + +networks: + proxy: + node: diff --git a/init-letsencrypt.sh b/init-letsencrypt.sh index 2e57c4e..cc05238 100755 --- a/init-letsencrypt.sh +++ b/init-letsencrypt.sh @@ -82,7 +82,7 @@ esac # Enable staging mode if needed if [ $staging != "0" ]; then staging_arg="--staging"; fi -docker compose -f docker-compose.yml -f test-compose.yml run --rm --entrypoint "\ +docker compose -f certbot-compose.yml run --rm --entrypoint "\ certbot certonly --webroot -w /var/www/certbot \ $staging_arg \ $email_arg \ diff --git a/nginx-proxy/cert/vhosts/site.template b/nginx-proxy/cert/vhosts/site.template new file mode 100644 index 0000000..68cfc86 --- /dev/null +++ b/nginx-proxy/cert/vhosts/site.template @@ -0,0 +1,10 @@ +server { + listen 80; + server_name account.${DOMAIN_NAME} api.${DOMAIN_NAME} admin.${DOMAIN_NAME} www.${DOMAIN_NAME} ${DOMAIN_NAME}; + + location /.well-known/acme-challenge/ { + root /var/www/certbot; + } + + return 404 +} \ No newline at end of file