Guia para Configurar Ambiente de Desenvolvimento do Discourse - Windows 11

Olá a todos,

Depois de passar algum tempo tentando configurar um ambiente de desenvolvimento funcional no Windows 11 / WSL2, pensei em compartilhar os passos que segui.

Esta é minha primeira postagem aqui, então espero que seja útil para alguém :slight_smile: Sou um Administrador de Sistemas acostumado a trabalhar com Windows, então esta tem sido uma jornada interessante aprendendo Linux / Ruby / Discourse, etc.

Algumas coisas parecem ter mudado desde que o guia para Windows 10 foi escrito e encontrei alguns problemas ao longo do caminho (e, lendo os comentários, não fui o único!)

Posso confirmar que as instruções a seguir funcionaram na minha instalação do Windows 11 Pro 22H2 e também na minha build do Windows Insider da próxima versão do Windows 11 23H2 Release Preview.

Tentarei manter as instruções o mais curtas e diretas possível :slight_smile:

Preparação Inicial

  1. Verifique se há atualizações do WSL e instale-as, se aplicável. Em uma janela do Windows Powershell, use este comando:-

wsl.exe --update

  1. Instale o Ubuntu no WSL2 usando este comando:-

wsl.exe --install -d Ubuntu

  1. Siga as instruções na tela para criar o nome de usuário e a senha.

  2. Uma vez dentro do terminal do Ubuntu, verifique e instale todas as atualizações aplicáveis.

sudo apt update && sudo apt upgrade -y

  1. Agora que tudo está atualizado, podemos prosseguir :slight_smile:

Modificações do WSL

  1. Antes de clonar o Discourse, execute o seguinte comando para abrir o arquivo /etc/wsl.conf:-

sudo nano /etc/wsl.conf

  1. Na parte inferior do arquivo existente, adicione o seguinte, pressione Ctrl + X para salvar as alterações e pressione “Y” quando solicitado.
[automount]
enabled  = true
root     = /mnt/
options  = "metadata,umask=22,fmask=11"
  1. Feche completamente o terminal WSL e reabra-o para que essas alterações sejam aplicadas corretamente.

  2. Agora copie e cole o seguinte script de instalação de uma linha para configurar o ambiente de desenvolvimento. Dependendo da velocidade do seu computador e/ou conexão com a internet, isso pode levar um tempo para ser concluído, então vá tomar um café ou algo assim!

bash <(wget -qO- https://raw.githubusercontent.com/discourse/install-rails/master/linux)
  1. Inicie o serviço PostgreSQL:-
sudo service postgresql start
  1. Como estamos rodando no WSL2, recebi uma mensagem de aviso sobre a VM ficando sem memória, o que pode ser resolvido executando o seguinte:
sudo sysctl vm.overcommit_memory=1
  1. Execute o seguinte para que o redis-server reinicie automaticamente:-
redis-server --daemonize yes
  1. Clone o Discourse na pasta home:-
git clone https://github.com/discourse/discourse.git ~/discourse
  1. Mude para a pasta Discourse recém-criada:-
cd ~/discourse
  1. Execute os seguintes comandos (eu os fiz uma linha de cada vez) (Não tenho certeza se isso é necessário ou se eles podem ser copiados e colados de uma vez)
source ~/.bashrc

bundle install

yarn install
  1. Configure o ambiente:-
RAILS_ENV=development bundle exec rake db:create db:migrate
  1. Inicie o Discourse
DISCOURSE_HOSTNAME=localhost UNICORN_LISTENER=localhost:3000 bin/ember-cli -u
  1. Abra um terminal separado, mude para o diretório Discourse usando cd ~/discourse e execute rails admin:create - siga as instruções para configurar sua conta de usuário Admin.

  2. Acesse http://localhost:4200 em um navegador da web e o Discourse deverá estar funcionando :slight_smile:

10 curtidas

Esta parte pode falhar. Se falhar, clique em iniciar, digite ativar ou desativar recursos do Windows
Habilite a plataforma de máquina virtual
Reinicie

Retome os comandos.

4 curtidas

Obrigado por adicionar isso, Andrew!

Uma coisa muito importante com a qual lutei por um tempo para descobrir é que o repositório deve estar no sistema de arquivos WSL (ou seja, NÃO em /mnt/*). Caso contrário, você terá todos os tipos de erros estranhos ou uma instância muito, muito, muito lenta.

Isso deveria ser conhecimento comum, mas pela minha interação com outros desenvolvedores, meio que não é.

2 curtidas

Olá AliBenBongo :wave:

Obrigado por este guia.

Por curiosidade, você tentou Install Discourse on Windows for development mas encontrou problemas no Windows 11?

Segui este guia oficial há menos de dois meses para configurar minha instalação de desenvolvimento no Win11, e funcionou perfeitamente.

2 curtidas

Isso é interessante, sim, eu tentei esse guia primeiro e encontrei muitas mensagens de erro. Não me lembro especificamente, mas algumas das mensagens de erro foram mencionadas na seção de comentários desse mesmo tópico…

Acho que isso é bom no final, pois definitivamente ganhei mais conhecimento ao resolver o problema sozinho e depois escrever este guia! :slight_smile:

1 curtida

Provavelmente é uma pergunta boba, mas tenho que perguntar. Supondo que eu consiga fazer isso funcionar seguindo seu guia. Você acha que é possível fazer um proxy reverso disso para um domínio?

Não existem perguntas bobas, todos nós podemos sempre aprender algo novo! :slight_smile: Não tenho muita experiência com coisas de proxy reverso, exceto por usar o Nginx Proxy Manager em um contêiner Docker - talvez dê uma olhada nisso, pois ele faz a maior parte do trabalho pesado e até gera certificados SSL gratuitos através do Let’s Encrypt.

1 curtida

Você vai encontrar muitos pontos problemáticos, suspeito. A instalação de desenvolvimento não tem suporte para ser executada em produção.

Executar a instalação padrão na nuvem pode custar alguns dólares por mês, mas quanto vale o seu tempo?! Com isso, você pode estar pronto para funcionar em 30 minutos e terminar.

2 curtidas

Na verdade, foi o que eu fiz. Comecei com o Communiteq, também tentei o DigitalOcean, mas acabei optando pelo Contabo.

Acho que sou um lunático porque o que eu estava tentando fazer (só para ver se conseguia), rodando Ubuntu no HyperV, eu até consegui colocar a VM na mesma sub-rede, lol, mas não consegui fazer a verificação inicial do domínio funcionar. Acho que parte do problema é que já estou hospedando vários serviços na minha máquina host Windows e, consequentemente, estou redirecionando as portas 80/443 para o IP dessa máquina. Sei que está além do escopo deste tópico e não é suportado, mas você tem alguma experiência tentando fazer algo semelhante?

Deve-se notar que, se você ainda não tiver nenhum subsistema instalado, este comando não funcionará.

1 curtida

Fiquei preso na instalação do Ruby; isso me ajudou: ChatGPT - Ruby 3.2 Not Released

Olá, bem-vindo :wave:

Se você seguir as etapas deste guia, não precisará instalar o Ruby manualmente. O script “install-rails” fará isso automaticamente.

FYI, a versão mais recente do Ubuntu, 24.04, não parece funcionar e tive muitos problemas com ela

Portanto, ao instalar com o WSL, certifique-se de usar:

wsl.exe --install -d Ubuntu-22.04

Olá :waving_hand:, estou usando o WSL2 no Windows 11 e segui as etapas deste post para instalar uma instância de desenvolvimento local do Discourse. Encontrei alguns problemas, mas eventualmente consegui resolvê-los. Aqui está o que descobri:

(No início, tentei com ubuntu-20.04, mas tive um problema com a dependência ausente libwebp7, que é necessária durante a instalação do ImageMagick. Parece que libwebp7 não está disponível para o ubuntu-20.04) :right_arrow: Então decidi usar ubuntu-22.04 em vez disso, o que funcionou para mim.

Seguindo o guia de @AliBenBongo na postagem inicial, tudo antes da etapa 9 funcionou como esperado. :+1:

Na etapa 9, algumas alterações foram necessárias

Alguns dos recursos em https://raw.githubusercontent.com/discourse/install-rails/master/linux não estão atualizados, parece:

  • Tive que instalar o Ruby 3.3.x em vez do 3.2.1, alterando ruby_version=“3.2.1” para ruby_version=“3.3.9”
  • Tive que instalar o Node 20 em vez do 18, alterando curl -sL https://deb.nodesource.com/setup_18.x | sudo -E bash - para curl -sL https://deb.nodesource.com/setup_20.x | sudo -E bash -

Na etapa 15, você precisa executar pnpm install em vez de yarn install

Em seguida, ao executar as migrações na etapa 16, ocorreu um erro em algumas migrações dependendo da extensão Postgres pgvector. Então, segui o guia de instalação do Linux aqui: https://github.com/pgvector/pgvector/blob/master/README.md

:warning: Para garantir, é melhor copiar os comandos diretamente do arquivo readme. No entanto, se você estiver curioso, é isso que funcionou para mim:

git clone --branch v0.8.0 https://github.com/pgvector/pgvector.git
cd pgvector
make
sudo make install

Depois disso, consegui executar as migrações na etapa 16 e concluí a instalação seguindo o restante do guia. :tada:

1 curtida