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

2 „Gefällt mir“

If you want to install Discourse in anything resembling a production environment, you should follow the cloud install instructions. https://github.com/discourse/discourse/blob/master/docs/INSTALL-cloud.md

2 „Gefällt mir“

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

2 „Gefällt mir“

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

9 „Gefällt mir“

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.

1 „Gefällt mir“

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.

1 „Gefällt mir“

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.

3 „Gefällt mir“

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

1 „Gefällt mir“

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:

4 „Gefällt mir“

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.