Wie startet man Discourse in einem Linux-Container?

Hallo, Discourse-Freunde!
Ich habe es geschafft, Discourse in einem LXD/LXC-Container einzurichten, und möchte fragen: Gibt es eine Empfehlung, wie man den Daemon-Prozess starten sollte?

Gibt es eine bessere „Methode", als ihn mit folgendem Befehl zu starten:
bundle exec rails s -b 0.0.0.0 2>&1 > /var/log/discourse.log

Wie lässt sich das mit systemd umsetzen? Vielen Dank im Voraus.

Mit freundlichen Grüßen,
Ingo Baab aus Deutschland

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:

Ich habe versucht, Discourse innerhalb von LXD auf einem Ubuntu-Server auf einem Raspberry Pi 4 mit einer USB-SSD zum Laufen zu bringen, und es hing und lief in Timeouts während der Rebuilds. Das Hängen war schlimmer/früher bei der Verwendung eines Btrfs-Loopback-Speicherpools und später bei der Verwendung eines ZFS-Loopback-Speicherpools. Der Speicher war konstant um 1 GB mit 3 GB Spitzenwerten. Die Hänger ließen SSH/Top ansprechbar sein, aber alle Nutzungsaktivitäten fielen auf vernachlässigbare Werte ab, was darauf hindeutete, dass es aufgegeben hatte.

Heutzutage empfehlen die LXD-Dokumente nur, security.nesting auf den String-Wert true zu setzen, um die Docker-Nutzung zu aktivieren, was ich getan habe. Die LXD-Dokumente haben jedoch auch eine Seite für die Produktionskonfiguration mit etwa 20 Einstellungen, die geändert werden müssen, was ich noch nicht ausprobiert habe.

Am Ende gab ich meinen LXD-Versuch für Discourse auf und ließ Discourse einfach über Docker auf demselben Rechner laufen.

Details zu meinen Bemühungen hier:

Seltsamerweise empfiehlt der untenstehende LXD-Docker-Leitfaden Btrfs, obwohl die LXD-Dokumente davon abraten, und es scheint keine Partition dafür zu verwenden (obwohl sie einige zusätzliche Einstellungen vornehmen, andere Pakete als docker.io installieren und das Btrfs-Volume nur an Docker anhängen), daher frage ich mich, warum ich solche Probleme hatte:

@vmsman Können Sie mehr Details zu Ihrem LXD-Setup mitteilen, wie z. B. Profile, Speicherpools und Systemkonfigurationen, die geändert werden mussten, da Sie anscheinend das bisher erfolgreichste Setup hatten:

Für LXD frage ich mich bei einigen Dingen:

  • Ob Partitionen für Speicherpools anstelle von Loopback-Dateien die Leistungsprobleme ausreichend lösen würden, sodass die Hänger verschwinden
  • Ob die Verwendung von MicroCloud oder einem LXD-Cluster helfen würde, oder die Verwendung von Ceph als Speicherpool

Alles in allem bin ich, obwohl ich Discourse nicht in LXD zum Laufen gebracht habe, sehr beeindruckt von LXD und seiner Benutzerfreundlichkeit. Ich habe zuvor Monate damit verbracht, mit HashiCorp zu kämpfen, da HashiCorp nur an Enterprise-Anwendungsfällen interessiert zu sein scheint. Während LXD einfach funktioniert und die Leute unterstützend genug zu sein scheinen, um kleinen Teams und Indie-Entwicklern Fortschritte zu ermöglichen.