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 curtidas

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 curtidas

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 curtidas

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

9 curtidas

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 curtida

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 curtida

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 curtidas

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 curtida

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 curtidas

Tentei configurar o Discourse dentro do LXD no Ubuntu Server em um Raspberry Pi 4 com um SSD USB, e ele simplesmente travava e expirava durante as reconstruções. O travamento era pior/mais cedo usando um pool de armazenamento de loopback btrfs e, posteriormente, usando um pool de armazenamento de loopback zfs. A memória era consistente em torno de 1 GB com picos de 3 GB. Os travamentos mantinham o SSH/top responsivos, mas toda a atividade de uso caía para níveis insignificantes, indicando que havia desistido.

Atualmente, a documentação do LXD apenas recomenda definir security.nesting para o valor string true para habilitar o uso do Docker, o que fiz. No entanto, a documentação do LXD também tem uma página para configuração de produção com cerca de 20 configurações que precisam ser alteradas, o que ainda não tentei.

No final, desisti da minha tentativa com o LXD para o Discourse e simplesmente executei o Discourse via Docker na mesma máquina.

Detalhes dos meus esforços aqui:

Estranhamente, o guia do LXD para Docker abaixo recomenda btrfs, apesar de a documentação do LXD desaconselhá-lo, e não parece usar uma partição para ele (no entanto, eles definem algumas configurações extras, instalam outros pacotes em vez de docker.io e anexam o volume btrfs apenas ao Docker), então me pergunto por que tive tantos problemas:

@vmsman, você pode compartilhar mais detalhes sobre sua configuração do LXD, como perfis, pools de armazenamento e quaisquer configurações do sistema que precisaram ser alteradas, já que parece que você teve a configuração mais bem-sucedida até agora:

Para o LXD, algumas coisas que me pergunto:

  • Se partições para pools de armazenamento em vez de arquivos de loopback resolveriam os problemas de desempenho o suficiente para que os problemas de travamento desaparecessem.
  • Se usar microcloud ou um cluster LXD ajudaria, ou usar ceph como pool de armazenamento.

Ao todo, apesar de não ter conseguido fazer o Discourse funcionar no LXD, estou muito impressionado com o LXD e sua facilidade de uso. Anteriormente, passei meses lutando com o HashiCorp, pois o HashiCorp parece interessado apenas em casos de uso corporativo. Enquanto isso, o LXD simplesmente funciona e as pessoas parecem ser solidárias o suficiente para permitir que pequenas equipes e desenvolvedores independentes progridam.