Hospedando Discourse em um Raspberry Pi?

Na minha opinião, você faria melhor em aguardar o eventual Raspberry Pi 5, que — se projetarmos para frente o progresso no desempenho do Pi, do 2 ao 3 e ao 4 — deve ter força suficiente para rodar o Discourse.

Não tenho certeza se as dependências x86 (x64?) são superáveis no momento, mas não é uma má ideia examinar isso para o longo prazo.

Um cluster de Pi 4 com processador quad-core de 1,5 GHz em 64 bits e, possivelmente, discos USB 3.0 para armazenamento (~300 MB/s) ou um blob store externo (S3 ou GCP), além de uma CDN na frente desses usuários anônimos, deve ser uma alternativa de plataforma viável :slight_smile: O futuro nos dirá!

Isso não é realmente um número significativo por si só.

Você não especificou qual cartão microSD era, mas está na mesma ordem de grandeza de um Lexar Professional 1800x, que pode sustentar velocidades de leitura sequencial de ~300 MB/s e gravações próximas a 250 MB/s. Leituras e gravações sequenciais não são o problema com cartões microSD, no entanto; você precisa olhar para leituras/gravações aleatórias para ter uma ideia real do que acontecerá com vários usuários acessando o banco de dados e ativos locais.

SSDs modernos geralmente ficam na faixa de 500 MB/s+ de leitura sequencial e 475 MB/s+ de gravação sequencial — o que não está muito longe dos números acima. A diferença de desempenho em leituras/gravações aleatórias, no entanto, é enorme: o mesmo SSD pode atingir até 400 MB/s em um teste 4KiBQ8T8, enquanto o Lexar cai para os baixos dois dígitos, em 15 MB/s ou algo assim. Gravações aleatórias são ainda piores, com o SSD ainda sustentando até 300 MB/s, enquanto um cartão microSD cai bem para os baixos dígitos únicos (2 MB/s).

Sou um grande fã do rPi e os uso em vários lugares, mas eles ainda estão longe de onde precisamos que estejam.

É um cartão Sandisk de 64 GB, avaliado A2, que custou 20 dólares (na Suécia). Só queria provar que a velocidade sequencial pura não é tão ruim quanto você fez parecer :slight_smile:

Se não funcionar no Raspberry Pi, mesmo com SSD externo nas portas USB 3, assumiria que rodar o banco de dados externamente resolveria esse gargalo específico. Mas estou enviesado, pois gosto da ideia de montar e fazer funcionar um cluster ARM com as agora reais interfaces de rede de 1 Gbit/s no Pi 4. Também gosto de desafiar a mentalidade de “não funciona” em geral :wink:

Se você investir tempo, dinheiro e recursos suficientes em qualquer coisa, consegue fazê-la funcionar.

As solicitações para rodar o Discourse em um Raspberry Pi nos últimos anos geralmente vêm de usuários que já têm um Pi e não querem gastar nada além disso. É basicamente isso que estamos explorando aqui.

Assim que você começar a adicionar SSDs externos e transferir o banco de dados para outro sistema, você não está mais falando sobre hospedar o Discourse em um Raspberry Pi de verdade. :wink:

Certo. Concordo que geralmente você ainda recebe o que paga :slightly_smiling_face:

Pegue um Raspberry Pi 4 com 4GB ou 8GB de RAM :wink: e depois uma cartão MicroSD (INDUSTRIAL) na Amazon… eBay…
Escreva a imagem do Docker no site: https://blog.hypriot.com/ :smiling_face_with_three_hearts: :slightly_smiling_face:, especificamente na seção: Download, última versão.
Depois de gravar a imagem no cartão SD, insira-o no Raspberry Pi e conecte-se via SSH (as credenciais padrão para SSH do Docker são: “pirate” e “hypriot” → Usuário: pirate, Senha: hypriot). Obviamente, após conectar via SSH, altere as credenciais conforme sua preferência usando o comando → sudo raspi-config, e reinicie o Raspberry Pi.
Após reiniciar, conecte-se novamente via SSH e instale o “Discourse” seguindo este guia: https://linoxide.com/how-tos/install-discourse-docker-container/ :wink; Obviamente, você começará a partir do ponto 2), pois o Docker já foi instalado desde o início.

Divirta-se!

Olá Massym,

Segui suas instruções, instalei o Hypriot, etc., mas obtive o seguinte erro:

  $ ./launcher bootstrap app
  standard_init_linux.go:211: exec user process caused "exec format error"
  Sua instalação do Docker não está funcionando corretamente

  Veja: https://meta.discourse.org/t/docker-error-on-bootstrap/13657/18?u=sam

Alguma ideia?

Obrigado.

Agradeço muito sua resposta rápida, Rafael.

Parece que eu me enganei ao inferir que o Massym conseguiu executar o Discourse em um Raspberry Pi 4, pois, ao reler a postagem dele, ele não afirma isso especificamente. Foi uma perda de tempo da minha parte, mas pelo menos serviu como um exercício de aprendizado.

Qual componente específico do Discourse não é suportado? Eu e, tenho certeza, muitos outros estaríamos ansiosos para fazê-lo funcionar.

Obrigado.

Eu arriscaria um palpite de que o Discourse está usando imagens construídas para x86_64, como Redis, Ruby e PostgreSQL.

É a nossa biblioteca V8/MiniRacer, que executa JavaScript no servidor.

Agora que a Apple introduziu a família de processadores M1, tenho certeza de que conseguiremos fazê-la funcionar no ARM em breve.

Mal posso esperar para ver isso funcionando. Um dos meus fóruns, rodando no Discourse, é o último item que tenho pendente enquanto migro para um cluster de Raspberry Pi 4, que consome infinitamente menos energia do que o servidor baseado em Intel.

Bump, houve algum avanço com o gem v8 para ARM? Tentei compilar as imagens, mas sempre travava nesse gem. É um pouco intrincado; falha principalmente porque os scripts tentam baixar ferramentas X86_64 (para a compilação) e executá-las em ARM…

Veja:

ARM no servidor (e em Ruby) fará muito progresso muito em breve, graças ao incrível chip M1 da Apple finalmente aparecendo em um laptop real.

Mas o próprio Raspberry Pi — mesmo o muito melhorado modelo 4 — é lamentavelmente subpotente para ser um servidor. De acordo com esta postagem e os resultados do Speedometer 2.0…

3B+ Buster, kernel de 32 bits
9,49/9,66/9,46 = 9,54 Chromium

4B4 Buster, kernel de 64 bits (32 bits teve resultados iguais)
17,2/17,0/17,1 = 17,1 Chromium

Smartphone OnePlus 7 Pro (Snapdragon 855, 8 GB de RAM, Android/Oxygen OS 10)
36,3/35,9/36,8 = 36,3 Chrome

HP Chromebook x2 (dual core M3-7Y30)
68,2/68,6/68,0 = 68,3 Chrome OS 78

Laptop de jogos econômico Legion Y520 (i7-7700HQ Win10x64)
87,4/86,8/87,3 = 87,2 Chrome

Com base nesses números, eu hipotetizo que um futuro Raspberry Pi 5 teórico, se ele…

  • pelo menos dobrar o desempenho em relação ao Pi 4
  • tiver um mini SSD M.2 de algum tipo para armazenamento, não um cartão SD

.. poderia talvez ser um servidor Discourse viável para um fórum Discourse com tráfego muito baixo?

Em breve será visto. Tenho executado outras aplicações Rails em Raspberry Pi 4 e fiquei satisfeito com o desempenho, mas devo admitir que elas eram muito mais simples que o Discourse.

Isso agora é suportado