Дискурс о Raspberry Pi | Блог

Я уже несколько месяцев пытаюсь заставить Discourse работать на Raspberry Pi 4, но безрезультатно.

Казалось, что образ Docker устарел, поэтому я удалил и установил заново два других образа Docker, но всё равно ничего не вышло.

Есть какие-нибудь предложения?

1 лайк

Да, установите дистрибутив для архитектуры arm64 на ваш Pi.

Фонду Raspberry Pi потребовалось несколько лет, чтобы выпустить правильную архитектуру программного обеспечения, так как они всё ещё разрабатывали решения для 32-битного оборудования. Пожалуйста, замените ваш образ на текущий релиз arm64. Хорошая новость в том, что это позволит вам использовать все 8 ГБ оперативной памяти, если это ваш тип устройства.

1 лайк

Похоже, у меня уже запущена версия arm64, но она не работает.

1 лайк

Вы должны подтвердить, что запускаете.

cat /proc/cpuinfo

1 лайк

Фух, это было много данных и, честно говоря, многое незнакомо. Какая строка указывает, что я запускаю?

1 лайк

Я думаю, что
uname -a
должно помочь здесь.

2 лайка

Спасибо!
Результаты:
Linux raspberrypi 6.1.21-v8+ #1642 SMP PREEMPT Mon Apr 3 17:24:16 BST 2023 aarch64 GNU/Linux

1 лайк

Хм, это ядро 64-битной архитектуры (aarch64), но при этом вы получили сообщение от Docker с жалобой на armv8. Я не знаком с этой областью и не знаю всей истории того, как вы сюда попали… Обычная рекомендация — сделать безопасную резервную копию и восстановить её на свежую ОС и новую установку Discourse.

Надеюсь, что успешная установка не обязательно приведёт к проблемам при будущем обновлении.

1 лайк

Что показывает команда docker info?

В частности, строка, где указано Architecture:.

1 лайк

Архитектура процессора: 8

1 лайк

LOL, я уже делал это много раз и готов повторить снова.

В данный момент я работаю на Raspberry Pi 400 Rev 1.0 с Bullseye 64 lite.
Я пробовал Bullseye 64, Bullseye 64 lite, 32 lite и Bookworm 64. Если я не ошибаюсь, в каждом случае возникает одна и та же ошибка, которую я публиковал.

После небольшого исследования друг предложил перепрошить систему на Bullseye 64 lite, что должно было решить проблему. Но это не помогло.

Кстати, при запуске Docker через команду sudo docker run hello-world выводится ожидаемое сообщение “Docker is working”.

1 лайк

Не тот :stuck_out_tongue:. Пожалуйста, вставьте весь вывод целиком.

3 лайка

sudo docker info
Клиент: Docker Engine - Community
Версия: 24.0.7
Контекст: default
Режим отладки: false
Плагины:
buildx: Docker Buildx (Docker Inc.)
Версия: v0.11.2
Путь: /usr/libexec/docker/cli-plugins/docker-buildx
compose: Docker Compose (Docker Inc.)
Версия: v2.21.0
Путь: /usr/libexec/docker/cli-plugins/docker-compose

Сервер:
Контейнеры: 2
Запущены: 1
Приостановлены: 0
Остановлены: 1
Образы: 4
Версия сервера: 24.0.7
Драйвер хранилища: overlay2
Базовая файловая система: extfs
Поддержка d_type: true
Использование metacopy: false
Нативная разница оверлеев: true
userxattr: false
Драйвер логирования: json-file
Драйвер cgroup: systemd
Версия cgroup: 2
Плагины:
Том: local
Сеть: bridge host ipvlan macvlan null overlay
Лог: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: неактивен
Рантаймы: io.containerd.runc.v2 runc
Рантайм по умолчанию: runc
Двоичный файл инициализации: docker-init
Версия containerd: 3dd1e886e55dd695541fdcd67420c2888645a495
Версия runc: v1.1.10-0-g18a0cb0
Версия init: de40ad0
Параметры безопасности:
seccomp
Профиль: builtin
cgroupns
Версия ядра: 6.1.21-v8+
Операционная система: Debian GNU/Linux 11 (bullseye)
Тип ОС: linux
Архитектура: aarch64
Процессоры: 4
Общая память: 3.705 ГиБ
Имя: raspberrypi
ID: 183a2a7a-8acf-40eb-9386-c99d70ee8ed3
Корневой каталог Docker: /var/lib/docker
Режим отладки: false
Экспериментальные функции: false
Ненадежные реестры:
127.0.0.0/8
Live Restore включен: false

ПРЕДУПРЕЖДЕНИЕ: Поддержка ограничения памяти отсутствует
ПРЕДУПРЕЖДЕНИЕ: Поддержка ограничения swap отсутствует

1 лайк

Не получается запустить на Raspberry Pi 4 с 8 ГБ ОЗУ и SSD, подключенным через USB в качестве единственного диска. Система постоянно зависает на следующем (или, по крайней мере, я теряю терпение после часа ожидания…)

I, [2024-02-06T00:58:51.743994 #1]  INFO -- : > cd /var/www/discourse && su discourse -c 'yarn install --frozen-lockfile && yarn cache clean'
warning "@discourse/lint-configs > eslint-plugin-ember > ember-eslint-parser@0.2.5" has unmet peer dependency "@typescript-eslint/parser@^6.15.0".
warning "@discourse/lint-configs > eslint-plugin-ember > ember-eslint-parser@0.2.5" has incorrect peer dependency "typescript@^5.3.3".
warning " > @glint/environment-ember-loose@1.3.0" has unmet peer dependency "@glimmer/component@^1.1.2".
2024-02-06 01:15:58.966 UTC [64] WARNING:  worker took too long to start; canceled
2024-02-06 01:16:19.640 UTC [480] WARNING:  autovacuum worker started without a worker entry
2024-02-06 01:21:46.504 UTC [64] WARNING:  worker took too long to start; canceled
2024-02-06 01:22:18.863 UTC [481] WARNING:  autovacuum worker started without a worker entry

Похоже, система всё ещё что-то делает:

Tasks:  60 total,   7 running,  53 sleeping,   0 stopped,   0 zombie
%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 
MiB Mem :   7807.7 total,   6783.7 free,    954.0 used,     70.0 buff/cache     
MiB Swap:      0.0 total,      0.0 free,      0.0 used.   6853.8 avail Mem 

    PID USER      PR  NI    VIRT    RES    SHR S  %CPU  %MEM     TIME+ COMMAND                                                                                                    
   3422 root      20   0 1928888  33180   2512 S  40.6   0.4  28:18.52 dockerd                                                                                                    
   9922 root      20   0 1105300   9984   2944 S  30.2   0.1   1:02.72 docker                                                                                                     
   3362 root      20   0 1934276  19060   1408 S  20.8   0.2  20:24.57 containerd                                                                                                 
   9416 ubuntu    20   0 1148560 298160      0 R  12.0   3.7  10:03.66 node                                                                                                       
   9158 dnsmasq   20   0   54992   2432    128 R  11.7   0.0   5:01.56 redis-server                                                                                               
   8997 root      20   0 1238120   5704    256 S  10.7   0.1   9:06.51 containerd-shim                                                                                            
   9504 ubuntu    20   0  569128  51532      0 R   8.8   0.6   5:20.97 node                                                                                                       
   9930 pollina+  20   0  353212   5692   3328 R   6.8   0.1   0:06.97 postmaster                                                                                                 
   9931 pollina+  20   0  352820   4156   2048 R   5.2   0.1   0:02.70 postmaster                                                                                                 
   9098 pollina+  20   0  352844   3004   1024 R   2.3   0.0   0:15.75 postmaster                                                                                                 
    219 root      20   0 1259732  36000  20352 S   1.0   0.5   1:10.50 cloudflared                                                                                                
   9658 root      20   0    9116   4864   2816 R   0.6   0.1   0:18.19 top                  

Было бы здорово, если бы компиляция включала индикатор прогресса.

Какой лучший способ:

  • узнать, что именно происходит?
  • безопасно остановить процесс, чтобы попробовать снова? Раньше я пробовал sudo shutdown --reboot 0, но это уничтожило базу данных PostgreSQL, и мне пришлось переустанавливать машину.
1 лайк

Вы можете поискать сообщения, которые получаете, на форуме и в интернете. Также попробуйте создать новую тему вместо ответа на объявление.

Введите это в поиск, и вы увидите результаты. Повторите то же самое для своего сообщения на форуме и в интернете — это должно дать вам много информации.
https://meta.discourse.org/search?q=has%20unmet%20peer%20dependency

1 лайк

Этот шаг не является этапом компиляции, он просто скачивает JS-файлы. Их невообразимо много, и все они маленькие, поэтому, вероятно, это крайне неудачный случай для вашего нестандартного решения хранения данных?

7 лайков

Хорошо, я оставлю его запущенным на несколько дней. В противном случае, думаю, вместо Raspberry Pi 4 с SSD потребуется Raspberry Pi 5 с SSD.

ОБНОВЛЕНИЕ:

Спустя несколько часов и ещё много прочитанного я решил попробовать изменить контейнер LXD: перейти с пула хранения btrfs на пул хранения zfs. После этого процесс продвинулся дальше примерно за 5 минут (тогда как с btrfs он зависал на час или около того, прежде чем рабочие процессы начинали давать сбой).

Сборка всё ещё идёт, но как только она завершится, и я смогу успешно импортировать резервную копию и настроить SSL от Cloudflare, я опубликую информацию о своей миграции с Docker-контейнера Discourse, работающего на Scaleway, на Docker-контейнер Discourse, запущенный внутри контейнера LXD на Raspberry Pi 4 + SSD.

ОБНОВЛЕНИЕ 2:

4 лайка

Почему вы использовали baremetal-экземпляр?

1 лайк

@Falco немного опоздал, но у меня та же проблема.

Я следовал руководству по установке на Pi 5, работающем на arm64. Есть какие-то идеи, как это исправить?

1 лайк

Какую операционную систему вы используете?