Skip to content

Commit

Permalink
Fix init-letsencrypt script
Browse files Browse the repository at this point in the history
  • Loading branch information
Weves committed Feb 20, 2024
1 parent d20d2b0 commit 9ede8b7
Showing 1 changed file with 33 additions and 9 deletions.
42 changes: 33 additions & 9 deletions deployment/docker_compose/init-letsencrypt.sh
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,20 @@ set -o allexport
source .env.nginx
set +o allexport

if ! docker compose --version >/dev/null 2>&1; then
echo 'Error: docker compose is not installed.' >&2
exit 1
fi
# Function to determine correct docker compose command
docker_compose_cmd() {
if command -v docker-compose >/dev/null 2>&1; then
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")
rsa_key_size=4096
Expand All @@ -36,7 +46,7 @@ fi
echo "### Creating dummy certificate for $domains ..."
path="/etc/letsencrypt/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\
-keyout '$path/privkey.pem' \
-out '$path/fullchain.pem' \
Expand All @@ -45,11 +55,25 @@ echo


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 "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 ..."
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/archive/$domains && \
rm -Rf /etc/letsencrypt/renewal/$domains.conf" certbot
Expand All @@ -72,7 +96,7 @@ esac
# Enable staging mode if needed
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 \
$staging_arg \
$email_arg \
Expand All @@ -83,4 +107,4 @@ docker compose -f docker-compose.prod.yml run --name danswer-stack --rm --entryp
echo

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

0 comments on commit 9ede8b7

Please sign in to comment.