Pesquisa de site

Como instalar o NodeBB com proxy Nginx no Debian 12


Nesta página

  1. Pré-requisitos
  2. Instalando Dependências
  3. Configurando o servidor MongoDB
  4. Instalando o NodeBB
  5. Configurando o Nginx como proxy reverso
  6. Protegendo o NodeBB com HTTPS
  7. Acessando o NodeBB
  8. Conclusão

NodeBB é um software de fórum de código aberto escrito em JavaScript e Node.js. Ele usa MongoDB como banco de dados padrão. O NodeBB oferece vários recursos, como notificações em tempo real via web socket, integração de mídia social e também APIs REST completas.

Este guia mostrará como instalar o NodeBB em um servidor Debian 12 com MongoDB como banco de dados e Nginx como proxy reverso.

Pré-requisitos

Antes de começar, certifique-se de ter o seguinte:

  • Um servidor Debian 12.
  • Um usuário não root com privilégios sudo.
  • Um nome de domínio apontado para um endereço IP de servidor.

Instalando Dependências

Para iniciar o processo, você instalará dependências para NodeBB. Isso inclui o servidor web Node.js, NPM (Node.js Package Manager) e Nginx do repositório Debian. Quanto ao MongoDB, você irá instalá-lo através do repositório oficial do MongoDB.

Primeiro, execute o seguinte comando para instalar os pacotes gnupg e curl em seu sistema Debian.

sudo apt install gnupg curl -y

Adicione a chave GPG e o repositório do MongoDB com o seguinte comando:

curl -fsSL https://pgp.mongodb.com/server-7.0.asc | \
sudo gpg -o /usr/share/keyrings/mongodb-server-7.0.gpg \
--dearmor
echo "deb [ signed-by=/usr/share/keyrings/mongodb-server-7.0.gpg ] http://repo.mongodb.org/apt/debian bookworm/mongodb-org/7.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-7.0.list

Agora atualize seu índice de pacotes Debian e instale MongoDB, Node.js, NPM, Nginx e Git. Insira Y para confirmar a instalação.

sudo apt update
sudo apt install mongodb-org nodejs npm git nginx

Após a conclusão da instalação, recarregue o gerenciador systemd com o seguinte:

sudo systemctl daemon-reload

Agora execute o comando abaixo para iniciar, habilitar e verificar o status do serviço MongoDB.

sudo systemctl enable --now mongod
sudo systemctl status mongod

A saída a seguir confirma que o MongoDB está em execução.

A seguir, verifique o status do serviço Nginx com o comando abaixo. Você deverá ver que o Nginx está habilitado e em execução no seu sistema.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

Por último, verifique a versão do Node.js e do NPM com o seguinte:

sudo node-v
sudo npm -v

Você pode ver abaixo que o Node.js 18 e o NPM 9 estão instalados.

Configurando o servidor MongoDB

Nesta seção, você habilitará a autenticação MongoDB, criará um novo usuário administrador para MongoDB e, em seguida, criará um novo banco de dados e usuário para instalação do NodeBB.

Faça login no servidor MongoDB com o comando abaixo.

mongosh

Execute a consulta a seguir para mudar para o banco de dados 'admin' e criar um novo usuário administrador 'admin' para MongoDB. Certifique-se de alterar a senha 'MongoDBAdminPass' pela nova senha.

use admin
db.createUser( { user: "admin", pwd: "MongoDBAdminPass", roles: [ { role: "root", db: "admin" } ] } )

Em seguida, crie um novo banco de dados e o usuário 'nodebb' com a senha 'NodeBBPassword'. Este banco de dados e usuário serão utilizados para a instalação do NodeBB.

use nodebb
db.createUser( { user: "nodebb", pwd: "NodeBBPassword", roles: [ { role: "readWrite", db: "nodebb" }, { role: "clusterMonitor", db: "admin" } ] } )

Agora digite 'quit()' para sair do MongoDB.

Em seguida, abra a configuração do MongoDB '/etc/mongod.conf' com o editor nano.

sudo nano /etc/mongod.conf

Habilite a autenticação MongoDB adicionando a seguinte configuração.

security:
 authorization: enabled

Salve e feche o arquivo quando terminar.

Agora execute o comando abaixo para reiniciar o serviço MongoDB e aplicar as novas alterações. Após a execução do comando, a autenticação MongoDB será habilitada.

sudo systemctl restart mongod

Para garantir que a configuração do MongoDB seja bem-sucedida, faça login no MongoDB com o usuário 'nodebb' no banco de dados 'nodebb'. Digite sua senha quando solicitado.

mongosh "mongodb://127.0.0.1:27017" --username nodebb --authenticationDatabase nodebb

Após fazer login, execute a consulta abaixo para verificar sua conexão e sair do MongoDB.

db.runCommand( { connectionStatus: 1, showPrivileges: false } )
quit()

Na saída a seguir, você pode ver o autenticado como 'nodebb' no banco de dados 'nodebb'.

Instalando o NodeBB

Com a configuração do MongoDB concluída, você baixará e instalará o NodeBB. Você criará um usuário dedicado para o NodeBB, baixará e instalará as dependências do NodeBB e, em seguida, configurará um arquivo de serviço para a instalação do NodeBB.

Adicione um novo usuário do sistema 'nodebb' com o diretório inicial padrão '/opt/nodebb' usando o comando a seguir.

sudo adduser --system --no-create-home --home=/opt/nodebb --group nodebb

Agora baixe a fonte NodeBB v3 para o diretório '/opt/nodebb' usando git e altere a propriedade do diretório '/opt/nodebb' para o usuário 'nodebb'.

git clone -b v3.x https://github.com/NodeBB/NodeBB.git /opt/nodebb
sudo chown -R nodebb:nodebb /opt/nodebb

Vá para o diretório '/opt/nodebb' e configure sua instalação do NodeBB com o comando abaixo.

cd /opt/nodebb
sudo su -s /bin/bash -c "./nodebb setup" nodebb
  • Insira seu nome de domínio para NodeBB.
  • Deixe o segredo do NodeBB como padrão e pressione ENTER.
  • Digite não para desativar o uso anônimo do plugin.
  • Selecione o banco de dados como MongoDB.
  • Insira o banco de dados MongoDB com a string de URL: mongodb://nodebb:[email :27017/nodebb.
  • Insira seu usuário administrador e endereço de e-mail para NodeBB.
  • Insira sua senha e repita.

Após a conclusão do processo, você verá a saída 'NodeBB Setup Completed'. Você também pode ver o comando para executar o NodeBB.

A seguir, execute o comando abaixo para iniciar ou parar o NodeBB. Você pode usar isso quando precisar iniciar a parada do NodeBB manualmente.

sudo su -s /bin/bash -c "./nodebb start" nodebb
sudo su -s /bin/bash -c "./nodebb stop" nodebb

Para facilitar o gerenciamento do NodeBB, você criará um novo arquivo de serviço systemd para o NodeBB. Com isso, sua instalação do NodeBB estará rodando em segundo plano e você poderá gerenciá-la com o comando systemctl.

Crie um novo arquivo de serviço systemd '/etc/systemd/system/nodebb.service' com o comando do editor nano.

sudo nano /etc/systemd/system/nodebb.service

Insira a seguinte configuração no arquivo:

[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target mongod.service
[Service]
Type=simple
User=nodebb
StandardError=syslog
SyslogIdentifier=nodebb
Environment=NODE_ENV=production
WorkingDirectory=/opt/nodebb
ExecStart=/usr/bin/env node loader.js --no-silent --no-daemon
Restart=always
[Install]
WantedBy=multi-user.target

Salve e feche o arquivo.

Agora execute o comando abaixo para recarregar o gerenciador systemd e aplicar o novo arquivo de serviço NodeBB.

sudo systemctl daemon-reload

Depois disso, inicie e habilite o serviço 'nodebb' com o seguinte comando systemctl.

sudo systemctl start nodebb
sudo systemctl enable nodebb

Verifique o serviço 'nodebb' com o seguinte para garantir que o serviço esteja em execução.

sudo systemctl status nodebb

Você pode ver abaixo que o NodeBB está sendo executado em segundo plano como um serviço systemd.

Configurando o Nginx como proxy reverso

Neste ponto, o NodeBB está rodando em segundo plano na porta ‘4567’. Agora você criará um novo bloco de servidor Nginx que será usado como proxy reverso para seu fórum NodeBB. certifique-se de que seu nome de domínio esteja apontado para o endereço IP do servidor.

Crie uma nova configuração de bloco do servidor Nginx '/etc/nginx/sites-available/nodebb' com o editor nano.

sudo nano /etc/nginx/sites-available/nodebb

Adicione a seguinte configuração para configurar o Nginx como proxy reverso para NodeBB. Certifique-se de alterar o parâmetro server_name com o seu nome de domínio.

server {
 listen 80;
 server_name forum.howtoforge.local;
 location / {
 proxy_set_header X-Real-IP $remote_addr;
 proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
 proxy_set_header X-Forwarded-Proto $scheme;
 proxy_set_header Host $http_host;
 proxy_set_header X-NginX-Proxy true;
 proxy_pass http://127.0.0.1:4567;
 proxy_redirect off;
 # Socket.IO Support
 proxy_http_version 1.1;
 proxy_set_header Upgrade $http_upgrade;
 proxy_set_header Connection "upgrade";
 }
}

Quando terminar, salve o arquivo e saia.

Agora ative o arquivo de bloco do servidor ‘nodebb’ e teste sua sintaxe Nginx com o seguinte:

sudo ln -s /etc/nginx/sites-available/nodebb /etc/nginx/sites-enabled/
sudo nginx -t

Se você tiver a sintaxe Nginx adequada, verá uma saída 'sintaxe está ok - teste bem-sucedido'.

Por último, execute o comando abaixo para reiniciar o serviço Nginx e aplicar suas alterações.

sudo systemctl restart nginx

Protegendo o NodeBB com HTTPS

Neste guia, você protegerá o NodeBB com HTTPS por meio de Certbot e Letsencrypt. Se estiver usando um domínio local, você pode ignorar isso ou também pode gerar certificados autoassinados.

Instale o plugin Certbot e Certbot Nginx com o seguinte comando apt. Digite Y para prosseguir com a instalação.

sudo apt install certbot python3-certbot-nginx

Agora execute o comando certbot abaixo para gerar os certificados SSL para o seu nome de domínio NodeBB. Certifique-se de alterar o endereço de e-mail e o nome de domínio com suas informações.

sudo certbot --nginx --agree-tos --no-eff-email --redirect --hsts --staple-ocsp --email [email  -d forum.hwdomain.i

Após concluir o processo, sua instalação do NodeBB deverá ser protegida automaticamente com HTTPS. Seus certificados SSL/TLS estarão disponíveis no diretório '/etc/letsencrypt/live/domain.com'.

Acessando o NodeBB

Visite https://forum.howtoforge.local/ usando seu navegador e você verá a página de índice padrão do NodeBB como esta:

Na página inicial, clique no menu Login e será exibida a página de login do NodeBB. Digite seu usuário e senha de administrador e clique em Login.

Se for bem-sucedido, você verá o seguinte painel do usuário.

Clique no menu Admin para acessar o painel de administração do NodeBB como o seguinte:

Conclusão

Parabéns! Agora você instalou o NodeBB no servidor Debian 12. Você tem o NodeBB rodando com o banco de dados MongoDB e o proxy reverso Nginx. Você também protegeu o NodeBB com HTTPS por meio de Certbot e Letsencrypt.