Como acessar seu homelab fora da sua casa 100% gratis

Construir um homelab deixou de ser algo proibitivo (para boa parte das pessoas) faz algum tempo, isso porque mesmo com dispositivos antigos é possível construir toda um infra, é claro, respeitadas as limitações, mas tem um problema, como é que acessa fora de casa? Existem n opções as zero custo são:

ngrok

Funciona rodando um serviço local, te dá um link fixo de acesso, o problema é que a versão gratuita exibe uma página antes:

cloudflared

Funciona normalmente não tem página, tem limites generosos, mas toda vez que o servidor cai a URL de acesso muda, para resolver isso você precisa de um domínio o que faz deixar de ser um meio 100% gratuito

shellhub

Une o melhor dos dois, o link fixo do ngrok com os limites generosos do cloudflare (mas tem algumas liitações, ver abaixo), e é esse que a gente vai usar, algumas regrinhas:

  • No desktop use snap
  • No mobile use docker
  • No Windows use WSL

Primeiro passo é criar uma conta em https://shellhub.io, uma vez criado o acesso, você deve cair aqui, onde você deve clicar em “view all devices”:

E por fim em add device:

Deixe marcado o modo auto, clique em copy e rode o comando no terminal sem root:

Quando terminar a instalação clique em “Devices” no canto superior esquerdo, aí na proxima tela clique em pending e depois accept, accept:

Agora no lado esquerdo, clique em Web End Points e em Create your first endpoint:

Clique em Device e escolha o dispositivo

O IP (geralmente o padrão funciona) a porta do serviço e por fim em Create endpoint

E pronto:

É só clicar no link, esse endereço é fixo e pode ser acessado em qualquer lugar

Parece bom demais pra ser verdade…

E de certo modo é, é um serviço Forever FreeTier que oferece MUITA coisa:

  1. :check_mark: Acesso SSH pelo navegador
  2. :check_mark: Conexão usando cliente SSH nativo
  3. :check_mark: SCP/SFTP para transferência de arquivos
  4. :check_mark: Port Forwarding
  5. :check_mark: Firewall de acesso
  6. :check_mark: Gravação de sessões (Session Recording)
  7. :check_mark: Autenticação por chaves SSH
  8. :check_mark: MFA (autenticação em dois fatores)
  9. :check_mark: Cliente Desktop
  10. :check_mark: Suporte a Docker e containers
  11. :check_mark: API Keys Vault

Mas junto vem riscos do plano free:

  • Você não tem direito a suporte
  • Você não tem garantia legal de uptime, se a plataforma cancelar o serviço você basicamente não pode fazer nada
  • Como a empresa está sediada no Brasil, está sujeita à legislação e às determinações judiciais brasileiras então a lógica do “só disponibilizo o acesso, usa quem quer” pode realmente te levar preso, então bom senso aqui
  • Não suporta UDP isso inviabiliza streaming para muitos dispositivos em baixa latência ao mesmo tempo
  • Política de fair use implicita (não detalhada)

Compensa?

Na minha visão para a maioria dos homelabs sim, mas exige saber dos riscos do plano Free e entender que você está expondo seu computador para o mundo, se estiver ok com isso, é disparado a melhor ferramenta gratuita no mercado, pelo simples fato dela ser realmente gratuita, você não paga nada em nenhuma etapa, dar bypass no ngrok é pago, fixar o link do cloudflared exige domínio pago, e os demais para serem acessado de forma externa a sua rede exige estar dentro de uma rede específica, isso que os planos pagos começam com apenas 6 reais então é muito em conta

Acho mais facil e seguro usar o tailscale mas é sempre bom ter um plano b.

Legal! Não conhecia essas opções.
Aqui eu também uso Tailscale.

wireguard também serviria ?

@sparrow @msteles @Funerea Responder todo mundo de uma vez:

A ideia de usar o ShellHub para isso é o recurso que permite o acesso público, o mais próximo no universo Wireguard seria usar o Tailscale Funnel por cima, só que é bem mais complexo

esta certo isso? foi a IA que me forneceu:

  • Tailscale = Sua rede virtual privada completa
    (como se todos os dispositivos estivessem na mesma LAN)

  • ShellHub = Acesso SSH remoto gerenciado com controle centralizado

Quase, Tailscale tá certo, ShellHub tem um extra, ele permite gerar um túnel entre uma porta pública de uma VPS e um serviço localhost

Pra quem tem ipv4 válido:
Duck Dns pra poder ter um ddns para quando o ip mudar, hospeda o easy wireguard em casa via docker, abre a porta udp do wireguard no roteador e viva a vida perigosamente.