Fix init-letsencrypt script

This commit is contained in:
Weves
2024-02-19 16:22:51 -08:00
committed by Chris Weaver
parent d20d2b0970
commit 9ede8b727d

View File

@ -6,10 +6,20 @@ set -o allexport
source .env.nginx source .env.nginx
set +o allexport set +o allexport
if ! docker compose --version >/dev/null 2>&1; then # Function to determine correct docker compose command
echo 'Error: docker compose is not installed.' >&2 docker_compose_cmd() {
exit 1 if command -v docker-compose >/dev/null 2>&1; then
fi echo "docker-compose"
elif command -v docker compose >/dev/null 2>&1; then
echo "docker compose"
else
echo 'Error: docker-compose or docker compose is not installed.' >&2
exit 1
fi
}
# Assign appropriate Docker Compose command
COMPOSE_CMD=$(docker_compose_cmd)
domains=("$DOMAIN" "www.$DOMAIN") domains=("$DOMAIN" "www.$DOMAIN")
rsa_key_size=4096 rsa_key_size=4096
@ -36,7 +46,7 @@ fi
echo "### Creating dummy certificate for $domains ..." echo "### Creating dummy certificate for $domains ..."
path="/etc/letsencrypt/live/$domains" path="/etc/letsencrypt/live/$domains"
mkdir -p "$data_path/conf/live/$domains" mkdir -p "$data_path/conf/live/$domains"
docker compose -f docker-compose.prod.yml run --name danswer-stack --rm --entrypoint "\ $COMPOSE_CMD -f docker-compose.prod.yml run --name danswer-stack --rm --entrypoint "\
openssl req -x509 -nodes -newkey rsa:$rsa_key_size -days 1\ openssl req -x509 -nodes -newkey rsa:$rsa_key_size -days 1\
-keyout '$path/privkey.pem' \ -keyout '$path/privkey.pem' \
-out '$path/fullchain.pem' \ -out '$path/fullchain.pem' \
@ -45,11 +55,25 @@ echo
echo "### Starting nginx ..." echo "### Starting nginx ..."
docker compose -f docker-compose.prod.yml -p danswer-stack up --force-recreate -d nginx $COMPOSE_CMD -f docker-compose.prod.yml -p danswer-stack up --force-recreate -d nginx
echo echo
echo "Waiting for nginx to be ready, this may take a minute..."
while true; do
# Use curl to send a request and capture the HTTP status code
status_code=$(curl -o /dev/null -s -w "%{http_code}\n" "http://localhost/api/health")
# Check if the status code is 200
if [ "$status_code" -eq 200 ]; then
break # Exit the loop
else
echo "Nginx is not ready yet, retrying in 5 seconds..."
sleep 5 # Sleep for 5 seconds before retrying
fi
done
echo "### Deleting dummy certificate for $domains ..." echo "### Deleting dummy certificate for $domains ..."
docker compose -f docker-compose.prod.yml run --name danswer-stack --rm --entrypoint "\ $COMPOSE_CMD -f docker-compose.prod.yml run --name danswer-stack --rm --entrypoint "\
rm -Rf /etc/letsencrypt/live/$domains && \ rm -Rf /etc/letsencrypt/live/$domains && \
rm -Rf /etc/letsencrypt/archive/$domains && \ rm -Rf /etc/letsencrypt/archive/$domains && \
rm -Rf /etc/letsencrypt/renewal/$domains.conf" certbot rm -Rf /etc/letsencrypt/renewal/$domains.conf" certbot
@ -72,7 +96,7 @@ esac
# Enable staging mode if needed # Enable staging mode if needed
if [ $staging != "0" ]; then staging_arg="--staging"; fi if [ $staging != "0" ]; then staging_arg="--staging"; fi
docker compose -f docker-compose.prod.yml run --name danswer-stack --rm --entrypoint "\ $COMPOSE_CMD -f docker-compose.prod.yml run --name danswer-stack --rm --entrypoint "\
certbot certonly --webroot -w /var/www/certbot \ certbot certonly --webroot -w /var/www/certbot \
$staging_arg \ $staging_arg \
$email_arg \ $email_arg \
@ -83,4 +107,4 @@ docker compose -f docker-compose.prod.yml run --name danswer-stack --rm --entryp
echo echo
echo "### Reloading nginx ..." echo "### Reloading nginx ..."
docker compose -f docker-compose.prod.yml -p danswer-stack up --force-recreate -d nginx $COMPOSE_CMD -f docker-compose.prod.yml -p danswer-stack up --force-recreate -d nginx