Como transformar um Raspberry Pi 4 num NAS – Parte 5

Por: André Paula
Tempo de leitura: 7 min

Qualquer serviço instalado e exposto na Internet precisa de cuidados reforçados. Um primeiro cuidado passa por garantir que a ligação é segura e encriptada – o Nginx Proxy Manager vai ajudar no processo.

Nginx Proxy Manager
O objetivo deste serviço é garantir que todos os serviços que forem instalados no Raspberry Pi e expostos na Internet sejam acedidos de forma segura. Este software vai trabalhar como proxy reverso para interceptar os pedidos que serão feitos ao domínio e sub-domínios. Sempre que alguém escrever no navegador o nome do domínio que criou, o Nginx Proxy Manager valida os certificados e garante que o pedido é feito de forma segura. O programa usar o Let’s Encrypt para criar certificados de forma gratuita, uma solução perfeita para usar em casa, e facilita a sua gestão através de uma página Web.

Instalação do Nginx Proxy Manager
Na edição de Março, mostrámos como instalar o Portainer, que será a maneira mais simples e prática de lançar e gerir vários serviços, neste caso o Nginx Proxy Manager. Neste guia em particular, usamos o docker-compose directo no Portainer, uma ferramenta que permite correr várias aplicações docker num único ficheiro YAML, facilitando assim a gestão. Imagine este ficheiro como um papel com uma receita, onde coloca os ingredientes necessários.

  • Entre no Portainer através do seu navegador, com o IP do Raspberry Pi e a porta padrão 9000 (exemplo: 192.168.1.200:9000);
  • No separador à esquerda, seleccione a opção ‘Stacks’, coloque um nome e escolha o método ‘Web editor’;
  • Escreva o código abaixo e altere os campos a vermelho, referentes a senhas. A indentação é importante, mas o Portainer informa se alguma coisa não está correcta. Se quiser, pode também mudar o utilizador que deixámos como padrão.

version: “2”

services:
app:
image: ‘jc21/nginx-proxy-manager:latest’
restart: always
ports:
– ’81:81′
environment:
DB_MYSQL_HOST: “db”
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: “npm”
DB_MYSQL_PASSWORD: “ALTERAR_AQUI_A_SENHA_MYSQL
DB_MYSQL_NAME: “npm”
DISABLE_IPV6: ‘true’
volumes:
– ./data:/data
– ./letsencrypt:/etc/letsencrypt
depends_on:
– db
db:
image: ‘yobasystems/alpine-mariadb:latest’
restart: always
environment:
MYSQL_ROOT_PASSWORD: ‘COLOCAR_AQUI_A_SENHA_MYSQL_ROOT
MYSQL_DATABASE: ‘npm’
MYSQL_USER: ‘npm’
MYSQL_PASSWORD: ‘COLOCAR_AQUI_A_MESMA_SENHA_MYSQL
volumes:
– ./data/mysql:/var/lib/mysql

 

  • Depois de o código estar correto, basta carregar no botão azul ‘Deploy the stack’.

Se tudo correu bem, vai verificar que estão a correr duas imagens: a do Nginx Proxy Manager e a da base de dados MariaDB, ambas com os respectivos dados para acesso que foram definidos nas variáveis de ambiente. A porta do host e do container é a 81; foram escolhidos os volumes onde a informação respetiva será guardada.

Esta foi a “receita” usada e sabemos que vai funcionar, mas pode e deve ser alterada conforme o que quiser fazer. Ao lançar os containers através do Portainer, e de recorrer ao docker-compose, mantém as senhas “seguras” dentro do container e não num ficheiro YAML no Raspberry Pi, onde pode ser lida a informação.

Primeira configuração
Para entrar na configuração do Nginx Proxy Manager pela primeira vez, use o IP do Raspberry Pi e coloque a porta 81. Depois, no campo do email, coloque admin@example.com e a senha ‘changeme’, que é o padrão. Depois, de mudar a password de entrada, pode começar a adicionar os hosts.

É importante mencionar que o Portainer deve ser um serviço para acesso na sua rede interna. Não aconselhamos a expô-lo para fora, porque o objectivo é gerir os certificados de outros serviços que vai instalar.

Instalar o Nextcloud
Instalar o Nextcloud, recorrendo a imagens docker, é sem dúvida mais simples, por isso vamos preparar a “receita”, da mesma forma que fizemos com o Nginx Proxy Manager. Siga todos os passos mencionados anteriormente, mas agora use o código abaixo e altere os campos relacionados com senhas e utilizadores e carregue em “Deploy the stack”.

version: ‘2’

volumes:
nextcloud:
db:
services:
db:
image: yobasystems/alpine-mariadb:latest
command: –transaction-isolation=READ-COMMITTED –binlog-format=ROW
restart: always
volumes:
– db:/var/lib/mysql
environment:
– MYSQL_ROOT_PASSWORD=PASSWORD
– MYSQL_PASSWORD=PASSWORD
– MYSQL_DATABASE=nextcloud
– MYSQL_USER=nextcloud
app:
image: nextcloud
ports:
– 8080:80
links:
– db
volumes:
– nextcloud:/var/www/html
restart: always

Como o objectivo é lançar os serviços no cartão SD, não precisa de mudar os volumes; no entanto, se quiser testar num disco externo, no campo ‘Volumes’, apague ‘nextcloud’ e coloque o caminho completo do disco externo. Para ver o caminho completo no terminal use o comando lsblk ou então no OpenMediaVault.

Adicionar host no Nginx Proxy Manager
Antes de adicionar o Nextcloud ao Nginx Proxy Manager, terá de definir o nome a ser apontado na Cloudflare, como por exemplo ‘nas.oseudominio.org’:

 

  • Faça login na Cloudflare e, no separador, ‘DNS’, carregue no botão azul ‘Adicionar registo’ e coloque o nome e o endereço IP público do seu operador; carregue em ‘Salvar’;
  • Depois de gravado, no campo ‘Status do proxy’ altere para ‘Somente DNS’;
  • De seguida, volte ao Nginx Proxy Manager e, no separador, ‘Hosts’, carregue em ‘Proxy Hosts’ e altere os campos respectivos, lembrando que tem de colocar o IP do Raspberry Pi definido e a porta do serviço associado ao Nextcloud, no nosso caso 8080;

No campo SSL, seleccione ‘Request a new ssl certificate’ e active as opções ‘Force SSL’, ‘HTTP/2 Support’ e ‘HSTS Enabled’;

No campo ‘Advanced’ altere apenas o campo com o seu domínio e grave;

Antes de abrir o navegador com o seu domínio, confirme as configurações que fez, porque muitas vezes o Nginx Proxy Manager não grava à primeira.

Conclusão
De momento já tem dois containers a correr: Portainer e Nginx Proxy Manager. No próximo artigo vamos mostrar como lançar mais serviços no Portainer e adicionar hosts no Nginx Proxy Manager.

 

 

Seguir:
Estar sempre actualizado com as novidades tecnológicas é para mim importante, em especial com tudo o que esteja relacionado com open source, linux e software livre, por isso tenho um podcast e escrevo sobre estes temas.
Exit mobile version