2022-05-23 20:15:57 +02:00
#!/usr/bin/env bash
2022-01-27 17:45:17 +01:00
set -e
2022-05-23 20:15:57 +02:00
2022-01-27 17:45:17 +01:00
echo "Upgrading PostHog. This will cause a few minutes of downtime."
read -r -p "Do you want to upgarde PostHog? [y/N] " response
if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]
then
echo "OK!"
else
exit
fi
2022-10-11 20:55:36 +02:00
echo "Checking for named postgres and clickhouse volumes to avoid data loss when upgrading from < 1.39"
if docker volume ls | grep -Pzoq 'clickhouse-data\n(.|\n)*postgres-data\n'
2022-08-12 16:31:24 +02:00
then
2022-10-11 20:55:36 +02:00
DOCKER_VOLUMES_MISSING=FALSE
echo "Found postgres and clickhouse volumes, proceeding..."
2022-08-12 16:31:24 +02:00
else
2022-10-11 20:55:36 +02:00
DOCKER_VOLUMES_MISSING=TRUE
echo ""
echo ""
echo "🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨"
echo "🚨🚨🚨🚨🚨 WARNING: POTENTIAL DATA LOSS 🚨🚨🚨🚨🚨🚨"
echo "🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨"
echo ""
echo ""
echo "We were unable to find named clickhouse and postgres volumes."
echo "If you created your PostHog stack PRIOR TO August 12th, 2022 / v1.39.0, the Postgres and Clickhouse containers did NOT have persistent named volumes by default."
echo "If you choose to upgrade, you 💣 will likely lose data 💣 contained in these anonymous volumes."
echo ""
echo "See the discussion here for more information: https://github.com/PostHog/posthog/pull/11256"
echo ""
echo "WE STRONGLY RECOMMEND YOU:"
echo ""
echo "🛑 Stop this script and do not proceed"
echo "✅ Back up your entire environment/installation (vm, host, etc.), including all docker containers and volumes:"
echo "✅ Specifically back up the contents of :"
echo " ☑ /var/lib/postgresql/data in the postgres (*_db_1) container"
echo " ☑ /var/lib/clickhouse in the clickhouse (*_clickhouse_1) container"
2023-05-09 18:31:34 +02:00
echo "and be ready to check/recopy the data before you boot PostHog next."
2022-10-11 20:55:36 +02:00
read -r -p "Do you want to proceed anyway? [y/N] " response
if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]
then
echo "OK!"
else
exit
fi
2022-08-12 16:31:24 +02:00
fi
2022-03-07 23:44:24 +01:00
[[ -f ".env" ]] && export $(cat .env | xargs) || ( echo "No .env file found. Please create it with POSTHOG_SECRET and DOMAIN set." && exit 1)
2022-05-23 20:15:57 +02:00
export POSTHOG_APP_TAG="${POSTHOG_APP_TAG:-latest-release}"
2022-01-27 17:45:17 +01:00
cd posthog
git pull
cd ../
2022-12-08 04:21:49 +01:00
# Upgrade Docker Compose to version 2.13.0
echo "Setting up Docker Compose"
sudo rm /usr/local/bin/docker-compose
sudo curl -L "https://github.com/docker/compose/releases/download/v2.13.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose || true
sudo chmod +x /usr/local/bin/docker-compose
2022-01-27 17:45:17 +01:00
rm -f docker-compose.yml
2022-12-08 03:45:23 +01:00
cp posthog/docker-compose.base.yml docker-compose.base.yml
2022-01-27 17:45:17 +01:00
cp posthog/docker-compose.hobby.yml docker-compose.yml.tmpl
envsubst < docker-compose.yml.tmpl > docker-compose.yml
rm docker-compose.yml.tmpl
docker-compose pull
2022-03-09 14:42:15 +01:00
echo "Checking if async migrations are up to date"
sudo -E docker-compose run asyncmigrationscheck
echo "Stopping the stack!"
docker-compose stop
2022-10-06 18:25:57 +02:00
# rewrite entrypoint
# TODO: this is duplicated from bin/deploy-hobby. We should refactor this into a
# single script.
cat > compose/start <<EOF
#!/bin/bash
/compose/wait
./bin/migrate
./bin/docker-server
EOF
2022-08-12 16:31:24 +02:00
2022-10-11 20:55:36 +02:00
if [ ${DOCKER_VOLUMES_MISSING} == 'TRUE' ];
then
echo ""
echo ""
echo "🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨"
echo "🚨🚨🚨🚨🚨WARNING: LAST CHANCE TO AVOID DATA LOSS 🚨🚨🚨🚨🚨🚨"
echo "🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨🚨"
echo ""
echo ""
echo "Before we restart the stack, you should restore data you have backed up from the previous warning."
echo ""
echo ""
fi
2022-08-12 16:31:24 +02:00
2023-05-09 18:31:34 +02:00
read -r -p "Do you want to restart the PostHog stack now ? (docker-compose up) [y/N] " response
2022-08-12 16:31:24 +02:00
if [[ "$response" =~ ^([yY][eE][sS]|[yY])+$ ]]
then
echo "OK, Restarting the stack!"
sudo -E docker-compose up -d
else
echo "OK, we are leaving the stack OFFLINE. Run 'sudo -E docker-compose up -d' when you are ready to start it."
exit
fi
2022-01-27 17:45:17 +01:00
2022-03-07 23:44:24 +01:00
echo "PostHog upgraded successfully!"