sábado, 12 de março de 2022

Resolvido: acessando o NextCloud fora da minha rede doméstica!

Pessoal,

Há algum tempo venho tentando entender como funciona redes, Docker e essas coisas para montar meu NAS e acessa-lo do meu celular, em qualquer lugar do mundo.

Hoje, finalmente, consegui resolver isso. Com isso, encerro (por enquanto) este assunto iniciado lá em 2020 no auge da pandemia (veja os posts relacionados aqui, aqui, aqui, aqui, aqui, aqui, aqui, aquiaqui e aqui).

Nestes posts conto a saga para entender o básico de redes, como abrir portas no roteador, VPN, discos em rede, NAS, Docker, etc. É aprendizado demais!

Tenho certeza que qualquer pessoa com algum grau de instrução em TI ou equivalente faria isso com os dois pés nas costas, mas a minha formação é outra. Além de aprender isso, eu ainda tinha que fazer anestesia, dar plantão em CTI, administrar uma equipe de anestesia, administrar essa equipe em um momento de troca do dono do hospital, começar em um serviço novo e, sete meses depois, largar tudo para começar em outro serviço! Isso sem férias há 3 anos!! É, COVID fudeu a vida de todo mundo...

Enfim, vamos terminar essa novela.

O NAS (OMV) já está rodando no Proxmox. Estável, sem sobressaltos. No Proxmox também roda uma VM com o Ubuntu Server com algumas coisas em background.

Por comodismo mesmo optei por colocar o Docker na mesma VM do OMV, mas pensando agora talvez deveria ter colocado em outra. enfim, já foi e não vou inventar moda de alterar isso agora.

O NextCloud roda no Docker e isso tem uma grande vantagem: é facinho acessar os arquivos de configuração dele. Por exemplo, para autorizar acessos ao NextCloud, é preciso editar uma linha num arquivo (config.php). Para acessar, basta entrar no Portainer, ir em Stacks -> nextcloud e, lá embaixo, em Quick options, acessar o quarto ícone (Exec Console):


Isso abre o shell deste docker específico. Aí é só navegar até a pasta onde está o arquivo desejado:


Esse arquivo aí, o config.php, contém as informações para acessar o NextCloud de qualquer lugar, especificamente o campo  "trusted_domains". Fica algo mais ou menos assim:


Bom, outra coisa importante é liberar as portas no roteador. Pra isso, os roteadores tem uma configuração chamada Port Forwarding. Basicamente ela recebe uma solicitação de um IP externo para acessar a porta X e encaminha para um IP interno pela porta determinada internamente.

Por exemplo, você pode determinar que quem acessar a porta 1234 do seu IP determinado pela sua provedora vai se conectar no IP de uma VM e usar a porta 2345 dessa VM. Assim:

    181.191.45.23:1234 -> 192.160.1.15:2345

Ou seja, se você quiser acessar o NextCloud que está rodando na sua VM que utiliza um IP fixo (fornecido pelo seu roteador de casa) '192.168.1.15' e que usa a porta 2345 que você escolheu, você pode usar o seu IP fornecido pela sua operadora (pra isso, acesse o site whatismyip e você ficará sabendo qual IP seu IPS fornece para você) para acessar a porta 1234. O seu roteador vai escutar a porta 1234 e vai encaminhar para o local correto (no exemplo, 192.168.1.15:2345). Simples. Lembre-se apenas de não usar portas reservadas do sistema (veja as portas reservadas aqui).

Agora você já pode usar o seu IP residencial, fornecido pela seu provedor, para acessar o NextCloud.

Provavelmente o seu provedor fornece um IP variável, ou seja, de tempos em tempos o IP da sua casa muda. Só que para acessar um serviço de fora da sua rede doméstica, o IP tem que ser fixo. Pra isso ou você paga os tubos pra ter um IP fixo em casa ou arruma um servidor de DNS que atualize o seu IP de tempos em tempos automaticamente.

Pra isso tem o No-IP (que exige que você atualize seu cadastro a cada mês para ser de graça) ou o DuckDNS. Basicamente, tanto um quanto o outro, instalam um pequeno programa no computador que verifica o seu IP e informa ao serviço que o DNS buscado corresponde a um IP determinado (que o serviço vai atualizar automaticamente).

Assim, por exemplo, o seu NextCloud está instalado numa VM com IP 192.168.1.15 e usa a porta 2345 para se comunicar. Já o seu IP em casa é, agora, 181.191.45.23. Aí você escolheu abrir a porta 1234 do seu roteador para acessar o seu NextCloud. Só que, por exemplo, a cada semana seu IPS troca o seu IP. Assim, fica assim:

Semana 1: 181.191.45.23:1234 -> 192.168.1.15:2345

Semana 2: 182.191.45.57:1234 -> 192.168.1.15:2345

Semana 3: 182.191.41.37:1234 -> 192.168.1.15:2345

O DuckDNS e o No-IP criam um nome de DNS (por exemplo meuhomeserver.duckdns.org) que vai corresponder ao seu IP atualizado diariamente pelo programinha deles.

Semana 1: 181.191.45.23 = meuhomeserver.duckdns.org
                  meuhomeserver.duckdns.org:1234 -> 192.168.1.15:2345

Semana 2: 182.191.45.57 = meuhomeserver.duckdns.org
                  meuhomeserver.duckdns.org:1234 -> 192.168.1.15:2345

Semana 3: 182.191.41.37 = meuhomeserver.duckdns.org
                  meuhomeserver.duckdns.org:1234 -> 192.168.1.15:2345

A grosso modo, é isso que esses serviços fazem. Muito útil, não?

Depois você pega esse endereço 'meuhomeserver.duckdns.org' e coloca lá no 'trusted_domains':


Fica algo mais ou menos assim:

'trusted_domains' =>   [
   0 => '192.168.1.15',    ],

Esse é o IP da sua VM, por exemplo. Colocando o nome do DNS do DuckDNS, vai ficar assim:

'trusted_domains' =>   [
  0 => '192.168.1.15',
     1 => 'meuhomeserver.duckdns.org',
  ],

Assim, quando você acessar o NextCloud, seja pelo computador, seja pelos aplicativos, o NextCloud vai saber que o acesso pode ser autorizado!

A última coisa é que cada vez que você acessa o serviço, o NextCloud reclama que não tem certificado de segurança.


Então temos que fazer um certificado e resolver isso! E aqui está o problema: todas as opções que testei deram erro. Preciso entender como fazer isso e será assunto de um post em breve (assim que descobrir como resolver).

Então é isso por enquanto!

ATUALIZAÇÃO:

Pessoal, a resolução deste problema está explicada aqui.

Nenhum comentário:

Postar um comentário