Actualització de Lemmy 0.18.2 a Lemmy 0.18.5

Aquí publicaré les etapes seguides per actualitzar lemmy.cat de la versió 0.18.2 a la versió 0.19.4, els errors trobats i com solucionar-los.

Instal·lació 0.18.2

  1. Instal·lació de Lemmy 0.18.2 en una nova màquina seguint les instruccions de la documentació oficial: lemmy-docs/src/administration/from_scratch.md at d254233345a235f9f705c98ae92818f45574f48d · LemmyNet/lemmy-docs · GitHub
  2. Instal·lació de Lemmy-UI 0.18.2 seguint les instruccions de la documentació oficial: lemmy-docs/src/administration/from_scratch.md at d254233345a235f9f705c98ae92818f45574f48d · LemmyNet/lemmy-docs · GitHub. He hagut d’executar les següents ordres perquè la compilació funcionés:
    sudo apt-get update
    sudo apt-get install -y libglib2.0-dev libvips-dev build-essential gcc g++ make python3
    
    També he utilitzat el fitxer nginx corresponent a la versió 0.18.5 i no el de la 0.18.2: lemmy-docs/src/administration/from_scratch.md at a86bd1a50d168b26fe0e5617c58bb50324404899 · LemmyNet/lemmy-docs · GitHub

Restauració 0.18.2

  1. Restauració de la base de dades amb psql lemmy < /tmp/db.sql i dels fitxers de configuració, nginx i systemd.
    Això s’ha de fer abans de posar en marxa el servei “lemmy”, en el cas d’haver-ho fet, s’ha de netejar la base de dades postgresql abans de restaurar la còpia de seguretat.

0.18.2 → 0.18.3

Lemmy

  1. Actualització seguint les instruccions oficials per la versió 0.18.5 (amb checkout a 0.18.3): lemmy-docs/src/administration/from_scratch.md at a86bd1a50d168b26fe0e5617c58bb50324404899 · LemmyNet/lemmy-docs · GitHub
  2. He agut de crear nous directoris:
    sudo mkdir /opt/lemmy
    sudo mkdir /opt/lemmy/lemmy-server
    sudo mkdir /opt/lemmy/pictrs
    sudo mkdir /opt/lemmy/pictrs/files
    sudo mkdir /opt/lemmy/pictrs/sled-repo
    sudo mkdir /opt/lemmy/pictrs/old
    sudo chown -R lemmy:lemmy /opt/lemmy
    
  3. Moure el fitxer lemmy.hjson: sudo cp /etc/lemmy/lemmy.hjson /opt/lemmy/lemmy-server/
  4. I també actualitzar el fitxer /etc/systemd/system/lemmy.service amb els nous directoris on es troba l’executable de lemmy_server i el fitxer de configuració.

Lemmy-UI

  1. Reinstal·lat lemmy-ui seguint la documentació oficial per la versió 0.18.5 (amb checkout a 0.18.3) i yarn com la 0.18.2: lemmy-docs/src/administration/from_scratch.md at a86bd1a50d168b26fe0e5617c58bb50324404899 · LemmyNet/lemmy-docs · GitHub
    cd /opt/lemmy
    sudo -u lemmy bash
    git clone https://github.com/LemmyNet/lemmy-ui.git --recursive
    cd lemmy-ui
    git checkout 0.18.3
    yarn install --pure-lockfile
    yarn build:prod
    exit
    
  2. Actualització de /etc/systemd/system/lemmy-ui.service amb els nous directoris

0.18.3 → 0.18.4

Lemmy

  1. Actualització seguint les instruccions oficials per la versió 0.18.5 (amb checkout a 0.18.4): lemmy-docs/src/administration/from_scratch.md at a86bd1a50d168b26fe0e5617c58bb50324404899 · LemmyNet/lemmy-docs · GitHub

Lemmy-UI

  1. Actualització seguint la documentació oficial per la versió 0.18.5 (amb checkout a 0.18.4) i yarn com la 0.18.3: lemmy-docs/src/administration/from_scratch.md at a86bd1a50d168b26fe0e5617c58bb50324404899 · LemmyNet/lemmy-docs · GitHub
    cd /opt/lemmy/lemmy-ui
    sudo -u lemmy bash
    git checkout main
    git pull --tags
    git checkout 0.18.4
    git submodule update
    yarn install --pure-lockfile
    yarn build:prod
    exit
    sudo systemctl restart lemmy-ui
    
  2. He tingut problemes en executar yarn install, verificar que tenia totes les dependències:
    sudo apt-get update
    sudo apt-get install -y libglib2.0-dev libvips-dev build-essential gcc g++ make python3
    
    I executar yarn add sharp abans de yarn install --pure-lockfile ha solucionat el problema en el meu cas.

0.18.4 → 0.18.5

Lemmy

  1. Actualització seguint les instruccions oficials per la versió 0.18.5: lemmy-docs/src/administration/from_scratch.md at a86bd1a50d168b26fe0e5617c58bb50324404899 · LemmyNet/lemmy-docs · GitHub

Lemmy-UI

  1. Actualització seguint la documentació oficial per la versió 0.18.5 i yarn com la 0.18.4: lemmy-docs/src/administration/from_scratch.md at a86bd1a50d168b26fe0e5617c58bb50324404899 · LemmyNet/lemmy-docs · GitHub
    cd /opt/lemmy/lemmy-ui
    sudo -u lemmy bash
    git checkout main
    git pull --tags
    git checkout 0.18.5
    git submodule update
    yarn install --pure-lockfile
    yarn build:prod
    exit
    sudo systemctl restart lemmy-ui
    
  2. He tingut problemes en executar yarn install una vegada més, verificar que tenia totes les dependències:
    sudo apt-get update
    sudo apt-get install -y libglib2.0-dev libvips-dev build-essential gcc g++ make python3
    
    Afegir les variables d’entorn dins del meu ~/.bashrc i source ~/.bashrc per aplicar el perfil:
    export SHARP_IGNORE_GLOBAL_LIBVIPS=true
    export SHARP_DIST_BASE_URL=https://github.com/lovell/sharp-libvips/releases/download/v8.14.3/
    
    I executar yarn add sharp --ignore-engines abans de yarn install --pure-lockfile ha solucionat el problema en el meu cas.
2 'M'agrada'

Moltes gràcies per documentar-ho!! :heart_eyes::heart_eyes:

0.18.5 → 0.19.0

Lemmy

  1. Actualització seguint les instruccions oficials per la versió 0.18.5 però amb un checkout a la versió 0.19.0: lemmy-docs/src/administration/from_scratch.md at a86bd1a50d168b26fe0e5617c58bb50324404899 · LemmyNet/lemmy-docs · GitHub

Lemmy-UI

  1. Actualització seguint la documentació oficial per la versió 0.18.5 i yarn: lemmy-docs/src/administration/from_scratch.md at a86bd1a50d168b26fe0e5617c58bb50324404899 · LemmyNet/lemmy-docs · GitHub

    cd /opt/lemmy/lemmy-ui
    sudo -u lemmy bash
    git checkout main
    git pull --tags
    git checkout 0.19.0
    git submodule update
    yarn install --pure-lockfile
    yarn build:prod
    exit
    sudo systemctl restart lemmy-ui
    
  2. He tingut problemes en executar yarn install, verificar que tenia totes les dependències:

    sudo apt-get update
    sudo apt-get install -y libglib2.0-dev libvips-dev build-essential gcc g++ make python3
    

    Afegir les variables d’entorn dins del meu ~/.bashrc i source ~/.bashrc per aplicar el perfil:

    export SHARP_IGNORE_GLOBAL_LIBVIPS=true
    export SHARP_DIST_BASE_URL=https://github.com/lovell/sharp-libvips/releases/download/v8.14.5/
    

    I executar yarn add sharp --ignore-engines abans de yarn install --pure-lockfile ha solucionat el problema en el meu cas.

2 'M'agrada'

0.19.0 → 0.19.1

Lemmy

  1. Actualització seguint les instruccions oficials per la versió 0.18.5 però amb un checkout a la versió 0.19.1: lemmy-docs/src/administration/from_scratch.md at a86bd1a50d168b26fe0e5617c58bb50324404899 · LemmyNet/lemmy-docs · GitHub

Lemmy-UI

  1. Actualització seguint la documentació oficial per la versió 0.18.5 i yarn: lemmy-docs/src/administration/from_scratch.md at a86bd1a50d168b26fe0e5617c58bb50324404899 · LemmyNet/lemmy-docs · GitHub
cd /opt/lemmy/lemmy-ui
sudo -u lemmy bash
git checkout main
git pull --tags
git checkout 0.19.1
git submodule update
yarn install --pure-lockfile
yarn build:prod
exit
sudo systemctl restart lemmy-ui
  • He tingut problemes en executar yarn install, verificar que tenia totes les dependències:
sudo apt-get update
sudo apt-get install -y libglib2.0-dev libvips-dev build-essential gcc g++ make python3

Afegir les variables d’entorn dins del meu ~/.bashrc i source ~/.bashrc per aplicar el perfil:

export SHARP_IGNORE_GLOBAL_LIBVIPS=true
export SHARP_DIST_BASE_URL=https://github.com/lovell/sharp-libvips/releases/download/v8.14.5/

I executar yarn add sharp --ignore-engines abans de yarn install --pure-lockfile ha solucionat el problema en el meu cas.
[/quote]

0.19.1 → 0.19.2

Lemmy

  1. Actualització seguint les instruccions oficials per la versió 0.18.5 però amb un checkout a la versió 0.19.2: lemmy-docs/src/administration/from_scratch.md at a86bd1a50d168b26fe0e5617c58bb50324404899 · LemmyNet/lemmy-docs · GitHub

Lemmy-UI

  1. Actualització seguint la documentació oficial per la versió 0.18.5 i yarn: lemmy-docs/src/administration/from_scratch.md at a86bd1a50d168b26fe0e5617c58bb50324404899 · LemmyNet/lemmy-docs · GitHub
cd /opt/lemmy/lemmy-ui
sudo -u lemmy bash
git checkout main
git pull --tags
git checkout 0.19.2
git submodule update
yarn install --pure-lockfile
yarn build:prod
exit
sudo systemctl restart lemmy-ui
  • He tingut problemes en executar yarn install, verificar que tenia totes les dependències:
sudo apt-get update
sudo apt-get install -y libglib2.0-dev libvips-dev build-essential gcc g++ make python3

Afegir les variables d’entorn dins del meu ~/.bashrc i source ~/.bashrc per aplicar el perfil:

export SHARP_IGNORE_GLOBAL_LIBVIPS=true
export SHARP_DIST_BASE_URL=https://github.com/lovell/sharp-libvips/releases/download/v8.14.5/

I executar yarn add sharp --ignore-engines abans de yarn install --pure-lockfile ha solucionat el problema en el meu cas.

0.19.2 → 0.19.3

Lemmy

  1. Actualització seguint les instruccions oficials per la versió 0.18.5 però amb un checkout a la versió 0.19.3: lemmy-docs/src/administration/from_scratch.md at a86bd1a50d168b26fe0e5617c58bb50324404899 · LemmyNet/lemmy-docs · GitHub

Lemmy-UI

  1. Actualització seguint la documentació oficial per la versió 0.18.5 i yarn: lemmy-docs/src/administration/from_scratch.md at a86bd1a50d168b26fe0e5617c58bb50324404899 · LemmyNet/lemmy-docs · GitHub
cd /opt/lemmy/lemmy-ui
sudo -u lemmy bash
git checkout main
git pull --tags
git checkout 0.19.3
git submodule update
yarn install --pure-lockfile
yarn build:prod
exit
sudo systemctl restart lemmy-ui
  • He tingut problemes en executar yarn install, verificar que tenia totes les dependències:
sudo apt-get update
sudo apt-get install -y libglib2.0-dev libvips-dev build-essential gcc g++ make python3

Afegir les variables d’entorn dins del meu ~/.bashrc i source ~/.bashrc per aplicar el perfil:

export SHARP_IGNORE_GLOBAL_LIBVIPS=true
export SHARP_DIST_BASE_URL=https://github.com/lovell/sharp-libvips/releases/download/v8.14.5/

I executar yarn add sharp --ignore-engines abans de yarn install --pure-lockfile ha solucionat el problema en el meu cas.

2 'M'agrada'

Em posaré ara a actualitzar info.prou.be i si me’n surto, passaré a collapse.cat , que li dec a @arbocenc fa molt temps! /cc @retiolus

Si algú s’hi anima, acabo d’entrar a una sala de jitsi compartint la terminal https://meet.guifi.net/lemmyssadediumenge Pot ser que vagi anant i venint durant tota la tarda-vespre. Aviseu-me si entreu!

Disculpeu per avisar sense antelació, no és una tasca que estigui prioritzant a la meva vida i li acabo de trobar aquest forat <3

2 'M'agrada'

Actualització de info.prou.be de la 0.18.5 a la 0.19.2

Resum

  • m’ha costat molt més del que esperava
  • a la docu de lemmy li falten moltes referències creuades i actualitzades
  • hi ha indicacións contradictòries (passwd de postgres): ho recomanem, però no expliquem com fer-ho.
  • l’actualització de versió de postgres automàtica no és de fiar. Millor fer-ho manualment de forma controlada.
  • l’actualització de pictrs a 0.5.0 demana canvis en noms de variables i connectar a la db.

Apunts

ordre cronològic invers

  • 00:30 - Després de provar algunes coses, veig que funciona. Bé, he pujat algunes versions a info.prou.be i he evitat un desastre. No he pogut actualitzar collapse.cat, que era un objectiu important, però he descobert (una mica tard) la guia per actualitzar de forma segura, que segur que em servirà per actualitzar collapse.cat sense córrer tants riscos.

  • 00:20 - He esborrat la db. He tirat enrere els canvis de versió: de postgres a 15 altre cop, de lemmy i lemmy-ui fins a la 0.19.2 (en comptes de 0.19.0 però vaja), i de pictrs fins a 0.4.7 (l’última de 0.4.x). Tant la 0.19.3 de lemmy* com la 0.5.x de pictrs requereixen més atenció, i ja no en tinc. Després d’arrencar, he hagut de fer drop database i create database pq lemmy ja m’havia inicialitzat algunes coses i el restore del backup no em funcionava. He aconseguit fer el restore: cat backup-2024-07-28/pgdump-2024-07-28.sql | sudo docker exec -u postgres -i infoproube_postgres_1 psql -U lemmy.

  • 00:00 - la mort. L’actualització ha fallat perquè demanava autenticació per contrasenya (o per una altra cosa) i s’ha quedat tot potes enlaire.

  • 22:53 - He provat a la brava i ha fallat. Les instruccions per actualitzar el postgres estaven amagades. Ara sí que he trobat les instruccions per canviar de versions… [lemmy-ansible/UPGRADING.md at main · LemmyNet/lemmy-ansible · GitHub]. Estan al respositori d’ansible i no a qualsevol altre ni a la docu (!!). Em reenganxo a aquesta docu doncs. Donen un script per actualitzar pg de 15 a 16

  • 22:47 - Del docker-compose només canvien les versions de les imatges i l’opció de restart: unless-stopped. A l’arxiu oficial també treuen la capcelera amb la versió.

  • 22:35 - Es va quedar a a la 19.3. Bé, fem un backup de la db i a provar!

  • 22:26 - Tot bé ara. Provem d’actualitzar a 0.19.5 …? Sembla que de la 0.19.3 a la .4 pugen la versió de postgres de la 15 a la 16. A veure què en deia retolious d’això…

  • 22:25. Sí, havia duplicat la clau ports al docker-compose.yml a l’hora de fusionar-lo amb l’oficial. Aix!

  • 22:15 - Atrapat una mica perquè he pogut arrencar, però les peticions al backend des del navegador fallen, donen 502. El front funciona, el back no. Serà el port?

  • 20:48 - Estic tenint problemes per carregar el backup a través de docker… primer que no era docker exec -ti sinó -i. Després que no li puc passar la contrasenya… Miro de configurar la peer authentication. Fet! He d’editar l’arxiu pg_hba.conf: sudo vim volumes/postgres/pg_hba.conf. Comentem la línia:

# Desactivem l'autenticació per contrasenya. Farem peer auth.
#local   lemmy           lemmy                                   scram-sha-25

Editem també el lemmy.hjson per reflectir-ho… Tornem a activar l’autenticació per contrasenya un cop carregat el dump. Sembla que lemmy accedeix a postgres per xarxa i per tant no serveix la peer authentication.

  • 20:40 - Ara es queixa que no hi ha la taula que hem esborrat (!). Abans perquè no la podia esborrar, en fi. lemmy_1 | 2024-07-28T18:38:20.887253Z WARN lemmy_server::root_span_builder: Unknown: Failed to construct site response: Unknown: relation "site_language" does not exist. Carregaré el backup i tornaré a arrencar, a veure què li passa.

  • 20:35 - Aixeco amb sudo docker-compose up -d && sudo docker-compose logs --tail 200 -f.
    Error de permisos en arrencar: lemmy_1 | thread 'main' panicked at 'Failed to load settings file, see documentation (https://join-lemmy.org/docs/en/administration/configuration.html): LemmyError { message: Unknown("Permission denied (os error 13)"), inner: Permission denied (os error 13).
    Mato amb sudo docker-compose stop.
    Si li dono permís de lectura a tothom funciona. Ho he de protegir.

  • 20:25 - He descarregat el codi font. Github no permet cercar dins el repositori… Sembla que la migració que fa INSERT dins de site_language és migrations/2022-09-08-102358_site-and-community-languages/up.sql. Inspeccionant, sembla que fa un DROP TABLE site_language i que la torna a crear. Sembla segur esborrar la taula doncs. En faig un backup abans, a veure. sudo docker exec -ti infoproube_postgres_1 pg_dump -U lemmy lemmy --table site_language | sudo tee backup-2024-07-28/pgdump-$(date +%F)-site_language.sql. Després, sudo docker exec -ti infoproube_postgres_1 psql -U lemmy -c "drop table site_language".

  • 20:04 - Tornem-hi. A veure d’on surten aquestes “migracions” de db. A part de l’error de la id=48, també falla amb la 13688. És “Lemmy NSFW | https://lemmynsfw.com/”. No sembla la instància central oficial com perquè l’estiguin afegint a mà…

  • pausa

  • 19:46 - Em fico al contenidor de postgres per debuggar:

sudo docker-compose start postgres
sudo docker exec -ti infoproube_postgres_1 psql

Sembla que és una relació entre nodes de lemmy coneguts i llengües suportades. En el nostre cas, la id 48 és slrpnk.net i 0 és Undetermined:

lemmy=#  select * from language where id = 1;
 id | code |     name     
----+------+--------------
  0 | und  | Undetermined
(1 row)

lemmy=# select id,name,actor_id from site where id = 48;
 id |  name  |      actor_id       
----+--------+---------------------
 48 | SLRPNK | https://slrpnk.net/
(1 row)
  • 19:35 - Info.prou.be no arrenca. Error de DB:
STATEMENT:  INSERT INTO "site_language" ("site_id", "language_id") VALUES ($1, $2) RETURNING "site_language"."id", "site_language"."site_id", "site_language"."language_id"
ERROR:  duplicate key value violates unique constraint "site_language_site_id_language_id_key" 
DETAIL:  Key (site_id, language_id)=(48, 0) already exists.

Error de postfix:

A786A1105EF: from=<>, size=4517, nrcpt=1 (queue active)
 connect to info.prou.be[193.182.16.135]:25: Connection refused
 A786A1105EF: to=<noreply@info.prou.be>, relay=none, delay=428897, delays=428897/0.04/0.02/0, dsn=4.4.1, status=deferred (connect to info.prou.be[193.182.16.135]:25: Connection refused)

  • 19:35 - Collapse.cat està aixecada altre cop, però en tenim backups recents ara :slight_smile:

  • 19:30 - Sembla que triga en arrencar (?). Aturo un moment collapse.cat per fer-ne backup (configs i volums): sudo docker-compose stop && sudo tar -czf pictrs.tgz volumes/pictrs/ backup-2024-07-28/ && sudo tar -czf backup-2024-07-28/postgres.tgz volumes/postgres/ && tar -czf backup-2024-07-28/lemmy-ui.tgz volumes/lemmy-ui/ ; sudo docker-compose up -d

  • 19:24 - Intento arrencar… sudo docker-compose up -d && sudo docker-compose logs --tail 200 -f lemmy. Es queda descarregant els contenidors nous una estona (lemmy i lemmy-ui).

  • 19:05 - el mateix amb el lemmy.hjson de [Configuration]

  • 18:45 - aplicant canvis del docker-compose amb vimdiff:

wget https://raw.githubusercontent.com/LemmyNet/lemmy/0.19.0/docker/docker-compose.yml -O docker-compose-0.19.0.yml
vimdiff docker-compose-0.19.0.yml docker-compose.yml
  • 18:30 - Amb el servei apagat
sudo docker-compose stop` he fet els tars en una carpeta: `user@server:~/backup-2024-07-28$ tar -czf pictrs.tgz  ../volumes/pictrs/ && tar -czf postgres.tgz ../volumes/postgres/ && tar -czf lemmy-ui.tgz ../volumes/lemmy-ui/ && cp ../docker-compose.yml .
  • 18:00 - Berenar! Decideixo fer uns tars dels volums i del docker-compose.yml

  • (pausa)

  • 17:30 - També caldrà revisar la config de la versió, lemmy.hjson. Això no trobo el default per a cada versió, merda. El repo de git apunta a la config a la documentació Però amb una mica de sort, és la config per a l’última versió. On són les configs per la resta de versions? El codi font de la documentació inclou un arxiu de config que no sé d’on el treu :blush:

  • 17:23 - Estic llegint sobre backups amb Docker… [Volumes | Docker Docs]. No entenc per què no puc fer un tar des de fora a tots els volums i insisteixen a crear un contenidor efímer dient-li tots els volums i camins… quin lio.

  • 17:16 - El canvi a la versió 0.19.0 sembla inòqua, però no me’n refio. També diuen que

    To update to the newest version, you can manually change the version in docker-compose.yml
    i un bè negre hahahah. Ja recordo, he de mirar la versió del docker-compose per trobar els canvis de variables necessaris pq funcioni. [lemmy/docker/docker-compose.yml at 0.19.0 · LemmyNet/lemmy · GitHub]

  • 17:13 - Al blog és on expliquen les coses, bé! [2023-12-15 - Lemmy Release v0.19.0 - Instance blocking, Scaled sort, and Federation Queue]

  • 17:10 - continuo buscant els changelogs rellevants per saber on anar en compte, quants salts de versió fer.

  • 17:07 - reviso les notes de retiolus. Són per instal·lacions des de codi font. Jo vaig amb docker (agh)

  • 17h - login al sevidor

  • 16h - aviso a [Actualització de Lemmy 0.18.2 a Lemmy 0.18.5 - #8 per fadelkon]

1 'M'agrada'

Ei @fadelkon , collapse.cat va quedar pendent, oi? Si vols al novembre podríem trobar algun dia per fer-ho…

1 'M'agrada'