Como instalar o NodeBB com proxy Nginx no Debian 12
Nesta página
- Pré-requisitos
- Instalando Dependências
- Configurando o servidor MongoDB
- Instalando o NodeBB
- Configurando o Nginx como proxy reverso
- Protegendo o NodeBB com HTTPS
- Acessando o NodeBB
- 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.