Instalação de Software · 12 min read · Oct 14, 2025

Como Instalar o Fórum NodeBB no Ubuntu 22.04

NodeBB é um software de fórum moderno alimentado pelo framework Node.js. Ele usa MongoDB, PostgreSQL ou Redis para armazenar dados. Utiliza web sockets para notificações em tempo real e interações instantâneas. Possui recursos modernos como integração com redes sociais, suporte a plugins, responsividade móvel e APIs REST completas de leitura/escrita.

NodeBB está disponível tanto como um projeto de auto-hospedagem de código aberto quanto como um serviço em nuvem. Neste tutorial, você aprenderá como instalar o fórum NodeBB usando Nginx em um servidor Ubuntu 22.04. O Ubuntu 22.04 não suporta oficialmente o MongoDB; portanto, usaremos o PostgreSQL para armazenar dados.

Pré-requisitos

  • Um servidor rodando Ubuntu 22.04 com um mínimo de 1GB de RAM.
  • Um usuário não-root com privilégios sudo.
  • O Firewall descomplicado (UFW) está habilitado e em execução.
  • Um nome de domínio totalmente qualificado (FQDN) apontando para o servidor, como forum.example.com.
  • Tudo está atualizado. $ sudo apt update && sudo apt upgrade

Passo 1 - Configurar o Firewall

Antes de instalar qualquer pacote, o primeiro passo é configurar o firewall para permitir conexões HTTP e HTTPS.

Verifique o status do firewall.

$ sudo ufw status

Você deve ver algo como o seguinte.

Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)

Permita as portas HTTP e HTTPS.

$ sudo ufw allow http
$ sudo ufw allow https

Verifique o status novamente para confirmar.

$ sudo ufw status
Status: active

To                         Action      From
--                         ------      ----
OpenSSH                    ALLOW       Anywhere
80/tcp                     ALLOW       Anywhere
443                        ALLOW       Anywhere
OpenSSH (v6)               ALLOW       Anywhere (v6)
80/tcp (v6)                ALLOW       Anywhere (v6)
443 (v6)                   ALLOW       Anywhere (v6)

Passo 2 - Instalar PostgreSQL

O primeiro passo para instalar o PostgreSQL é adicionar sua chave GPG.

$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /usr/share/keyrings/postgresql-key.gpg >/dev/null

Adicione o repositório APT à sua lista de fontes.

$ sudo sh -c 'echo "deb [signed-by=/usr/share/keyrings/postgresql-key.gpg arch=amd64] http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'

Atualize o repositório do sistema.

$ sudo apt update

Agora, você pode instalar o PostgreSQL.

$ sudo apt install postgresql postgresql-contrib

Verifique o status do serviço PostgreSQL.

$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS
     Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled)
     Active: active (exited) since Sat 2022-09-10 06:25:11 UTC; 13s ago
    Process: 12083 ExecStart=/bin/true (code=exited, status=0/SUCCESS)
   Main PID: 12083 (code=exited, status=0/SUCCESS)
        CPU: 1ms

Sep 10 06:25:11 nodebb systemd[1]: Starting PostgreSQL RDBMS...
Sep 10 06:25:11 nodebb systemd[1]: Finished PostgreSQL RDBMS.

Passo 3 - Configurar PostgreSQL

Precisamos definir uma senha para o usuário administrativo padrão do Postgres postgres. Primeiro, faça login no Shell do Postgres.

$ sudo -u postgres psql

Digite o seguinte comando para alterar a senha.

postgres=# \password postgres

Você será solicitado a inserir uma nova senha.

Enter new password for user "postgres":
Enter it again:

Crie um novo usuário para o NodeBB.

postgres=# CREATE ROLE nbbuser WITH LOGIN ENCRYPTED PASSWORD 'YourNodeBBPassword';

Crie um novo banco de dados para o NodeBB.

postgres=# CREATE DATABASE nodebbdb OWNER nbbuser;

Digite \q para sair do shell.

postgres=# \q

Passo 4 - Instalar Node.js

Como o fórum NodeBB é escrito usando o framework Node.js, precisamos instalá-lo para que funcione.

Emita os seguintes comandos para instalar a versão LTS (v16.x) do Node.js.

$ curl -sL https://deb.nodesource.com/setup_lts.x | sudo -E bash -
$ sudo apt install nodejs

Verifique a instalação do Node.js e NPM.

$ node -v
v16.17.0
$ npm -v
8.15.0

Passo 5 - Instalar Git

Antes de prosseguirmos para instalar o NodeBB, precisamos instalar o Git. Execute o seguinte comando para instalar o Git.

$ sudo apt install git

Execute os seguintes comandos para realizar a configuração inicial do Git.

$ git config --global user.name "Your Name"
$ git config --global user.email "[email protected]"

Passo 6 - Instalar NodeBB

Não é aconselhável executar o NodeBB como usuário root. Crie um usuário de sistema sem privilégios e sem senha.

$ sudo adduser nodebb --disabled-password

Pule todas as outras opções.

Crie o diretório onde seu fórum NodeBB ficará.

$ sudo mkdir /var/www/html/nodebb -p

Altere a propriedade da pasta para o usuário recém-criado.

$ sudo chown -R nodebb:nodebb /var/www/html/nodebb

Faça login no usuário recém-criado.

$ sudo su - nodebb

Mude para o diretório de instalação do NodeBB.

$ cd /var/www/html/nodebb

Para instalar o NodeBB, primeiro, precisamos clonar seu repositório do GitHub.

Clone o NodeBB para o diretório /var/www/nodebb. O ponto no final do comando refere-se ao diretório atual.

$ git clone -b v2.x https://github.com/NodeBB/NodeBB.git .

Aqui clonamos o branch v2.x do NodeBB, que abriga a versão estável mais recente do NodeBB. Você pode encontrar o branch estável mais recente na página de Branches Mais Recentes do NodeBB.

O NodeBB vem com uma utilidade de linha de comando. Use o seguinte comando para instalar o NodeBB.

$ ./nodebb setup

Você pode pressionar enter para escolher o valor padrão.

2022-09-10T10:10:27.957Z [2633] - info: NodeBB Setup Triggered via Command Line

Welcome to NodeBB v2.5.2!

This looks like a new installation, so you'll have to answer a few questions about your environment before we can proceed.
Press enter to accept the default setting (shown in brackets).
URL used to access this NodeBB (http://localhost:4567) https://forum.example.com
Please enter a NodeBB secret (44fd62bc-5047-4414-a4ca-83105740b624)
Would you like to submit anonymous plugin usage to nbbpm? (yes) no
Which database to use (mongo) postgres
2022-09-10T10:10:43.237Z [2633] - info:
Now configuring postgres database:
Host IP or address of your PostgreSQL instance (127.0.0.1)
Host port of your PostgreSQL instance (5432)
PostgreSQL username nbbuser
Password of your PostgreSQL database
PostgreSQL database name (nodebb) nodebbdb
Enable SSL for PostgreSQL database access (false)
........

Para o valor da URL usada para acessar este NodeBB, escolha a URL final que você deseja acessar o fórum. Se você acessar o fórum pelo IP do seu servidor, insira isso ou insira o domínio completo do fórum. Aqui, vamos inserir https://forum.example.com. Escolha não como resposta à pergunta sobre enviar o uso anônimo de plugins. Digite postgres como o tipo de banco de dados.

Em seguida, escolha o IP e a porta padrão pressionando enter e insira seu nome de usuário do PostgreSQL, que é quando você insere nbbuser e a senha que você escolheu anteriormente para esse nome de usuário ao configurar o MongoDB. Seu banco de dados nodebbdb deve ser escolhido.

Você também será solicitado a criar um usuário administrador e seus detalhes.

.....
2022-09-10T10:11:14.121Z [2633] - warn: No administrators have been detected, running initial user setup

Administrator username navjot
Administrator email address [email protected]
Password
Confirm Password
.....
....
2022-09-10T10:14:28.160Z [2633] - info: [build] Asset compilation successful. Completed in 118.777sec.

     =================================================================================================================================================================

NodeBB Setup Completed. Run "./nodebb start" to manually start your NodeBB server.

Uma vez que a configuração esteja completa, execute o seguinte comando para iniciar o NodeBB.

$ ./nodebb start
Starting NodeBB
  "./nodebb stop" to stop the NodeBB server
  "./nodebb log" to view server output
  "./nodebb help" for more commands

Saia do usuário NodeBB.

$ exit

Passo 7 - Executar o NodeBB como um Serviço do Sistema

O serviço NodeBB não será executado após uma reinicialização do sistema. Para evitar iniciar o NodeBB toda vez, precisamos instalá-lo como um Serviço do Sistema.

Pare o serviço NodeBB primeiro. Mude para o diretório do NodeBB e, em seguida, execute o comando diretamente usando o comando sudo -u.

$ cd /var/www/html/nodebb  
$ sudo -u nodebb ./nodebb stop

Execute o seguinte comando para criar e editar o arquivo de configuração da unidade nodebb.service do systemd.

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

Cole o seguinte código no editor.

[Unit]
Description=NodeBB
Documentation=https://docs.nodebb.org
After=system.slice multi-user.target postgresql.service

[Service]
Type=simple
User=nodebb

StandardError=syslog
SyslogIdentifier=nodebb

Environment=NODE_ENV=production
WorkingDirectory=/var/www/html/nodebb
ExecStart=/usr/bin/env node loader.js --no-silent --no-daemon
Restart=always

[Install]
WantedBy=multi-user.target

Aqui escolhemos o nome de usuário como nodebb, que criamos no Passo 6, e o caminho que escolhemos para instalar o NodeBB.

Habilite o serviço NodeBB.

$ sudo systemctl enable nodebb

Inicie o serviço NodeBB.

$ sudo systemctl start nodebb

Verifique o status do serviço.

$ sudo systemctl status nodebb
? nodebb.service - NodeBB
     Loaded: loaded (/etc/systemd/system/nodebb.service; enabled; vendor preset: enabled)
     Active: active (running) since Sun 2022-09-11 21:41:07 UTC; 2s ago
       Docs: https://docs.nodebb.org
   Main PID: 26844 (node)
      Tasks: 18 (limit: 2237)
     Memory: 94.1M
        CPU: 2.114s
     CGroup: /system.slice/nodebb.service
             ??26844 node loader.js --no-silent --no-daemon
             ??26855 /usr/bin/node /var/www/html/nodebb/app.js

Sep 11 21:41:07 forum systemd[1]: Started NodeBB.
Sep 11 21:41:07 forum nodebb[26844]: NodeBB v2.5.2 Copyright (C) 2013-2022 NodeBB Inc.
Sep 11 21:41:07 forum nodebb[26844]: This program comes with ABSOLUTELY NO WARRANTY.
Sep 11 21:41:07 forum nodebb[26844]: This is free software, and you are welcome to redistribute it under certain conditions.
Sep 11 21:41:07 forum nodebb[26844]: For the full license, please visit: http://www.gnu.org/copyleft/gpl.html
Sep 11 21:41:07 forum nodebb[26844]: Clustering enabled: Spinning up 1 process(es).
Sep 11 21:41:08 forum nodebb[26855]: 2022-09-11T21:41:08.002Z [4567/26855] - info: Initializing NodeBB v2.5.2 https://forum.example.com

Passo 8 - Instalar Nginx

O Ubuntu 22.04 vem com uma versão mais antiga do Nginx. Para instalar a versão mais recente, você precisa baixar o repositório oficial do Nginx.

Importe a chave de assinatura do Nginx.

$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \
| sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null

Adicione o repositório para a versão estável do Nginx.

$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg arch=amd64] \
http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \
| sudo tee /etc/apt/sources.list.d/nginx.list

Atualize os repositórios do sistema.

$ sudo apt update

Instale o Nginx.

$ sudo apt install nginx

Verifique a instalação.

$ nginx -v
nginx version: nginx/1.22.0

Inicie o servidor Nginx.

$ sudo systemctl start nginx

Passo 9 - Instalar SSL

Precisamos instalar o Certbot para gerar o certificado SSL. Você pode instalar o Certbot usando o repositório do Ubuntu ou pegar a versão mais recente usando a ferramenta Snapd. Usaremos a versão Snapd.

O Ubuntu 22.04 vem com o Snapd instalado por padrão. Execute os seguintes comandos para garantir que sua versão do Snapd esteja atualizada.

$ sudo snap install core
$ sudo snap refresh core

Instale o Certbot.

$ sudo snap install --classic certbot

Use o seguinte comando para garantir que o comando Certbot possa ser executado criando um link simbólico para o diretório /usr/bin.

$ sudo ln -s /snap/bin/certbot /usr/bin/certbot

Execute o seguinte comando para gerar um Certificado SSL.

$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [email protected] -d forum.example.com

O comando acima fará o download de um certificado para o diretório /etc/letsencrypt/live/forum.example.com em seu servidor.

Gere um certificado de grupo Diffie-Hellman.

$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096

Para verificar se a renovação do SSL está funcionando bem, faça um teste do processo.

$ sudo certbot renew --dry-run

Se você não ver erros, está tudo pronto. Seu certificado será renovado automaticamente.

Passo 10 - Configurar Nginx

Abra o arquivo /etc/nginx/nginx.conf para edição.

$ sudo nano /etc/nginx/nginx.conf

Adicione a seguinte linha antes da linha include /etc/nginx/conf.d/*.conf;.

server_names_hash_bucket_size  64;

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Crie e abra o arquivo /etc/nginx/conf.d/nodebb.conf para edição.

$ sudo nano /etc/nginx/conf.d/nodebb.conf

Cole o seguinte código nele. Substitua forum.example.com pelo seu nome de domínio. Certifique-se de que o valor de client_max_body_size esteja definido como 25MB para definir o tamanho de upload para o fórum.

server {
  listen 80 default_server;
  server_name forum.example.com;
  return 301 https://$server_name$request_uri;
}

server {
   listen 443 ssl http2;
   server_name forum.example.com;

   http2_push_preload on; # Enable HTTP/2 Server Push

   ssl_certificate /etc/letsencrypt/live/forum.example.com/fullchain.pem;
   ssl_certificate_key /etc/letsencrypt/live/forum.example.com/privkey.pem;
   ssl_trusted_certificate /etc/letsencrypt/live/forum.example.com/chain.pem;
   ssl_session_timeout 1d;

   # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC).
   ssl_protocols TLSv1.2 TLSv1.3;

   # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to
   # prevent replay attacks.
   #
   # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data
   ssl_early_data on;

   ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384';
   ssl_prefer_server_ciphers on;
   ssl_session_cache shared:SSL:50m;

   # OCSP Stapling ---
   # fetch OCSP records from URL in ssl_certificate and cache them
   ssl_stapling on;
   ssl_stapling_verify on;
   ssl_dhparam /etc/ssl/certs/dhparam.pem;
   client_max_body_size 25M;

   gzip            on;
   gzip_min_length 1000;
   gzip_proxied    off;
   gzip_types      text/plain application/xml text/javascript application/javascript application/x-javascript text/css application/json;

   add_header X-Early-Data $tls1_3_early_data;

   location / {       
       # Socket.IO Support
       proxy_set_header Connection "upgrade";
       proxy_set_header Upgrade $http_upgrade;
       proxy_http_version 1.1;

       proxy_set_header Host $http_host;
       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 X-NginX-Proxy true;
       proxy_set_header X-Frame-Options SAMEORIGIN;

       proxy_pass http://127.0.0.1:4567;  # no trailing slash
       proxy_redirect off;
   }

   location @nodebb {
       proxy_pass http://127.0.0.1:4567;
   }

   location ~ ^/assets/(.*) {
       root /var/www/html/nodebb/;
       try_files /build/public/$1 /public/$1 @nodebb;
   }
}

# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the "$ssl_early_data" variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data {
  "~." $ssl_early_data;
  default "";
}

Salve o arquivo pressionando Ctrl + X e digitando Y quando solicitado.

Verifique sua configuração do Nginx.

$ sudo nginx -t

Reinicie o servidor Nginx.

$ sudo systemctl restart nginx

Passo 11 - Acessar e Configurar o Fórum

Você pode acessar o fórum visitando a URL https://forum.example.com em seu navegador. Você verá a seguinte página.

Página Inicial do Fórum NodeBB

Clique na página de login e insira as credenciais do administrador que você criou no passo 6.

Página de Login do NodeBB

Você estará logado. Em seguida, clique no ícone mais à direita na parte superior da barra de menu para acessar o painel de administração.

A partir daqui, você pode gerenciar o fórum. Expanda-o instalando temas e plugins.

Painel de Administração do Fórum NodeBB

Após instalar qualquer tema e plugin, você deve reconstruir e reiniciar o fórum usando o botão no canto superior direito do painel de administração, conforme mostrado aqui.

Certifique-se de configurar seu serviço de e-mail indo para Painel >> Configurações >> E-mail para que os usuários do seu fórum possam receber e-mails. Selecione as seguintes configurações para garantir as melhores configurações de entrega de e-mail.

Configurações de E-mail do Fórum NodeBB

Role para baixo na página e selecione um remetente personalizado no menu suspenso ou use Remetente personalizado se seu serviço SMTP não estiver na lista. Para nosso tutorial, estamos usando o serviço SES.

Configurações SMTP do Fórum NodeBB

Clique no ícone de disquete para salvar as configurações no canto inferior direito.

Role para baixo até o final da página para enviar um e-mail de teste. Por padrão, ele enviará um modelo de e-mail banido. Você pode selecionar qualquer outro modelo de e-mail para testar. Enviaremos o e-mail de boas-vindas.

Teste de E-mail do Fórum NodeBB

Você receberá um e-mail de teste conforme mostrado abaixo confirmando as configurações.

E-mail de Teste do Fórum NodeBB

Conclusão

Isso conclui nosso tutorial sobre como instalar o fórum NodeBB usando o banco de dados PostgreSQL e Nginx em um servidor Ubuntu 22.04. Se você tiver alguma dúvida, poste nos comentários abaixo.

Share: X/Twitter LinkedIn

Receba novas postagens na sua caixa de entrada

Sem spam. Cancele a assinatura a qualquer momento.