Actualización Social

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:

  1. Cambiar a usuario postgres
    sudo su postgres
  2. Hacer un backup de las bases de datos (menos mal que lo hice, esto me ahorró perder más).
    pg_dumball /tmp/backup.sql
  3. Como usuaria con permisos sudo, parar el servicio:
    sudo systemctl stop postgresql.service
  4. 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'
  1. 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
  1. Arrancar el servicio otra vez.
    sudo systemctl start postgresql.service
  2. Como usuario postgres ir a ~ y ejecutar el script que se ha generado:
    ./analyze_new_cluster.sh
  3. 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
1 me gusta