Explore o novo chatbot do Developer Center! O MongoDB AI chatbot pode ser acessado na parte superior da sua navegação para responder a todas as suas perguntas sobre o MongoDB .

Junte-se a nós no Amazon Web Services re:Invent 2024! Saiba como usar o MongoDB para casos de uso de AI .
Desenvolvedor do MongoDB
Central de desenvolvedor do MongoDBchevron-right
Produtoschevron-right
MongoDBchevron-right

Instalar e configurar o MongoDB no Raspberry Pi

Mark Smith8 min read • Published Feb 07, 2022 • Updated Sep 11, 2024
RaspberryPiMongoDB
Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Sou um grande fã do Raspberry Pi desde que a primeira versão foi lançada em 2012. As gerações mais recentes são maravilhosos computadores de automação residencial e prototipagem de IoT, com WiFi integrado, e as versões mais recentes (o Pi 3 e Pi 4) são de 64 bits. Isso significa que eles podem executar o servidor MongoDB, mongod, localmente! O MongoDB ainda fornece uma versão pré-compilada para o processador Raspberry Pi, por isso é relativamente simples instalá-lo.
Atualmente, estou criando um serviço de automação residencial em um Raspberry Pi 4. Seu trabalho é executar tarefas em segundo plano, como solicitar dados periodicamente da Internet e, em seguida, fornecer os dados a vários dispositivos pequenos em minha casa, como alguns monitores inteligentes e, bem, meu moedor de café.
O serviço não tem requisitos de armazenamento de dados supercomplexos e eu poderia ter usado um banco de dados incorporado, como o SQLite. Mas me tornei resistente a modelar tabelas e junções em um banco de dados relacional e trabalhar com linhas planas. A capacidade de armazenar estruturas de dados ricas em um único MongoDB database é um recurso fundamental para mim.

Pré-requisitos

Você precisará de:
  • Um Raspberry Pi 3 ou 4
  • Um cartão Micro SD de tamanho adequado (usei um cartão de 16 Gb)
  • Um computador e um leitor de cartão SD para gravar a imagem do cartão SD. (Pode ser outro Raspberry Pi, mas estou usando meu desktop)
  • Um editor de texto no computador host. (Recomendo VS Code)

O que este tutorial fará

Este tutorial mostrará como:
  • Instale a versão de 64 bits do servidor Ubuntu em seu Raspberry Pi.
  • Configure-o para se conectar ao seu Wi-Fi.
  • Instalar corretamente o MongoDB no seu Pi.
  • Adicione uma conta de usuário para expor o MongoDB com segurança em sua rede doméstica.
Quando terminar, você terá uma instância segura do MongoDB disponível em sua rede doméstica.
Antes de chegarmos muito longe nisso, tenha em mente que você não deseja executar um banco de dados de produção em escala web em um Raspberry Pi. Apesar das melhorias no processador no Pi 4, ele ainda é uma máquina de potência relativamente baixa, com uma quantidade relativamente baixa de RAM para um servidor de banco de dados. Ainda! Para uma instância local e offline do MongoDB, com a facilidade de desenvolvimento que o MongoDB oferece, um Raspberry Pi é uma ótima solução de baixo custo. Se você deseja servir seus dados na Internet, você definitivamente deveria conferir o Atlas, a solução de hospedagem em nuvem do MongoDB. O MongoDB hospedará seu banco de dados e o serviço tem um nível gratuito generoso (e permanente)!

Coisas para não fazer

Não execute apt install mongodb em seu Raspberry Pi ou, de fato, em qualquer computador com Linux! As versões do MongoDB fornecidas com as distribuições Linux estão muito desatualizadas. Elas não funcionarão tão bem e algumas delas são tão antigas que não têm mais suporte.
O MongoDB Server fornece versões do banco de dados, pré-pacote para muitos sistemas operacionais diferentes, e o Ubuntu no Raspberry Pi é um deles.

Instalando o Ubuntu

Baixe e instale o Raspberry Pi Imager em seu computador host.
Faça o download do Raspberry Pi Imager
Execute o rastreamento Raspberry Pi e selecione o servidor Ubuntu 20.04, 64-bit para Raspberry Pi 3/4.
Selecione a imagem correta do Ubuntu
Certifique-se de não selecionar acidentalmente o Ubuntu Core ou uma versão de 32bits.
Insira seu cartão Micro SD em seu computador e selecione-o na janela Raspberry Pi Imager.
Selecione seu cartão SD
Clique em Write e aguarde até que a imagem seja gravada no cartão SD. Isso pode levar algum tempo! Quando terminar, feche o Raspberry Pi Imager. Em seguida, remova o cartão Micro SD do computador e insira-o novamente.
A imagem Ubuntu para Raspberry Pi usa cloud-init para configurar o sistema no momento da inicialização. Isso significa que, no volume system-boot do seu cartão SD, deve haver um arquivo YAML chamado network-config. Abra este arquivo no VS Code (ou em seu editor de texto favorito).
Edite para que fique assim. O recuo é importante e é a seção ‘wifis’ que você está editando para corresponder à sua configuração wifi. Substitua 'YOUR-WIFI-SSD' pelo nome do seu WiFi e 'YOUR-WIFI-PASSWORD' pela sua senha WiFi.
1version: 2
2ethernets:
3 eth0:
4 dhcp4: true
5 optional: true
6wifis:
7 wlan0:
8 dhcp4: true
9 optional: true
10 access-points:
11 "YOUR-WIFI-SSID":
12 password: "YOUR-WIFI-PASSWORD"
Agora ejete o cartão SD (com segurança! ) do seu computador, insira-o no Pi e ligue-o! Pode levar alguns minutos para iniciar, pelo menos na primeira vez. Você precisará monitorar sua rede para aguardar a conexão do Pi. Quando isso acontecer, ssh no Pi com ssh ubuntu@<raspberry-pi-ip-address>. A senha também é ubuntu.
Você será solicitado a alterar sua senha para algo secreto.
Depois de definir sua senha, atualize o sistema operacional executando os seguintes comandos:
1sudo apt update
2sudo apt upgrade

Instale o MongoDB

Agora vamos instalar o MongoDB. Isso é feito da seguinte forma:
1# Install the MongoDB 4.4 GPG key:
2wget -qO - https://www.mongodb.org/static/pgp/server-4.4.asc | sudo apt-key add -
3
4# Add the source location for the MongoDB packages:
5echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/4.4 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.4.list
6
7# Download the package details for the MongoDB packages:
8sudo apt-get update
9
10# Install MongoDB:
11sudo apt-get install -y mongodb-org
As instruções acima foram retiradas principalmente de Instale o MongoDB Community Edition no Ubuntu

Execute o MongoDB

O Ubuntu 20.04 usa o Systemd para executar serviços em segundo plano, portanto, para configurar o mongod para ser executado em segundo plano, você precisa habilitar e iniciar o serviço:
1# Ensure mongod config is picked up:
2sudo systemctl daemon-reload
3
4# Tell systemd to run mongod on reboot:
5sudo systemctl enable mongod
6
7# Start up mongod!
8sudo systemctl start mongod
Agora, você pode verificar se o serviço está sendo executado corretamente executando o comando a seguir. Você deve ver algo como a saída abaixo dele:
1$ sudo systemctl status mongod
2
3● mongod.service - MongoDB Database Server
4 Loaded: loaded (/lib/systemd/system/mongod.service; enabled; vendor preset: enabled)
5 Active: active (running) since Tue 2020-08-09 08:09:07 UTC; 4s ago
6 Docs: https://docs.mongodb.org/manual
7Main PID: 2366 (mongod)
8 CGroup: /system.slice/mongod.service
9 └─2366 /usr/bin/mongod --config /etc/mongod.conf
Se o serviço estiver sendo executado corretamente, você poderá executar o cliente MongoDB, mongo, a partir da linha de comando para se conectar:
1# Connect to the local mongod, on the default port:
2$ mongo
3MongoDB shell version v4.4.0
4connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
5Implicit session: session { "id" : UUID("576ec12b-6c1a-4382-8fae-8b6140e76d51") }
6MongoDB server version: 4.4.0
7---
8The server generated these startup warnings when booting:
9 2020-08-09T08:09:08.697+00:00: Using the XFS filesystem is strongly recommended with the WiredTiger storage engine. See http://dochub.mongodb.org/core/prodnotes-filesystem
10 2020-08-09T08:09:10.712+00:00: Access control is not enabled for the database. Read and write access to data and configuration is unrestricted
11---
12---
13 Enable MongoDB's free cloud-based monitoring service, which will then receive and display
14 metrics about your deployment (disk utilization, CPU, operation statistics, etc).
15
16 The monitoring data will be available on a MongoDB website with a unique URL accessible to you
17 and anyone you share the URL with. MongoDB may use this information to make product
18 improvements and to suggest MongoDB products and deployment options to you.
19
20 To enable free monitoring, run the following command: db.enableFreeMonitoring()
21 To permanently disable this reminder, run the following command: db.disableFreeMonitoring()
22---
Primeiro, verifique os avisos. Você pode ignorar a recomendações de executar o sistema de arquivos XFS, pois esta é apenas uma pequena instalação local. No entanto, o aviso sobre o controle de acesso que não está ativado para o banco de dados é importante! Você corrigirá isso na próxima seção. Nesse ponto, se você quiser, pode ativar o monitoramento gratuito que o MongoDB oferece, executando db.enableFreeMonitoring() dentro do shell do mongo.

Protegendo o MongoDB

Aqui estão as próximas etapas essenciais, que outros tutoriais não abordam, por algum motivo. Versões recentes do mongod não se conectarão à rede a menos que a autenticação do usuário tenha sido configurada. Por causa disso, no momento, seu banco de dados só está acessível a partir do próprio Raspberry Pi. Isso pode ser bom se, como eu, os serviços que você estiver executando com o MongoDB estiverem sendo executados no mesmo dispositivo. Ainda é uma boa ideia definir um nome de usuário e uma senha no banco de dados.
Veja como fazer isso, dentro de mongo (substitua SUPERSECRETPASSWORD por uma senha real!):
1use admin
2db.createUser( { user: "admin",
3 pwd: "SUPERSECRETPASSWORD",
4 roles: [ "userAdminAnyDatabase",
5 "dbAdminAnyDatabase",
6 "readWriteAnyDatabase"] } )
7exit
As três funções listadas dão ao usuário admin a capacidade de administrar todas as contas de usuário e dados no MongoDB. Verifique se sua senha é segura. Você pode usar um gerador de senhas aleatório para estar seguro.
Agora você precisa reconfigurar o mongod para rodar com a autenticação habilitada, adicionando algumas linhas a /etc/mongod.conf. Se você se sentir confortável com um editor de texto de terminal, como vi ou emacs, use um deles. Usei nano, porque é um pouco mais simples, com sudo nano /etc/mongod.conf. Adicione as duas linhas a seguir em algum lugar do arquivo. Assim como o arquivo network-config que você editou anteriormente, é um arquivo YAML, portanto o recuo é importante!
1# These two lines must be uncommented and in the file together:
2security:
3 authorization: enabled
E, por fim, reinicie o mongod:
1sudo systemctl restart mongod
Certifique-se de que a autenticação seja aplicada conectando mongo sem autenticação:
1$ mongo
2MongoDB shell version v4.4.0
3connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
4Implicit session: session { "id" : UUID("4002052b-1a39-4158-8a99-234cfd818e30") }
5MongoDB server version: 4.4.0
6> db.adminCommand({listDatabases: 1})
7{
8 "ok" : 0,
9 "errmsg" : "command listDatabases requires authentication",
10 "code" : 13,
11 "codeName" : "Unauthorized"
12}
13> exit
Certifique-se de ter saído de mongo e agora teste se é possível se conectar e autenticar com os detalhes do usuário que você criou:
1$ mongo -u "admin" -p "SUPERSECRETPASSWORD"
2MongoDB shell version v4.4.0
3connecting to: mongodb://127.0.0.1:27017/?compressors=disabled&gssapiServiceName=mongodb
4Implicit session: session { "id" : UUID("3dee8ec3-6e7f-4203-a6ad-976b55ea3020") }
5MongoDB server version: 4.4.0
6> db.adminCommand({listDatabases: 1})
7{
8 "databases" : [
9 {
10 "name" : "admin",
11 "sizeOnDisk" : 151552,
12 "empty" : false
13 },
14 {
15 "name" : "config",
16 "sizeOnDisk" : 36864,
17 "empty" : false
18 },
19 {
20 "name" : "local",
21 "sizeOnDisk" : 73728,
22 "empty" : false
23 },
24 {
25 "name" : "test",
26 "sizeOnDisk" : 8192,
27 "empty" : false
28 }
29 ],
30 "totalSize" : 270336,
31 "ok" : 1
32}
33> exit

Disponibilize o MongoDB para sua rede

Esta etapa é opcional! Agora que você configurou a autenticação no servidor, se quiser que o banco de dados esteja disponível para outros computadores na rede, você precisa:
  • Vincular o MongoDb ao endereço IP público do Raspberry Pi
  • Abra a porta 27017 no firewall do Raspberry Pi.
Se não quiser acessar os dados da sua rede, não siga estas etapas! É sempre melhor deixar as coisas mais seguras, se possível.
Primeiro, edite /etc/mongod.conf novamente, da mesma forma que antes. Desta vez, altere o endereço IP para 0.0.0.0:
1# Change the bindIp to '0.0.0.0':
2net:
3 port: 27017
4 bindIp: 0.0.0.0
E reinicie mongod novamente:
1sudo systemctl restart mongod
Abra a porta 27017 no firewall de seu Raspberry Pi:
1sudo ufw allow 27017/tcp
Agora, em outro computador na sua rede, com o cliente MongoDB instalado, execute o seguinte para garantir que mongod esteja disponível em sua rede:
1# Replace YOUR-RPI-IP-ADDRESS with your Raspberry Pi's actual IP address:
2mongo --host 'YOUR-RPI-IP-ADDRESS'
Se ele se conectar, então você instalou e configurou com sucesso o MongoDB em seu Raspberry Pi!

Advertências sobre segurança

Essa seção curta é extremamente importante. Não pule isso.
  • Nunca abra uma instância do mongod para a internet sem autenticação habilitada.
  • Configure seu firewall para limitar os endereços IP que podem se conectar à sua porta MongoDB. (Seu Raspberry Pi acabou de ser configurado para permitir conexões de qualquer lugar, partindo do pressuposto de que sua rede doméstica tem um firewall bloqueando o acesso de fora.)
  • Certifique-se de que a senha do usuário de banco de dados que você criou seja segura!
  • Configure diferentes usuários de banco de dados para cada aplicativo que se conecta ao seu servidor de banco de dados, com apenas as permissões exigidas por cada aplicativo.
O MongoDB vem com padrões de segurança adequados. Ele usa TSL, autenticação por senha baseada em SCRAM, e não se vincula à sua porta de rede sem que a autenticação seja configurada. Ainda cabe a você entender como proteger seu Raspberry Pi e quaisquer dados armazenados nele. Leia a Lista de verificação de segurança do MongoDB para obter mais informações sobre como manter seus dados seguros.

Encerrando

Como você pode ver, existem algumas etapas para instalar e configurar adequadamente o MongoDB. Eu não fazia isso há algum tempo e tinha me esquecido de como pode ser complicado! Por isso, você deve considerar usar o MongoDB Atlas, onde muito disso já é resolvido para você. Além do fato de o nível gratuito para sempre ser bastante generoso com pequenos casos de uso, também existem vários serviços extras incluídos, como funções sem servidor, gráficos, pesquisa de texto livre e muito mais!
Você terminou! Vá gravar algum código em sua linguagem de programação favorita, e se você está orgulhoso disso (ou mesmo se está apenas tendo algum problema e gostaria de alguma ajuda) nos avise!. Confira todos os posts legais do blog no MongoDB Developer Hub e certifique-se de marcar a documentação do MongoDB

Ícone do FacebookÍcone do Twitterícone do linkedin
Avalie esse Tutorial
star-empty
star-empty
star-empty
star-empty
star-empty
Relacionado
Início rápido

Construindo aplicativos Rails com o modelo MongoDB


Aug 26, 2024 | 4 min read
Tutorial

Handle Time Series Data with MongoDB


Nov 19, 2024 | 13 min read
Tutorial

Construindo com padrões: o padrão bucket


May 16, 2022 | 3 min read
Podcast

Dimensionamento de hardware para MongoDB com Graves


Sep 11, 2024 | 26 min
Sumário