---
title: "Como instalar MongoDB na VPS Ubuntu com autenticação"
description: "Instale o MongoDB 8.0 pelo repositório oficial no Ubuntu 24.04, ative a autenticação, crie um usuário por banco e feche a porta 27017 com bindIp e UFW."
url: "https://streethosting.com.br/guias/vps/instalar-mongodb-vps-ubuntu"
category: "vps"
slug: "instalar-mongodb-vps-ubuntu"
datePublished: "2026-09-28"
dateModified: "2026-09-28"
author: "Equipe StreetHosting"
difficulty: "intermediario"
language: "pt-BR"
keywords:
  - "instalar mongodb vps ubuntu"
  - "mongodb ubuntu 24.04"
  - "mongodb autenticacao usuario"
  - "mongodb bindip firewall"
  - "mongodb avx vps"
---

# MongoDB na VPS Ubuntu: instalação oficial e acesso seguro

Recém instalado, o MongoDB aceita conexões locais sem senha, e um bindIp mal configurado o deixa aberto para a internet. Veja como instalar a versão 8.0 pelo repositório oficial, ativar a autenticação e dar a cada aplicação um usuário com acesso só ao próprio banco.

> **Resposta rápida**
>
> Para **instalar MongoDB na VPS Ubuntu**, use o repositório oficial `mongodb-org` (versão 8.0 no Ubuntu 24.04), crie um usuário administrador, ative `security.authorization` no `/etc/mongod.conf` e mantenha o `bindIp` em 127.0.0.1. Cada aplicação conecta com um usuário próprio, com permissão só no banco dela. Antes de tudo, confirme que a CPU da VPS expõe a instrução AVX, sem a qual o MongoDB não inicia.

## Requisitos e a checagem de AVX

O repositório oficial tem pacotes do MongoDB 8.0 para Ubuntu 24.04 (noble), 22.04 (jammy) e 20.04, em `x86_64` e ARM64. Este guia usa o 24.04; no 22.04 basta trocar `noble` por `jammy` na linha do repositório.

O requisito que mais pega gente desprevenida é a CPU. Desde a versão 5.0, os binários do MongoDB são compilados assumindo a instrução AVX. A documentação oficial pede, em processadores Intel, um Core da geração Haswell ou mais nova e, em AMD, um Bulldozer ou mais novo. Em VPS, porém, o que vale não é só o processador físico: é o conjunto de instruções que o hipervisor repassa para a máquina virtual. Por isso a checagem é feita dentro da própria VPS:

```
grep -o -w avx /proc/cpuinfo | sort -u
```

Se o comando imprimir `avx`, pode seguir. Se não imprimir nada, o mongod vai morrer ao iniciar com o erro *Illegal instruction*, e nenhuma configuração resolve isso. Nas VPS da StreetHosting, as duas linhas atendem: o Ryzen 9 9950X (arquitetura Zen 5) e o Xeon E5-2680 v4 (Broadwell, posterior ao Haswell) têm AVX e AVX2. Mesmo assim, rode o comando: é a forma de confirmar o que a sua VM enxerga.

O segundo requisito é memória. O MongoDB usa o motor WiredTiger, que reserva por padrão um cache interno igual ao maior valor entre 256 MB e metade do que sobra da RAM depois de descontar 1 GB. O resto da memória não fica ocioso: o sistema operacional usa para cache de arquivos, que o MongoDB também aproveita. A tabela mostra o que isso significa em cada tamanho de VPS.

| RAM da VPS | Cache WiredTiger padrão | Uso indicado |
| --- | --- | --- |
| 2 GB | cerca de 0,5 GB | Testes e bots pequenos |
| 4 GB | cerca de 1,5 GB | Projeto pessoal ou MVP com a aplicação junto |
| 8 GB | cerca de 3,5 GB | Produção com banco de alguns GB |
| 16 GB | cerca de 7,5 GB | Banco maior ou VPS dedicada ao MongoDB |

Para disco, NVMe faz diferença real em banco de dados porque cada gravação confirmada passa pelo journal. A documentação recomenda XFS para os dados do WiredTiger; na VPS o disco raiz costuma vir em ext4, que funciona bem para projetos pequenos e médios. A diferença entre os tipos de armazenamento está em [HDD, SSD e NVMe no servidor](https://streethosting.com.br/guias/infraestrutura/diferenca-hdd-ssd-nvme-armazenamento).

## Instalar pelo repositório oficial

O Ubuntu não empacota o MongoDB atual. Tutoriais antigos mandam instalar o pacote `mongodb` do próprio sistema, que não é mantido pela MongoDB e nem existe nas versões recentes. O caminho certo é o repositório `mongodb-org`:

```
sudo apt update
sudo apt install -y gnupg curl

curl -fsSL https://pgp.mongodb.com/server-8.0.asc | sudo 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" | sudo tee /etc/apt/sources.list.d/mongodb-org-8.0.list

sudo apt update
sudo apt install -y mongodb-org
sudo systemctl enable --now mongod
sudo systemctl status mongod
```

O que cada parte faz: a chave GPG permite ao apt verificar que os pacotes vieram mesmo da MongoDB, e o `signed-by` limita essa chave a esse repositório, para que ela não passe a valer para o sistema inteiro. O metapacote `mongodb-org` traz o servidor `mongod`, o shell `mongosh` e as ferramentas de backup, como o `mongodump`. O serviço não sobe sozinho depois da instalação, por isso o `enable --now` liga agora e em todo boot.

Teste a conexão local com `mongosh --eval "db.runCommand({ ping: 1 })"`. A resposta com `ok: 1` confirma que o servidor está no ar. Os caminhos que você vai usar daqui em diante são o arquivo de configuração `/etc/mongod.conf`, os dados em `/var/lib/mongodb` e o log em `/var/log/mongodb/mongod.log`.

> **Dica**
>
> A linha do repositório fixa a série 8.0. O `apt upgrade` traz correções dessa série, mas nunca pula para outra versão principal sem você trocar o repositório de propósito. Isso evita uma atualização de banco surpresa num upgrade de rotina.

## Criar o usuário administrador

Neste momento o MongoDB aceita qualquer conexão local sem senha. O primeiro passo é criar um administrador, ainda com a autenticação desligada. Entre no shell com `mongosh` e rode:

```
use admin
db.createUser({
  user: "admin",
  pwd: passwordPrompt(),
  roles: [
    { role: "userAdminAnyDatabase", db: "admin" },
    { role: "readWriteAnyDatabase", db: "admin" }
  ]
})
```

O `passwordPrompt()` pede a senha de forma interativa, sem que ela fique gravada no histórico do mongosh. O papel `userAdminAnyDatabase` permite criar e remover usuários em qualquer banco, e o `readWriteAnyDatabase` permite ler e gravar dados. Existe o papel `root`, com poder total, mas ele raramente é necessário no dia a dia.

## Ativar a autenticação

Criar o usuário não basta: sem a opção de autorização, o MongoDB continua aceitando conexões anônimas. Abra o arquivo com `sudo nano /etc/mongod.conf` e deixe os blocos de rede e segurança assim:

```
net:
  port: 27017
  bindIp: 127.0.0.1

security:
  authorization: enabled
```

O arquivo é YAML: a indentação é feita com dois espaços, nunca com tab, e o bloco `security` costuma vir comentado com `#` na instalação. Um espaço a mais ou a menos impede o serviço de subir. Reinicie e teste:

```
sudo systemctl restart mongod
mongosh --eval "db.adminCommand({ listDatabases: 1 })"
mongosh -u admin --authenticationDatabase admin
```

O segundo comando precisa falhar com um erro de autenticação: é a prova de que o acesso anônimo acabou. O terceiro pede a senha e abre o shell como administrador. O parâmetro `--authenticationDatabase` indica em qual banco o usuário foi criado, e ele volta a aparecer na conexão da aplicação.

## Um usuário por banco para a aplicação

A aplicação nunca deve usar o administrador. Se o código vazar ou sofrer uma injeção, o estrago fica limitado ao que o usuário da aplicação pode fazer. Logado como admin, crie o banco e o usuário dele:

```
use loja
db.createUser({
  user: "loja_app",
  pwd: passwordPrompt(),
  roles: [ { role: "readWrite", db: "loja" } ]
})
```

O banco *loja* passa a existir de fato quando a primeira coleção receber dados. A string de conexão da aplicação fica assim:

```
mongodb://loja_app:SENHA@127.0.0.1:27017/loja?authSource=loja
```

O `authSource` aponta para o banco onde o usuário foi criado. Se você criou o usuário em *admin* e esqueceu esse parâmetro, o driver tenta autenticar no banco errado e devolve *Authentication failed*. Guarde a string em um arquivo `.env` com permissão restrita, fora do repositório Git. Um exemplo de uso em projeto real está em [conectar um bot de Discord ao banco de dados](https://streethosting.com.br/guias/bots-discord/conectar-bot-discord-banco-mongodb).

| Papel | O que permite | Quando usar |
| --- | --- | --- |
| read | Ler dados de um banco | Relatórios, painel de métricas, leitura por BI |
| readWrite | Ler e gravar dados, criar coleções e índices | Usuário da aplicação |
| dbAdmin | Tarefas administrativas no banco, sem ler dados | Manutenção de índices e estatísticas |
| backup | Ler tudo o que o mongodump precisa | Usuário exclusivo dos backups agendados |
| userAdminAnyDatabase | Gerenciar usuários de qualquer banco | Administrador humano, nunca a aplicação |

> **Dica**
>
> Senhas com `@`, `:` ou `/` quebram a string de conexão se não forem codificadas. Para evitar o problema, gere senhas só com letras e números usando `openssl rand -hex 24`.

## bindIp, firewall e acesso remoto

O `bindIp` é a lista de endereços da própria VPS em que o MongoDB escuta. Ele não é uma lista de clientes permitidos, e esse é o erro mais comum: colocar ali o IP do computador de casa ou do servidor da aplicação, o que faz o serviço falhar ao iniciar. Com `127.0.0.1`, só programas rodando na mesma VPS conseguem conectar. Há três situações típicas.

### Aplicação na mesma VPS

Mantenha `bindIp: 127.0.0.1` e não abra nenhuma porta. É o cenário mais seguro e também o de menor latência entre aplicação e banco.

### Administrar pelo Compass

Em vez de abrir a porta, crie um túnel SSH a partir do seu computador e aponte o Compass para o endereço local:

```
ssh -N -L 27017:127.0.0.1:27017 usuario@IP_DA_VPS
# no Compass: mongodb://admin@127.0.0.1:27017/?authSource=admin
```

### Aplicação em outro servidor

Acrescente ao `bindIp` um endereço da própria VPS do banco, de preferência o da interface de uma VPN, e libere a porta no firewall só para o IP do servidor da aplicação:

```
# /etc/mongod.conf
net:
  port: 27017
  bindIp: 127.0.0.1,10.8.0.1

# firewall
sudo ufw allow from IP_DO_SERVIDOR_APP to any port 27017 proto tcp
sudo ufw status numbered
```

No exemplo, 10.8.0.1 é o endereço da VPS dentro de um túnel [WireGuard](https://streethosting.com.br/guias/vps/proteger-vps-wireguard-vpn), o que mantém o tráfego do banco criptografado entre os dois servidores. As regras de firewall seguem o mesmo raciocínio do [guia de UFW na VPS Ubuntu](https://streethosting.com.br/guias/vps/firewall-ufw-vps-ubuntu).

> **Atenção**
>
> Nunca use `bindIpAll: true` ou `0.0.0.0` sem firewall. Robôs varrem a porta 27017 o tempo todo, e bancos MongoDB abertos já foram apagados em massa por campanhas que deixam só um pedido de resgate. Se rodar o MongoDB em Docker, publique a porta como `127.0.0.1:27017:27017`, porque as portas publicadas pelo Docker passam por fora das regras do UFW.

## Erros comuns e manutenção

- **Serviço cai com status=4/ILL:** falta de AVX na VM. Confira com o comando da primeira seção. Não há ajuste de configuração que contorne isso.
- **Serviço não sobe depois de editar o mongod.conf:** quase sempre é indentação do YAML. Veja a causa com `sudo journalctl -u mongod -n 50` e no `/var/log/mongodb/mongod.log`.
- **Falha de permissão após rodar o mongod na mão:** executar `sudo mongod` cria arquivos do root dentro dos dados, e o serviço, que roda como usuário *mongodb*, deixa de conseguir abrir. Corrija com `sudo chown -R mongodb:mongodb /var/lib/mongodb /var/log/mongodb`.
- **ORM exige replica set:** transações com vários documentos, usadas por ferramentas como o Prisma, só funcionam em replica set. Dá para transformar o servidor único em um replica set de um nó com `replSetName` no arquivo e `rs.initiate()` no shell. Com a autenticação ativa, o MongoDB exige também um `keyFile` para a autenticação interna; siga o tutorial oficial de replica set com controle de acesso.
- **Avisos ao abrir o mongosh:** mensagens sobre Transparent Huge Pages e limites do sistema são recomendações de desempenho, não erros. Na série 8.0 a orientação sobre THP mudou em relação às versões antigas, então confira a página de notas de produção antes de copiar ajustes de tutoriais anteriores.

Para backup, crie um usuário só com o papel *backup* no banco admin e agende o `mongodump` com saída compactada:

```
# /root/.mongodump.yaml (chmod 600), guarda só a senha
password: SENHA_DO_USUARIO_BACKUP

# comando para o cron
mongodump --username backup --authenticationDatabase admin --config /root/.mongodump.yaml --gzip --archive=/var/backups/mongodb/mongo_$(date +%F).archive.gz
```

O arquivo de configuração evita a senha na linha de comando, onde ela apareceria na lista de processos. Crie o diretório `/var/backups/mongodb` antes, agende com cron e envie as cópias para fora da VPS com o método do guia de [backup automático com restic](https://streethosting.com.br/guias/vps/automatizar-backup-vps-restic-cron). A restauração usa o `mongorestore` com um usuário que tenha o papel *restore*. Teste a restauração em um banco separado de vez em quando: backup que nunca foi restaurado é só uma esperança.

## Qual VPS usar para MongoDB

MongoDB é guloso por RAM, porque tudo o que cabe no cache do WiredTiger e no cache do sistema é servido sem ir ao disco, e sensível à latência do disco nas gravações. Em uma [VPS da StreetHosting](https://streethosting.com.br/vps) todos os planos usam NVMe, ficam em São Paulo, têm AntiDDoS incluso e acesso root em virtualização KVM. As duas linhas de CPU têm AVX.

| Uso | Plano sugerido | Preço mensal |
| --- | --- | --- |
| Bot ou MVP com base pequena | Xeon 3 vCPU, 4 GB DDR4, 40 GB NVMe | R$ 40,00 |
| Aplicação em produção com o banco na mesma VPS | Xeon 6 vCPU, 8 GB DDR4, 80 GB NVMe | R$ 74,00 |
| Base de algumas dezenas de GB | Xeon 9 vCPU, 16 GB DDR4, 160 GB NVMe | R$ 142,00 |
| Agregações pesadas e baixa latência por consulta | Ryzen 9 9950X 4 vCPU, 8 GB DDR5, 80 GB NVMe | R$ 114,00 |

A linha [VPS Xeon](https://streethosting.com.br/vps/xeon) entrega mais RAM e vCPU por real, o que casa com banco de dados. A Ryzen 9 9950X, com DDR5 e até 5,7 GHz, compensa quando as consultas fazem muito processamento, como agregações longas. Se o banco crescer, o upgrade é feito pelo painel, cobra só a diferença proporcional do ciclo e exige reiniciar a VM. Depois do reinício o cache padrão do WiredTiger é recalculado para a nova RAM, a não ser que você tenha fixado `cacheSizeGB` no arquivo. Para comparar o MongoDB com outros bancos na hora de dimensionar, veja [como escolher uma VPS para banco de dados](https://streethosting.com.br/guias/vps/escolher-vps-banco-de-dados).

## Perguntas frequentes

### Qual versão do MongoDB instalar no Ubuntu 24.04?

Use o MongoDB 8.0 Community pelo repositório oficial da MongoDB, que tem pacotes para o Ubuntu 24.04 (noble) e 22.04 (jammy). Evite o pacote mongodb citado em tutoriais antigos: ele não é mantido pela MongoDB e não existe nas versões atuais do Ubuntu.

### Por que o MongoDB não inicia e mostra Illegal instruction?

Desde a versão 5.0 o MongoDB exige uma CPU com a instrução AVX. Se o processador ou a virtualização não expõem AVX para a VM, o mongod é encerrado logo ao iniciar. Confira com grep avx /proc/cpuinfo antes de instalar.

### O MongoDB vem com senha depois de instalado?

Não. Por padrão ele aceita conexões locais sem autenticação. Crie um usuário administrador, ative security.authorization no /etc/mongod.conf e reinicie o serviço para que toda conexão passe a exigir usuário e senha.

### Como acessar o MongoDB da VPS pelo Compass sem abrir a porta 27017?

Use um túnel SSH: ssh -N -L 27017:127.0.0.1:27017 usuario@IP_DA_VPS e aponte o Compass para 127.0.0.1:27017 no seu computador. A conexão viaja criptografada pelo SSH e a porta do banco continua fechada para a internet.

### Quanto de RAM o MongoDB precisa na VPS?

O cache do WiredTiger usa por padrão metade do que sobra da RAM depois de descontar 1 GB, e o restante serve ao cache do sistema e à aplicação. Para projetos pequenos, 4 GB funcionam; para produção com banco e aplicação na mesma VPS, 8 GB dão uma margem confortável.

## Guias relacionados

- [Como escolher VPS para banco de dados: RAM, CPU e NVMe](https://streethosting.com.br/guias/vps/escolher-vps-banco-de-dados.md)
- [UFW na VPS Ubuntu: regras de firewall sem perder o SSH](https://streethosting.com.br/guias/vps/firewall-ufw-vps-ubuntu.md)
- [Como conectar seu bot de Discord a um banco de dados](https://streethosting.com.br/guias/bots-discord/conectar-bot-discord-banco-mongodb.md)
- [Como configurar backup automático da VPS com restic e cron](https://streethosting.com.br/guias/vps/automatizar-backup-vps-restic-cron.md)
- [Como instalar PostgreSQL na VPS Ubuntu com segurança](https://streethosting.com.br/guias/vps/instalar-postgresql-vps-ubuntu.md)

## Produtos citados

- https://streethosting.com.br/vps
- https://streethosting.com.br/vps/xeon
- https://streethosting.com.br/vps/ryzen

## Dados estruturados

```json
[
  {
    "@context": "https://schema.org",
    "@type": [
      "Article",
      "TechArticle"
    ],
    "headline": "MongoDB na VPS Ubuntu: instalação oficial e acesso seguro",
    "name": "Como instalar MongoDB na VPS Ubuntu com autenticação",
    "abstract": "Recém instalado, o MongoDB aceita conexões locais sem senha, e um bindIp mal configurado o deixa aberto para a internet. Veja como instalar a versão 8.0 pelo repositório oficial, ativar a autenticação e dar a cada aplicação um usuário com acesso só ao próprio banco.",
    "description": "Instale o MongoDB 8.0 pelo repositório oficial no Ubuntu 24.04, ative a autenticação, crie um usuário por banco e feche a porta 27017 com bindIp e UFW.",
    "datePublished": "2026-09-28",
    "dateModified": "2026-09-28",
    "author": {
      "@type": "Organization",
      "name": "Equipe StreetHosting"
    },
    "publisher": {
      "@type": "Organization",
      "name": "StreetHosting",
      "url": "https://streethosting.com.br"
    },
    "inLanguage": "pt-BR",
    "mainEntityOfPage": {
      "@type": "WebPage",
      "@id": "https://streethosting.com.br/guias/vps/instalar-mongodb-vps-ubuntu"
    }
  },
  {
    "@context": "https://schema.org",
    "@type": "FAQPage",
    "mainEntity": [
      {
        "@type": "Question",
        "name": "Qual versão do MongoDB instalar no Ubuntu 24.04?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Use o MongoDB 8.0 Community pelo repositório oficial da MongoDB, que tem pacotes para o Ubuntu 24.04 (noble) e 22.04 (jammy). Evite o pacote mongodb citado em tutoriais antigos: ele não é mantido pela MongoDB e não existe nas versões atuais do Ubuntu."
        }
      },
      {
        "@type": "Question",
        "name": "Por que o MongoDB não inicia e mostra Illegal instruction?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Desde a versão 5.0 o MongoDB exige uma CPU com a instrução AVX. Se o processador ou a virtualização não expõem AVX para a VM, o mongod é encerrado logo ao iniciar. Confira com grep avx /proc/cpuinfo antes de instalar."
        }
      },
      {
        "@type": "Question",
        "name": "O MongoDB vem com senha depois de instalado?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Não. Por padrão ele aceita conexões locais sem autenticação. Crie um usuário administrador, ative security.authorization no /etc/mongod.conf e reinicie o serviço para que toda conexão passe a exigir usuário e senha."
        }
      },
      {
        "@type": "Question",
        "name": "Como acessar o MongoDB da VPS pelo Compass sem abrir a porta 27017?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "Use um túnel SSH: ssh -N -L 27017:127.0.0.1:27017 usuario@IP_DA_VPS e aponte o Compass para 127.0.0.1:27017 no seu computador. A conexão viaja criptografada pelo SSH e a porta do banco continua fechada para a internet."
        }
      },
      {
        "@type": "Question",
        "name": "Quanto de RAM o MongoDB precisa na VPS?",
        "acceptedAnswer": {
          "@type": "Answer",
          "text": "O cache do WiredTiger usa por padrão metade do que sobra da RAM depois de descontar 1 GB, e o restante serve ao cache do sistema e à aplicação. Para projetos pequenos, 4 GB funcionam; para produção com banco e aplicação na mesma VPS, 8 GB dão uma margem confortável."
        }
      }
    ]
  }
]
```
