2023-04-23 10:04:53 +02:00
|
|
|
#!/bin/bash
|
|
|
|
|
|
|
|
set -e
|
|
|
|
|
|
|
|
# shellcheck disable=SC1091
|
|
|
|
. /etc/weblate-bootstrap
|
|
|
|
|
|
|
|
# Set path to include script directory
|
|
|
|
PATH="$(dirname "$(readlink -f "$0")"):$PATH"
|
|
|
|
export PATH
|
|
|
|
|
2023-04-23 13:41:34 +02:00
|
|
|
# Use same variables as in other scripts even though these are not configurable here
|
2023-04-23 10:04:53 +02:00
|
|
|
WEBLATE_USERNAME=weblate
|
|
|
|
USERNAME=weblate
|
|
|
|
WEBLATE_HOME=$(getent passwd "$USERNAME" | cut -d: -f 6)
|
|
|
|
WEBLATE_ENV="$WEBLATE_HOME/weblate-env"
|
2023-04-23 13:41:34 +02:00
|
|
|
WEBLATE_DOCKER="$WEBLATE_HOME/weblate"
|
2023-04-23 10:04:53 +02:00
|
|
|
|
2023-04-23 10:21:21 +02:00
|
|
|
# Install docker
|
|
|
|
install-docker
|
|
|
|
|
2023-04-23 10:04:53 +02:00
|
|
|
# Stop services, wait for empty queue
|
|
|
|
systemctl stop uwsgi
|
2025-04-08 11:35:17 +02:00
|
|
|
while sudo -u "$WEBLATE_USERNAME" "$WEBLATE_ENV/bin/weblate" celery_queues | grep ': [^0]'; do
|
2025-07-16 15:11:55 +02:00
|
|
|
sleep 1
|
2023-04-23 10:04:53 +02:00
|
|
|
done
|
|
|
|
systemctl stop celery-weblate
|
2023-05-15 08:58:00 +02:00
|
|
|
systemctl disable celery-weblate
|
2023-04-23 10:04:53 +02:00
|
|
|
systemctl stop redis
|
|
|
|
|
|
|
|
# Prepare Docker environment
|
2023-04-24 12:40:33 +02:00
|
|
|
install-weblate-docker "$@" --migrate
|
2023-04-23 10:04:53 +02:00
|
|
|
|
|
|
|
# Dump PostgreSQL and load it to Docker
|
|
|
|
# shellcheck disable=SC2024
|
2025-07-16 15:11:55 +02:00
|
|
|
sudo -u "postgres" pg_dump --no-privileges --no-owner --clean --if-exists weblate > "$WEBLATE_HOME/weblate.sql"
|
2023-04-23 14:05:49 +02:00
|
|
|
systemctl stop postgresql
|
2023-04-23 13:41:34 +02:00
|
|
|
|
|
|
|
cd "$WEBLATE_DOCKER"
|
2023-04-23 10:04:53 +02:00
|
|
|
docker compose up -d database --wait
|
2023-04-23 17:06:20 +02:00
|
|
|
sleep 60
|
2025-07-16 15:11:55 +02:00
|
|
|
docker compose exec -T database psql --username weblate --dbname weblate < "$WEBLATE_HOME/weblate.sql"
|
2023-04-23 10:04:53 +02:00
|
|
|
|
|
|
|
# Move redis data
|
|
|
|
cp /var/lib/redis/dump.rdb "$WEBLATE_HOME/redis"
|
2023-04-23 19:28:15 +02:00
|
|
|
chown -R 999:1000 "$WEBLATE_HOME/redis"
|
2023-04-23 10:04:53 +02:00
|
|
|
|
|
|
|
# Filesystem data is already in correct place
|
2023-04-23 19:28:15 +02:00
|
|
|
chown -R 1000:1000 "$WEBLATE_HOME/data"
|
2023-04-23 10:04:53 +02:00
|
|
|
|
|
|
|
# Cleanup system packages
|
2023-04-29 09:29:26 +02:00
|
|
|
apt-get purge -y \
|
2025-07-16 15:11:55 +02:00
|
|
|
redis-server \
|
|
|
|
uwsgi \
|
|
|
|
postgresql
|
2023-04-23 10:04:53 +02:00
|
|
|
|
|
|
|
# Start Weblate
|
2023-04-23 19:28:25 +02:00
|
|
|
sudo -u weblate docker compose up -d --wait
|
2023-04-23 10:04:53 +02:00
|
|
|
|
|
|
|
# Show logs
|
|
|
|
sudo -u weblate docker compose logs
|
|
|
|
|
|
|
|
# Track deploy to Sentry
|
2025-04-08 11:35:17 +02:00
|
|
|
if [ -n "$WEBLATE_SENTRY_TOKEN" ]; then
|
2025-07-16 15:11:55 +02:00
|
|
|
sudo -u weblate docker compose exec --user weblate weblate weblate sentry_deploy
|
2023-04-23 10:04:53 +02:00
|
|
|
fi
|
|
|
|
|
|
|
|
# Check
|
|
|
|
sudo -u weblate docker compose exec --user weblate weblate weblate check --deploy
|