How to start discourse inside a linux container?

Hello Discourse Friends!
I managed to setup discourse inside a LXD/LXC and want to ask, is there a recommendation how to start the deamon process?

Is there a better ‘method’ than starting it with:

bundle exec rails s -b 0.0.0.0 2>&1 > /var/log/discourse.log

How can this be done with systemd? Thank you in advance.

Kind Regards,
Ingo Baab from Germany

If you want to install Discourse in anything resembling a production environment, you should follow the cloud install instructions. discourse/docs/INSTALL-cloud.md at main · discourse/discourse · GitHub

Thank you for this answer, Jay, but I am happy with my installation. Works fine inside Linuxcontainer… (I do not like docker at all…)

There are a zillion ways that you might install Discourse that can all work just fine, but only one is supported here.

Hi,
how to install it using LCX container. I dont want to use docker, because I use proxmox to manage VMs and docker cant be installed in LCX container.

You would be entering uncharted territory and would need to build something that you alone support. The code for discourse docker is open so you could adapt it, I guess.

You mean an LXC container? I know someone who worked for canonical and had a lot to do with LXC. He uses docker now.

I just installed Discourse in a Docker container inside an LXD container, which may seem weird but it’s something LXD was intentionally designed to support.

How to Install Discourse in an LXD / Docker Container

If you encounter problems with Docker / Discourse failing to run in LXD then you’ll likely need to tweak some settings in your host’s /etc/sysctl.conf namely:

kernel.keys.maxkeys=2000
kernel.keys.maxbytes=200000
net.ipv4.tcp_mem=182757 243679 365514
net.core.netdev_max_backlog=182757

These are production values for LXD and for me they were neccessary to get Discourse running.

Можете отправить это руководство в другое место? Сайт блокирует для меня доступ, и я также хотел бы установить Discourse в LXC на Proxmox.

Это неверно

Просто следуйте следующему сообщению по ссылке выше :slight_smile:

редакция: Я установил Discourse официальным способом внутри контейнера LXC вот так :wink:

Я пытался запустить Discourse внутри LXD на Ubuntu Server на Raspberry Pi 4 с USB SSD, но процесс просто зависал и завершался по тайм-ауту во время пересборки. Зависания случались раньше и были более выраженными при использовании пула хранилища btrfs на основе loopback-устройства, а позже — при использовании пула zfs на основе loopback. Потребление памяти оставалось стабильным около 1 ГБ с пиками до 3 ГБ. При зависании SSH и утилита top оставались отзывчивыми, но вся активность использования системы падала до ничтожного уровня, что указывало на то, что процесс перестал отвечать.

В настоящее время документация LXD рекомендует просто установить параметр security.nesting в строковое значение true для включения поддержки Docker, что я и сделал. Однако в документации LXD также есть страница с рекомендациями по конфигурации для production, где перечислено около 20 настроек, которые необходимо изменить, но я их не пробовал.

В итоге я отказался от попытки запустить Discourse в LXD и просто запустил его через Docker на той же машине.

Детали моих попыток здесь:

Странно, что нижеприведённое руководство по запуску Docker в LXD рекомендует использовать btrfs, несмотря на то, что документация LXD не рекомендует его. Кроме того, в нём, по-видимому, не используется отдельный раздел для btrfs (хотя там устанавливаются дополнительные настройки, устанавливаются другие пакеты вместо docker.io, и том btrfs подключается только к Docker). Поэтому я задаюсь вопросом, почему у меня возникли такие проблемы:

@vmsman, не могли бы вы поделиться более подробной информацией о вашей настройке LXD, например, о профилях, пулах хранилища и любых системных настройках, которые потребовали изменения, так как, судя по всему, у вас самая успешная конфигурация на данный момент:

Что касается LXD, у меня возникают следующие вопросы:

  • Помогут ли разделы вместо loopback-файлов для пулов хранилища решить проблемы с производительностью и устранить зависания?
  • Поможет ли использование MicroCloud или кластера LXD, либо использование Ceph в качестве пула хранилища?

В целом, несмотря на то, что мне не удалось запустить Discourse в LXD, я очень впечатлён LXD и его простотой использования. Ранее я месяцами боролся с HashiCorp, поскольку HashiCorp, похоже, интересует только корпоративное использование. В то время как LXD просто работает, а сообщество достаточно поддерживающее, что позволяет небольшим командам и независимым разработчикам добиваться прогресса.