Discurso sobre un Raspberry Pi | Blog

He estado intentando hacer funcionar Discourse en una Raspberry Pi 4 durante un par de meses y no he tenido suerte.

Parecía que quizás la imagen de Docker estaba desactualizada, así que desinstalé y reinstalé otras dos imágenes de Docker y todavía no tuve suerte.

¿Alguna sugerencia?

1 me gusta

Sí, instala una distribución arm64 en tu Pi.

Le tomó un par de años a Raspberry Pi Foundation lanzar la arquitectura de software correcta porque todavía estaban desarrollando para hardware de 32 bits. Por favor, cambia tu imagen a la versión actual arm64. La buena noticia es que te permitirá usar los 8 GB de RAM si ese es tu dispositivo.

1 me gusta

Parece que ya estoy ejecutando arm64 y no está funcionando.

1 me gusta

Debes confirmar lo que estás ejecutando.

cat /proc/cpuinfo

1 me gusta

Uf, esa fue mucha información y, sinceramente, mucho es desconocido. ¿Qué línea especifica lo que estoy ejecutando?

1 me gusta

Creo que
uname -a
ayudará aquí.

2 Me gusta

¡Gracias!
Resultados:
Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux

1 me gusta

Hmm, bueno, ese es un kernel de 64 bits (aarch64), y sin embargo tuviste un mensaje de Docker quejándose de armv8. No conozco este territorio ni toda la historia de cómo llegaste aquí… un consejo común es hacer una copia de seguridad segura y restaurar en un sistema operativo nuevo y una instalación nueva de Discourse.

Espero que no sea el caso de que una instalación exitosa tenga problemas inevitables a la hora de actualizar.

1 me gusta

¿Cuál es la salida de tu docker info?

En especial la línea que dice Architecture:.

1 me gusta

Arquitectura de CPU: 8

1 me gusta

lol, lo he hecho muchas veces y estoy preparado para hacerlo de nuevo.

Actualmente, estoy en una Raspberry Pi 400 Rev 1.0 ejecutando Bullseye 64 lite.
He probado Bullseye 64, 64 lite, 32 lite; y Bookworm 64. Si mal no recuerdo, obtengo el mismo error que publiqué en cada caso.

Después de investigarlo un poco, un amigo sugirió volver a flashear a Bullseye 64 lite y eso debería solucionar el problema. Pero no lo hizo.

Nota al margen, cuando ejecuto el docker sudo docker run hello-world produce el mensaje esperado “Docker is working”.

1 me gusta

Ese no :stuck_out_tongue: . Por favor, pega la salida completa.

3 Me gusta

sudo docker info
Cliente: Docker Engine - Community
Versión: 24.0.7
Contexto: default
Modo Debug: false
Plugins:
buildx: Docker Buildx (Docker Inc.)
Versión: v0.11.2
Ruta: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Versión: v2.21.0
Ruta: /usr/libexec/docker/cli-plugins/docker-compose

Servidor:
Contenedores: 2
En ejecución: 1
Pausados: 0
Detenidos: 1
Imágenes: 4
Versión del servidor: 24.0.7
Controlador de almacenamiento: overlay2
Sistema de archivos de respaldo: extfs
Soporta d_type: true
Uso de metacopia: false
Diferencia nativa de overlay: true
userxattr: false
Controlador de registro: json-file
Controlador Cgroup: systemd
Versión Cgroup: 2
Plugins:
Volumen: local
Red: bridge host ipvlan macvlan null overlay
Registro: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactivo
Runtimes: io.containerd.runc.v2 runc
Runtime predeterminado: runc
Binario Init: docker-init
Versión de containerd: 3dd1e886e55dd695541fdcd67420c2888645a495
Versión de runc: v1.1.10-0-g18a0cb0
Versión de init: de40ad0
Opciones de seguridad:
seccomp
Perfil: incorporado
cgroupns
Versión del kernel: 6.1.21-v8+
Sistema operativo: Debian GNU/Linux 11 (bullseye)
Tipo de SO: linux
Arquitectura: aarch64
CPUs: 4
Memoria total: 3.705GiB
Nombre: raspberrypi
ID: 183a2a7a-8acf-40eb-9386-c99d70ee8ed3
Directorio raíz de Docker: /var/lib/docker
Modo Debug: false
Experimental: false
Registros inseguros:
127.0.0.0/8
Habilitado Restauración en vivo: false

ADVERTENCIA: No hay soporte para límite de memoria
ADVERTENCIA: No hay soporte para límite de intercambio

1 me gusta

No puedo hacerlo funcionar en una Raspberry Pi 4 con 8 GB de RAM y un SSD conectado a través de USB como unidad única. Sigue colgado en lo siguiente (o al menos, me impaciento después de una hora de espera…)\n\n\nI, [2024-02-06T00:58:51.743994 #1] INFO -- : \u003e cd /var/www/discourse \u0026\u0026 su discourse -c 'yarn install --frozen-lockfile \u0026\u0026 yarn cache clean'\nwarning \"@discourse/lint-configs \u003e eslint-plugin-ember \u003e ember-eslint-parser@0.2.5\" has unmet peer dependency \"@typescript-eslint/parser@^6.15.0\".\nwarning \"@discourse/lint-configs \u003e eslint-plugin-ember \u003e ember-eslint-parser@0.2.5\" has incorrect peer dependency \"typescript@^5.3.3\".\nwarning \" \u003e @glint/environment-ember-loose@1.3.0\" has unmet peer dependency \"@glimmer/component@^1.1.2\".\n2024-02-06 01:15:58.966 UTC [64] WARNING: worker took too long to start; canceled\n2024-02-06 01:16:19.640 UTC [480] WARNING: autovacuum worker started without a worker entry\n2024-02-06 01:21:46.504 UTC [64] WARNING: worker took too long to start; canceled\n2024-02-06 01:22:18.863 UTC [481] WARNING: autovacuum worker started without a worker entry\n\n\nParece que todavía está haciendo cosas:\n\n\nTasks: 60 total, 7 running, 53 sleeping, 0 stopped, 0 zombie\n%Cpu(s): 20.8 us, 60.5 sy, 0.0 ni, 0.0 id, 0.0 wa, 0.0 hi, 18.8 si, 0.0 st \nMiB Mem : 7807.7 total, 6783.7 free, 954.0 used, 70.0 buff/cache \nMiB Swap: 0.0 total, 0.0 free, 0.0 used. 6853.8 avail Mem \n\n PID USER PR NI VIRT RES SHR S %CPU %MEM TIME+ COMMAND \n 3422 root 20 0 1928888 33180 2512 S 40.6 0.4 28:18.52 dockerd \n 9922 root 20 0 1105300 9984 2944 S 30.2 0.1 1:02.72 docker \n 3362 root 20 0 1934276 19060 1408 S 20.8 0.2 20:24.57 containerd \n 9416 ubuntu 20 0 1148560 298160 0 R 12.0 3.7 10:03.66 node \n 9158 dnsmasq 20 0 54992 2432 128 R 11.7 0.0 5:01.56 redis-server \n 8997 root 20 0 1238120 5704 256 S 10.7 0.1 9:06.51 containerd-shim \n 9504 ubuntu 20 0 569128 51532 0 R 8.8 0.6 5:20.97 node \n 9930 pollina+ 20 0 353212 5692 3328 R 6.8 0.1 0:06.97 postmaster \n 9931 pollina+ 20 0 352820 4156 2048 R 5.2 0.1 0:02.70 postmaster \n 9098 pollina+ 20 0 352844 3004 1024 R 2.3 0.0 0:15.75 postmaster \n 219 root 20 0 1259732 36000 20352 S 1.0 0.5 1:10.50 cloudflared \n 9658 root 20 0 9116 4864 2816 R 0.6 0.1 0:18.19 top \n\n\nSería bueno que la compilación incluyera una barra de progreso.\n\n¿Cuál es la mejor manera de:\n- Averiguar qué está haciendo?\n- Apagarlo de forma segura para intentarlo de nuevo? Intenté sudo shutdown --reboot 0 anteriormente, sin embargo, eso aniquiló la base de datos postgres y tuve que volver a configurar la máquina.

1 me gusta

Puedes buscar los mensajes que estás recibiendo en el foro e internet. También, intenta mover esto a una nueva publicación en lugar de como respuesta al anuncio.

Escríbelo en la búsqueda y verás resultados. Repite lo que has publicado en el foro e internet; deberías obtener mucha información.
https://meta.discourse.org/search?q=has%20unmet%20peer%20dependency

1 me gusta

Ese paso no es un paso de compilación, sino que solo descarga archivos JS. Es una cantidad absurda de archivos pequeños, ¿así que supongo que es un caso malo patológico para la inusual solución de almacenamiento que estás utilizando?

7 Me gusta

De acuerdo, lo dejaré funcionando unos días entonces. De lo contrario, supongo que en lugar de una rpi4 con SSD, necesitaré una rpi5 con SSD.

ACTUALIZACIÓN:

Horas después y después de leer más, decidí cambiar el contenedor lxd de usar un pool de almacenamiento btrfs a usar un pool de almacenamiento zfs. Una vez hecho, pudo avanzar más allá de ese punto en unos 5 minutos (mientras que con btrfs se colgaría durante aproximadamente una hora antes de que los trabajadores comenzaran a fallar).

Todavía se está construyendo, sin embargo, una vez que haya terminado y haya podido importar con éxito la copia de seguridad y solucionar el SSL de cloudflare, publicaré mi migración de discourse docker ejecutándose dentro de scaleway a discourse docker ejecutándose dentro de un contenedor lxd dentro de una raspberry pi 4 + ssd.

ACTUALIZACIÓN 2:

4 Me gusta

¿Por qué usaste una instancia baremetal?

1 me gusta

@Falco, llego tarde a la fiesta, pero estoy experimentando el mismo problema.

Seguí la guía de instalación en una Pi 5, ejecutando arm64. ¿Alguna idea sobre cómo solucionar esto?

1 me gusta

¿Qué sistema operativo estás ejecutando?