Guia: Monero Node com Docker

Guia: Monero Node com Docker

A proposta desse guia é facilitar a instalaçāo de um nó (ou node) Monero utilizando Docker container.

Introduçāo

Este é um guia adaptado para português brasileiro, originalmente escrito por Seth for Privacy. A proposta desse guia é apenas facilitar a instalaçāo de um nó Monero utilizando Docker container.

Vale mencionar também que o guia a seguir foi baseado a partir de um computador Linux, rodando uma distribuiçāo baseada no Debian. Sim, funciona no Ubuntu, Pop OS, Parrot OS, Kubuntu e no Linux Mint. É possível instalar o Docker no Windows ou no Mac, porém eu não pretendo abordar isso neste guia. Também é possível usar esse guia para instalar o node em uma Virtual Private Server (VPN).

Hardware necessário

  • Para rodar o node completo (full node), você precisa de pelo menos 2 vCPU/cores, 4GB de memória RAM e 180GB de espaço em disco (SSD recomendável).
  • O nó prunado (prunned) precisa das mesmas especificaçōes (2 vCPU/cores e 4GB de memória RAM), porém menos armazenamento: 80GB já basta.

community.png

Motivação

A rede Monero depende de uma rede distribuída de nós. Cada nó valida as transações, além de propagar transações para o resto da rede e ajudar os novos nós a se sincronizarem de forma fácil e rápida com o resto da rede. Rodar um nó oferece sólidas garantias de privacidade, aumenta a descentralização, estabilidade e velocidade da rede Monero.

 

Docker?

O Docker é uma plataforma de código aberto, desenvolvido na linguagem Go e criada pela empresa Docker.Inc. Basicamente, a plataforma garante maior facilidade na criação e administração de ambientes isolados, garantindo a rápida disponibilização de programas para o usuário final.

O Docker tem como objetivo criar, testar e implementar aplicações em um ambiente separado da máquina original, chamado de container. Dessa forma, o desenvolvedor consegue empacotar o software de maneira padronizada. Isso ocorre porque a plataforma disponibiliza funções básicas para sua execução, como: código, bibliotecas, runtime e ferramentas do sistema.

docker.png

Imagina que o seu computador seria um barco apto para navegar e carregar coisas mundo afora. A proposta do Docker é acrescentar aplicações (caixas) prontas em cima do seu barco, sem que você precise se preocupar como instalar, manejar, atualizar e por aí vai.

A instalaçāo utilizando Docker tem uma série de beneficíos para o usuário, como manter o software automaticamente atualizado (Watchtower). simplicidade e carregamento automatico com o sistema operacional (Debian Linux, no nosso caso).

Preparação

Antes de tudo, precisamos instalar alguns pacotes. Abra um terminal e digite: markdo

Agora nós instalamos o Docker:

curl -fsSL https://get.docker.com -o get-docker.sh  
sudo sh get-docker.sh  
sudo usermod -aG docker $USER  
su - $USER

A próxima etapa agora é preparar as regras do firewall para permitir que o nó Monero consiga acessar a rede de forma segura e também permitir conexões via SSH.

sudo ufw default deny incoming  
sudo ufw default allow outgoing  
sudo ufw allow ssh  
sudo ufw allow 18080/tcp  
sudo ufw allow 18089/tcp  
sudo ufw enable

   

Instalando Docker e rodando Monero

Sim, chegou a hora :) A instalação a seguir roda o monerod (daemon) no background e baixa a blockchain. Destaco aqui que o container inclui apenas o monerod (daemon), sendo que você precisa instalar a sua carteira (wallet) de forma separada. Trata-se de uma decisão pessoal, eu recomendo a Feather Wallet pela usabilidade e velocidade de carregamento.

Agora selecione qual implementação você deseja instalar, a versão completa do nó ou a prunada. São dois comandos e você deve copiar e colar um por vez.

Blockchain completa (full node):

docker run -d --restart unless-stopped --name="monerod" -p 18080:18080 -p 18089:18089 -v bitmonero:/home/monero sethsimmons/simple-monerod:latest --rpc-restricted-bind-ip=0.0.0.0 --rpc-restricted-bind-port=18089 --public-node --no-igd --no-zmq --enable-dns-blocklist
docker run -d \  
    --name watchtower --restart unless-stopped \  
    -v /var/run/docker.sock:/var/run/docker.sock \  
    containrrr/watchtower --cleanup \  
    monerod tor

Blockchain prunada (prunned):

docker run -d --restart unless-stopped --name="monerod" -p 18080:18080 -p 18089:18089 -v bitmonero:/home/monero sethsimmons/simple-monerod:latest --rpc-restricted-bind-ip=0.0.0.0 --rpc-restricted-bind-port=18089 --public-node --no-igd --no-zmq --enable-dns-blocklist --prune-blockchain
docker run -d \  
    --name watchtower --restart unless-stopped \  
    -v /var/run/docker.sock:/var/run/docker.sock \  
    containrrr/watchtower --cleanup \  
    monerod tor

Pronto, é só isso. Agora resta aguardar. Para acompanhar o download dos blocos, apenas digite no terminal:

docker logs --follow monerod

 

logs.jpeg

 

Atualizando o Node

Como estamos executando o Monero em um contêiner do Docker e implantamos o Watchtower junto com ele, o nó será reiniciado automaticamente com a versão mais recente do monerod sempre que uma nova versão for marcada no Git. Sim, você não precisa mais fazer o update manualmente :)

 

Tor (opcional)

É possível expor sua porta RPC no Tor como um serviço oculto. Desta forma, você obtêm um endereço .onion para se conectar ao seu node e viabilizar o acesso fora da sua rede local. Por exemplo: utilizar o seu nó na Feather Wallet dentro do Tails em um computador desconhecido.

sudo apt-get install tor  
sudo systemctl enable tor  
sudo mkdir /var/lib/tor/hidden_service  
sudo chown debian-tor:debian-tor /var/lib/tor/hidden_service

Agora você precisa abrir o arquivo torrc e adicionar as linhas abaixo no final. Sinta-se livre para usar qualquer editor de texto. No meu caso, eu escolhi o Gedit do Gnome.

sudo gedit /etc/tor/torrc

E adicione as linhas abaixo:

## Tor Monero RPC HiddenService
HiddenServiceDir /var/lib/tor/hidden_service/monero-rpc  
HiddenServicePort 18089 127.0.0.1:18089

Salve o arquivo e depois feche o editor de texto.

Chegou a hora de reiniciar o Tor e visualizar qual o seu endereço .onion para acessar o seu nó. Execute os comandos abaixo:

sudo systemctl restart tor  
sudo cat /var/lib/tor/hidden_service/monero-rpc/hostname

O endereço .onion é o seu novo Monero RPC Hidden Service. Lembre-se também que é necessário usar a porta 18089 ao se conectar com o nó. Para testar a conectividade, basta abrir o Tor Browser e acessar _http: //substituiapeloenderecoonion:18089/getinfo e verifique se você visualiza um bloco de texto (JSON).

 

Usando o nó

Isso dependerá da carteira que você escolheu usar. Normalmente, o processo envolve apenas adicionar a especificação do endereço IP ou adicionar endereço Onion. Para acessar na mesma máquina, adicione 127.0.0.1:18089 ou substituiapeloenderecoonion:18089.

Aguarde a wallet sincronizar com os blocos e pronto, você está apto a utilizar Monero com absoluta soberania e privacidade.

feather-nodes.png

Na Feather Wallet, clique em File → Settings → Node → From custom list e adicione o seu endereço IP ou .onion seguido da porta 1809. Exemplo: 127.0.0.1:1809

gui-docker.png

Monero GUI Wallet selecione Settings → Node → Remote Node. Agora adicione o .onion address ou o seu endereço IP, seguido da porta. Selecione Mark as Trusted Daemon também :)

Se houver dúvidas, veja esse link para verificar como se conectar a um nó remoto.

Espero ter ajudado. Saudaçōes, paz e um futuro próspero!