Hosting Discourse on a Raspberry Pi?

На мой взгляд, вам лучше подождать ожидаемого Raspberry Pi 5, который — если экстраполировать прогресс в производительности Pi от версии 2 к 3 и 4 — должен обладать достаточной мощностью для запуска Discourse.

Также не уверен, что зависимости x86 (x64?) в данный момент преодолимы, но это неплохая идея для рассмотрения в долгосрочной перспективе.

Кластер Pi 4 с 64-битным четырёхъядерным процессором 1,5 ГГц и, возможно, дисками USB3 для хранения данных (~300 МБ/с) или внешним хранилищем объектов (S3 или GCP), а также CDN перед анонимными пользователями, вероятно, может стать альтернативной платформой :slight_smile: Время покажет!

Сама по себе эта цифра не очень показательна.

Вы не указали, какая именно это карта microSD, но её характеристики находятся в том же порядке величин, что и у Lexar Professional 1800x, которая способна поддерживать последовательную скорость чтения около 300 МБ/с и записи, приближающуюся к 250 МБ/с. Однако проблема с картами microSD заключается не в последовательном чтении и записи — для реальной оценки того, что будет происходить при одновременной работе нескольких пользователей с базой данных и локальными ресурсами, нужно смотреть на скорость случайного чтения и записи.

Современные SSD обычно обеспечивают последовательное чтение на уровне 500 МБ/с и выше и последовательную запись от 475 МБ/с и выше — это не так уж далеко от приведённых выше значений. Но разница в производительности при случайном чтении и записи огромна: тот же SSD может достигать 400 МБ/с в тесте 4KiBQ8T8, тогда как Lexar падает до низких двузначных значений, около 15 МБ/с. Случайная запись ещё хуже: SSD сохраняет скорость до 300 МБ/с, а microSD падает до однозначных значений (2 МБ/с).

Я большой поклонник rPi и использую их во многих местах, но они всё ещё далеко от того уровня, который нам нужен.

Это карта Sandisk на 64 ГБ за 20 долларов США (в Швеции), класс A2, если я не ошибаюсь. Просто хотел показать, что чистая последовательная скорость не так уж плоха, как вы описывали :slight_smile:

Если она не работает на Raspberry Pi даже с внешним SSD, подключенным к портам USB 3.0, то, полагаю, вынос базы данных наружу устранит эту узкую точку. Но я предвзят, так как мне нравится идея развернуть кластер на ARM с теперь уже реальными сетевыми интерфейсами 1 Гбит/с на Pi 4. Кроме того, мне нравится бросать вызов мышлению «это не работает» в целом :wink:

Если вы потратите достаточно времени, денег и ресурсов на что угодно, вы сможете заставить это работать.

Запросы на запуск Discourse на Raspberry Pi за последние годы обычно исходят от пользователей, у которых уже есть Pi, и которые не хотят тратить ничего сверх этого. По сути, именно это мы здесь и исследуем.

Как только вы начинаете подключать внешние SSD-диски и переносить базу данных на другую систему, вы уже на самом деле не говорите о размещении Discourse на Raspberry Pi. :wink:

Верно. Я согласен, что обычно вы получаете то, за что платите :slightly_smiling_face:

Возьмите Raspberry Pi 4 с 4 или 8 ГБ оперативной памяти :wink:, затем купите одну карту MicroSD (промышленного класса) на Amazon, eBay и т.д.

Запишите образ на карту MicroSD, следуя инструкциям с сайта: https://blog.hypriot.com/ :smiling_face_with_three_hearts: :slightly_smiling_face:, а именно перейдите в раздел: Download и скачайте последнюю версию.

После записи образа на карту вставьте её в Raspberry Pi и подключитесь по SSH. Логин и пароль для доступа к Docker по SSH: “pirate” и “hypriot” (Пользователь: pirate, Пароль: hypriot). Очевидно, что после подключения по SSH необходимо изменить учётные данные на свои, выполнив команду sudo raspi-config, а затем перезагрузить Raspberry Pi.

После перезагрузки подключитесь по SSH и установите “Discourse”, следуя этому руководству: https://linoxide.com/how-tos/install-discourse-docker-container/ :wink:. Очевидно, что вы начнёте с пункта 2), так как Docker вы установили сразу в самом начале.

Приятной работы!

Привет, Massym,

Я последовал твоим инструкциям, установил Hypriot и всё остальное, но получил следующую ошибку:

  $ ./launcher bootstrap app
  standard_init_linux.go:211: exec user process caused "exec format error"
  Ваша установка Docker работает некорректно

  См.: https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam

Есть какие-то идеи?

Спасибо.

Я действительно ценю ваш быстрый ответ, Рафаэль.

Похоже, я ошибочно предположил, что Massym успешно запустил Discourse на Raspberry Pi 4, поскольку, перечитав его сообщение, вижу, что он этого явно не утверждает. Это было пустой тратой моего времени, но хотя бы полезным опытом.

Какой именно компонент Discourse не поддерживается? Я и, уверен, многие другие с нетерпением ждем возможности заставить его работать.

Спасибо.

Я бы предположил, что Discourse использует образы, собранные для x86_64, а именно Redis, Ruby и PostgreSQL.

Это наша библиотека V8/MiniRacer, которая выполняет JavaScript на сервере.

Теперь, когда Apple представила семейство процессоров M1, я уверен, что мы скоро сможем заставить это работать на ARM.

С нетерпением жду, когда это заработает. Один из моих форумов, работающий на Discourse, — последний пункт, который я планирую завершить при переходе на кластер Raspberry Pi 4, который потребляет бесконечно меньше энергии, чем сервер на базе Intel.

Поднимаю тему: есть ли какие-то продвижения по гему v8 для ARM? Я пытался скомпилировать образы, но всегда упирался в этот гем. Это немного сложно: он падает, потому что скрипты пытаются загрузить инструменты для архитектуры x86_64 (для сборки) и запустить их на ARM…

См.:

ARM на сервере (и в Ruby) сделает огромный шаг вперёд в ближайшее время благодаря тому, что впечатляющий чип Apple M1 наконец появился в реальном ноутбуке.

Однако сам Raspberry Pi — даже значительно улучшенная 4-я модель — катастрофически слаб для роли сервера. Согласно этому сообщению и результатам теста Speedometer 2.0…

3B+ Buster, 32-битное ядро
9.49/9.66/9.46 = 9.54 Chromium

4B4 Buster, 64-битное ядро (32-битный вариант показал аналогичные результаты)
17.2/17.0/17.1 = 17.1 Chromium

Смартфон OnePlus 7 Pro (Snapdragon 855, 8 ГБ ОЗУ, Android/Oxygen OS 10)
36.3/35.9/36.8 = 36.3 Chrome

HP Chromebook x2 (двухъядерный M3-7Y30)
68.2/68.6/68.0 = 68.3 Chrome OS 78

Бюджетный игровой ноутбук Legion Y520 (i7-7700HQ, Win10x64)
87.4/86.8/87.3 = 87.2 Chrome

Исходя из этих цифр, я предполагаю, что гипотетический будущий Raspberry Pi 5, если он…

  • как минимум удвоит производительность по сравнению с Pi 4
  • будет оснащён мини-накопителем M.2 SSD для хранения данных вместо карты SD

…возможно, сможет стать жизнеспособным сервером Discourse для форума с очень низкой посещаемостью?

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

Теперь это поддерживается