Instalar e proteger o MongoDB 8.0 num VPS Ubuntu 24.04

2 min
Alojamento VPS/VDS

O MongoDB é uma base de dados orientada a documentos muito usada em APIs, aplicações Node.js e análise de dados. O Ubuntu não a inclui nos seus repositórios, por isso instala-se a partir do repositório oficial do MongoDB. Este guia configura-o num VPS Linux Infrawire, ativa a autenticação e limita quem lhe pode aceder.

📋 Pré-requisitos

  • Um VPS com Ubuntu 24.04 (noble) em x86_64 ou ARM64 e acesso SSH como root (o IP e a palavra-passe root estão na sua área de cliente)
  • Um CPU que exponha o conjunto de instruções AVX (obrigatório desde o MongoDB 5.0): grep -c avx /proc/cpuinfo deve devolver um número superior a 0
  • Recomendam-se pelo menos 2 GB de RAM

1. Adicionar o repositório oficial

Importe a chave de assinatura e declare o repositório para o Ubuntu 24.04.

Bash
apt update && apt install -y curl gnupg curl -fsSL https://www.mongodb.org/static/pgp/server-8.0.asc | gpg -o /usr/share/keyrings/mongodb-server-8.0.gpg --dearmor echo 'deb [ arch=amd64,arm64 signed-by=/usr/share/keyrings/mongodb-server-8.0.gpg ] https://repo.mongodb.org/apt/ubuntu noble/mongodb-org/8.0 multiverse' > /etc/apt/sources.list.d/mongodb-org-8.0.list

2. Instalar e iniciar o serviço

Bash
apt update apt install -y mongodb-org systemctl enable --now mongod systemctl status mongod --no-pager

O metapacote mongodb-org instala o servidor (mongod), a consola (mongosh) e as ferramentas. Os dados ficam em /var/lib/mongodb e os registos em /var/log/mongodb/mongod.log.

3. Criar o administrador

A autenticação ainda está desativada, por isso a consola local liga-se sem credenciais. Crie o primeiro administrador na base admin; o passwordPrompt() pede a palavra-passe para que nunca fique no histórico do shell.

Bash
mongosh
JavaScript
1use admin 2db.createUser({ 3 user: 'admin', 4 pwd: passwordPrompt(), 5 roles: [ { role: 'userAdminAnyDatabase', db: 'admin' }, 'readWriteAnyDatabase' ] 6})

4. Ativar a autenticação

Edite /etc/mongod.conf e adicione (ou descomente) o bloco security:

YAML
security: authorization: enabled
Bash
systemctl restart mongod

A partir de agora, todas as ligações têm de se autenticar.

5. Criar um utilizador para a aplicação

A sua aplicação nunca deve usar a conta de administrador. Dê-lhe um utilizador limitado à sua própria base de dados.

Bash
mongosh -u admin -p --authenticationDatabase admin
JavaScript
1use appdb 2db.createUser({ 3 user: 'appuser', 4 pwd: passwordPrompt(), 5 roles: [ { role: 'readWrite', db: 'appdb' } ] 6})

A cadeia de ligação correspondente é mongodb://appuser:PASSWORD@127.0.0.1:27017/appdb?authSource=appdb.

6. Acesso de rede e firewall

Por omissão o MongoDB escuta apenas em 127.0.0.1, a opção mais segura quando a aplicação corre no mesmo VPS. Para permitir outro servidor, adicione o endereço do VPS em /etc/mongod.conf:

YAML
net: port: 27017 bindIp: 127.0.0.1,VPS_IP

Depois, autorize na firewall apenas o servidor da aplicação e nunca abra a porta 27017 a toda a Internet:

Bash
ufw allow OpenSSH ufw allow from APP_SERVER_IP to any port 27017 proto tcp ufw enable systemctl restart mongod

✅ Verificar a instalação

Bash
mongod --version mongosh --eval 'db.runCommand({ ping: 1 })' mongosh -u appuser -p --authenticationDatabase appdb appdb --eval 'db.test.insertOne({ ok: true })' ss -ltnp | grep 27017

O último comando mostra em que endereço o MongoDB escuta. Uma consulta sem autenticação como db.getUsers() deve agora falhar com um erro de autorização.

🔧 Resolução de problemas

O mongod não arranca (Illegal instruction ou código de saída 132) : o CPU virtual não expõe o AVX. Verifique com grep avx /proc/cpuinfo; sem AVX, o MongoDB 8.0 não funciona nessa máquina.

O arranque falha com erros de permissões : corrija o proprietário dos ficheiros de dados e do socket com chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb, remova um /tmp/mongodb-27017.sock antigo e reinicie. Os detalhes estão em journalctl -u mongod.

Authentication failed : o utilizador foi criado numa base específica. Indique a correta com --authenticationDatabase (ou authSource no URI).

A ligação remota expira : verifique o bindIp, as regras de ufw status e se o IP do cliente corresponde ao que autorizou.


🎉 O MongoDB 8.0 está instalado, protegido por autenticação e pronto para a sua aplicação!

Fique a par das últimas ofertas, descontos e promoções especiais.

Ver promoções

Utilizamos cookies

Utilizamos cookies analíticos para melhorar a sua experiência no nosso site. Nenhum dado é vendido a terceiros. Saiba mais na nossa política de privacidade.