Hola,
He actualizado la versión de mastodon en dos pasos:
v.4.2.10 → v.4.3.0 → v.4.3.2
El paso a la rama 4.3 implicaba bastantes cambios (algunos los veréis porque afectan a la interfaz) y también actualizaban algunas dependencias, que requieren una versión superior.
He seguido la guía de la release.
Preparación de la actualización:
Yarn
He tenido que actualizar yarn de v1.2 a v4. Ha sido un poco complicado porque había una versión general, otra del proyecto y una que se había instalado en un directorio superior. Hasta que no me he dado cuenta de esta última y la he eliminado no me ha funcionado.
Como usuario sudo ir al directorio de mastodon (/home/mastodon/live y ejecutar:
corepack enable
Como usuario mastodon:
corepack prepare
Si no instala o se queda en versión inferior:
corepack up
PostgreSQL to v.12+
También me ha dado quebradero de cabezas, porque estaban instaladas las versiones 10 y 12, pero la base de datos de mastodon_production estaba en la versión 10.
Para migrarla he usado esta respuesta de stakcoverflow, que está muy clara. Básicamente:
- Cambiar a usuario postgres
sudo su postgres
- Hacer un backup de las bases de datos (menos mal que lo hice, esto me ahorró perder más).
pg_dumball /tmp/backup.sql
- Como usuaria con permisos sudo, parar el servicio:
sudo systemctl stop postgresql.service
- Migrar los datos:
/usr/lib/postgresql/12/bin/pg_upgrade \
--old-datadir=/var/lib/postgresql/10/main \
--new-datadir=/var/lib/postgresql/12/main \
--old-bindir=/usr/lib/postgresql/10/bin \
--new-bindir=/usr/lib/postgresql/12/bin \
--old-options '-c config_file=/etc/postgresql/10/main/postgresql.conf' \
--new-options '-c config_file=/etc/postgresql/12/main/postgresql.conf'
- Como usario sudo cambiar los puertos de cada versión:
#change port to 5432
sudo vim /etc/postgresql/12/main/postgresql.conf
#change port to 5433
sudo vim /etc/postgresql/10/main/postgresql.conf
- Arrancar el servicio otra vez.
sudo systemctl start postgresql.service
- Como usuario postgres ir a ~ y ejecutar el script que se ha generado:
./analyze_new_cluster.sh
- Para evitar conflictos, eliminar la versión 10:
#uninstalls postgres packages
sudo apt-get remove postgresql-10
#removes the old postgresql directory
sudo rm -rf /etc/postgresql/10/
#login as postgres user
sudo su postgres
#delete the old cluster data
./delete_old_cluster.sh
En pasos posteriores se me corrompió la base de datos (tuve que interrumpir una migración que lo provocó) así que tuve que restaurar del backup. Primero eliminé la database.
sudo -u postgres sql
DROP DATABASE mastodon_production;
Y luego, como usuaria postgres:
psql -f /tmp/backup.sql postgres
Configuraci’on de Active Record encryption secrets
Esto fue sencillo siguiendo la documentación:
sudo su -- mastodon
export PATH="$HOME/.rbenv/bin:$PATH"
cd ~/live
RAILS_ENV=production bin/rails db:encryption:init
Y añadir lo que te devuelve al fichero .env.production
:
# Encryption secrets
# ------------------
# Must be available (and set to same values) for all server processes
# These are private/secret values, do not share outside hosting environment
# Use `bin/rails db:encryption:init` to generate fresh secrets
# Do not change these secrets once in use, as this would cause data loss and other issues
# ------------------
ACTIVE_RECORD_ENCRYPTION_DETERMINISTIC_KEY= XXXXXXXXXXXXXXXXX
ACTIVE_RECORD_ENCRYPTION_KEY_DERIVATION_SALT=XXXXXXXXXXXXXXXX
ACTIVE_RECORD_ENCRYPTION_PRIMARY_KEY=XXXXXXXXXXXXXXXXXXXXXXXX
A partir de ahí, ya seguí los pasos requeridos para hacer la actualización (versión non-Docker).
Versión 4.3.2
Esta actualización fue mucho más sencilla. Siguiendo los pasos de la release:
sudo su mastodon
cd ~/live
git fetch && git checkout v4.3.2
bundle install
yarn install --immutable
RAILS_ENV=production bundle exec rails assets:precompile
exit
sudo systemctl restart mastodon-sidekiq.service
sudo systemctl restart mastodon-web.service