Linuxコンテナ内でDiscourseを起動する方法は?

こんにちは、Discourse の皆様!
LXD/LXC 内で Discourse のセットアップに成功しました。デーモンプロセスを起動する際のおすすめの方法はありますか?

現在の起動方法:
bundle exec rails s -b 0.0.0.0 2>&1 > /var/log/discourse.log

これよりも良い方法はあるでしょうか?
systemd を用いてどのように設定すればよいか教えていただけますでしょうか。よろしくお願いいたします。

敬具、
ドイツから、Ingo Baab

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.

Can you send this guide somewhere else? The site is blocking access for me, and I would also like to install discourse on LXC ProxMox

That’s wrong

Just follow the next post from the link above :slight_smile:

edit: I installed Discourse the official way inside a LXC container this way :wink:

LXD 上の Ubuntu サーバーで Raspberry Pi 4 と USB SSD を使用して Discourse を実行しようとしましたが、再構築中にハングアップしてタイムアウトしました。Btrfs ループバックストレージプールを使用するとハングアップが悪化/早期化し、ZFS ループバックストレージプールを使用するとさらに悪化しました。メモリ使用量は一貫して 1GB 周辺で、ピークは 3GB でした。ハングアップ時でも SSH/top は応答しましたが、すべての使用状況アクティビティが無視できるレベルに低下し、ギブアップしたことを示していました。

最近の LXD ドキュメント では、Docker の使用を有効にするために security.nesting を文字列値の true に設定することが推奨されており、私もそのようにしました。しかし、LXD ドキュメントには 本番環境の設定に関するページ もあり、約 20 の設定を変更する必要があると記載されていますが、私は試していません。

結局、Discourse を LXD で実行する試みを断念し、同じマシンで Docker を使用して Discourse を実行しました。

私の試みの詳細は次のとおりです。

奇妙なことに、以下の LXD Docker ガイドでは Btrfs を推奨していますが、LXD ドキュメントでは Btrfs を推奨していません。また、パーティションを使用していないように見えます(ただし、追加の設定を行い、docker.io 以外のパッケージをインストールし、Btrfs ボリュームのみを Docker にアタッチしています)。そのため、なぜ問題が発生したのか疑問に思っています。

@vmsman さん、これまでで最も成功したセットアップのようですので、プロファイル、ストレージプール、および変更が必要だったシステム設定など、LXD セットアップの詳細を共有していただけますか?

LXD について、いくつか疑問があります。

  • ストレージプールのループバックファイルではなくパーティションを使用することで、パフォーマンスの問題が解決し、ハングアップの問題が解消されるかどうか。
  • MicroCloud や LXD クラスターを使用すること、または Ceph をストレージプールとして使用することが役立つかどうか。

全体として、LXD で Discourse を動作させることはできませんでしたが、LXD の使いやすさには非常に感銘を受けています。以前は HashiCorp で数か月間苦労しました。HashiCorp はエンタープライズユースケースにしか興味がないように思われます。一方、LXD はすぐに機能し、人々は小規模チームやインディー開発者が進歩できるようにサポートしているようです。