Este guia apresenta uma solução prática para expor seu servidor caseiro à internet de forma totalmente self-hosted. Utilizando o CasaOS em conjunto com o Pangolin, você aprenderá a configurar um ambiente acessível de qualquer lugar.
Este projeto foi desenvolvido e apresentado em uma das lives no canal do Coach de Osasco, e se você não conhece é porque você é um pequeno dicotômico.
ssh-keygen -t ed25519 -C "Bandindinho"
ssh-keygen → programa usado para gerar chaves SSH.-t ed25519 → define o tipo de criptografia da chave (moderna, segura e rápida).-C "Bandindinho" → adiciona um comentário à chave, geralmente seu nome ou e-mail.Ao executar o comando, serão criadas duas chaves:
id_ed25519 (deve ser mantida em segredo)id_ed25519.pub (pode ser compartilhada)Use esse comando para copiar a informacao da chave pública
cat ~/.ssh/id_ed25519.pub
Nesta etapa, criaremos uma instância na DigitalOcean (embora o processo seja aplicável a qualquer provedor de nuvem). Esta máquina atuará como o Portal Central, conectando todos os seus serviços. Nela, instalaremos o Pangolin via Docker. O Pangolin funcionará como um proxy reverso, gerenciando a conexão VPN (via WireGuard) com sua máquina local e automatizando a emissão de certificados SSL. Isso garante que todos os seus domínios utilizem o protocolo HTTPS, exibindo o ícone do cadeado e assegurando uma conexão criptografada.
No menu lateral esquerdo da DigitalOcean, clique na opção Droplets. Em seguida, escolha a região geográfica mais próxima de você ou do seu público. No exemplo, selecionamos San Francisco para hospedar a máquina.
Escolha o sistema operacional de sua preferência. Recomendamos o Debian, pois utilizá-lo tanto na nuvem quanto no HomeLab (onde rodará o CasaOS) facilita a padronização e a instalação.
Como esta máquina será dedicada exclusivamente ao Pangolin, não é necessário um hardware potente. Selecione o plano com 1 GB de RAM. Em nossos testes, o Pangolin consome no máximo 700 MB, tornando esta configuração o melhor custo-benefício.
Por segurança, é altamente recomendável utilizar uma Chave SSH em vez de uma senha convencional. Clique em "Add SSH Key".
Se você ainda não tem uma chave, crie uma em seu terminal local com o comando:
ssh-keygen -t ed25519 -C "seu_comentario"
Para visualizar sua chave pública e colá-la no painel da DigitalOcean, use:
cat ~/.ssh/id_ed25519.pub
ATENÇÃO: Use sempre a chave que termina em .pub (chave pública). Nunca compartilhe sua chave privada!
Para manter a organização, altere o campo Hostname para um nome simples e identificável (ex: pangolin-server).
Após clicar em criar, a máquina será gerada e você receberá um IP Público no painel de controle.
Agora, precisamos apontar seu domínio para o IP da nova máquina. No seu provedor de domínio (como o Porkbun):
@) apontando para o seu IP Público.* (wildcard) apontando para o mesmo IP. Isso garante que qualquer subdomínio seja redirecionado para o Pangolin.
Com tudo configurado, acesse seu servidor via terminal utilizando o protocolo SSH:
ssh root@SEU_IP_PUBLICO
Dica: Substitua SEU_IP_PUBLICO pelo endereço que você visualizou no painel da DigitalOcean.
Esta é uma instalação básica que deve ser realizada em dois ambientes: na sua máquina local (HomeLab), onde instalaremos o sistema CasaOS, e no servidor em nuvem, onde o Pangolin será configurado. Essa estrutura permitirá que o servidor remoto e o seu laboratório doméstico se comuniquem de forma segura."
apt update && upgrade -y
apt install ca-certificates \
htop \
neovim \
tree \
git \
zip \
unzip \
tmux \
curl \
wget \
fzf -y
install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
chmod a+r /etc/apt/keyrings/docker.asc
tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF
apt update
apt install docker-ce \
docker-ce-cli \
containerd.io \
docker-buildx-plugin \
docker-compose-plugin -y
docker run hello-world
curl -fsSL https://pangolin.net/get-installer.sh | bash
./installer
Após rodar o script de instalação, você passará por um assistente de configuração no terminal. Abaixo está um exemplo de como preencher as informações (substitua pelos seus dados):
=== Basic Configuration ===
Do you want to install the Enterprise version of Pangolin? The EE is free for persoal use or for businesses making less than 100k USD annually. (yes/no):no
Enter your base domain (no subdomain e.g. example.com): bandindinho.help
Enter the domain for the Pangolin dashboard (default: pangolin.bandindinho.help): pangolin.bandindinho.help
Enter email for Let's Encrypt certificates: bandindinho@proton.com
Do you want to use Gerbil to allow tunneled connections (yes/no) (default: yes): yes
=== Email Configuration ===
Enable email functionality (SMTP) (yes/no) (default: no):no
=== Advanced Configuration ===
Is your server IPv6 capable? (yes/no) (default: yes): yes
Do you want to download the MaxMind GeoLite2 database for geoblocking functionality? (yes/no) (default: yes): yes
Would you like to install and start the containers? (yes/no) (default: yes):yes
Would you like to run Pangolin as Docker or Podman containers? (default: docker): docker
=== CrowdSec Install ===
Would you like to install CrowdSec? (yes/no) (default: no): no
=== Setup Token ===
Waiting for Pangolin to generate setup token...
Setup token: 556x6hyaphtjcnx0xmj5c0m3iec0otgt
This token is required to register the first admin account in the web UI at:
https://pangolin.bandindinho.help/auth/initial-setup
Save this token securely. It will be invalid after the first admin is created.
Installation complete!
Ao finalizar, o terminal exibirá um Setup Token. Guarde-o com segurança!
https://pangolin.seudominio.com).HomeLab-Principal). O Pangolin permite gerenciar múltiplos projetos e domínios em um único painel.
Agora vamos conectar o servidor da nuvem diretamente à sua máquina local (onde o CasaOS será instalado).
IMPORTANTE: Copie e salve este comando em um bloco de notas. Você o executará dentro da sua máquina local (HomeLab) no passo para fechar o túnel.
Com a VPN ativa, você já pode criar o acesso externo seguro para o seu CasaOS.
casaos.bandindinho.help).Dica: Para cada novo serviço que você instalar no CasaOS (Plex, Nextcloud, etc.), basta repetir este processo, mudando apenas o subdomínio e o número da porta correspondente ao serviço.
O Pangolin oferece ferramentas poderosas para proteger seu servidor:
No caso do CasaOS (ou qualquer outro serviço), você deve criar um usuário não root e adicioná-lo aos grupos necessários (sudo, docker, etc.) para poder gerenciar serviços com segurança.
useradd -s /usr/bin/bash -g users -G adm,sudo,docker -m user
passwd user
curl -fsSL https://get.casaos.io | sudo bash
Para que você não precise rodar o comando manualmente toda vez que ligar a máquina, vamos configurá-lo como um serviço do sistema. Isso garante alta disponibilidade para o seu HomeLab.
Copie o bloco abaixo, mas atenção: substitua o texto COLE_AQUI_O_COMANDO_DO_PANGOLIN pelo comando completo (aquele que começa com newt...) que você salvou anteriormente.
sudo tee /etc/systemd/system/newt.service > /dev/null <<EOF
[Unit]
Description=Newt Service
After=network.target
[Service]
ExecStart=YOUR_NEW_COMMAND # Substitua pelo comando do Pangolin
Restart=always
[Install]
WantedBy=multi-user.target
EOF
Agora, execute os comandos abaixo para dizer ao Linux que ele deve carregar essa nova configuração e iniciar a conexão imediatamente:
# Recarrega as configurações de serviços do sistema
sudo systemctl daemon-reload
# Habilita o serviço para iniciar automaticamente no boot
sudo systemctl enable newt
# Inicia o serviço agora
sudo systemctl start newt
# Verifica se tudo está rodando corretamente
sudo systemctl status newt
.service → define um serviço que executa um programa ou processo..target → representa um estado do sistema e agrupa vários serviços (como antigos runlevels)..socket → inicia um serviço quando há conexão ou acesso a um socket..timer → agenda execução de serviços em horários ou intervalos (substitui cron)..mount / .path → gerenciam pontos de montagem ou monitoram alterações em arquivos/diretórios.Monitorar os containers Docker que estão sendo executados:
docker ps --format 'table {{.Names}}\t{{.Status}}'
Atualizar a lista de containers a cada 2 segundos usando watch:
watch -n 2 "docker ps --format 'table {{.Names}}\t{{.Status}}'"
Alterar o hostname da máquina para facilitar a identificação do terminal:
sudo hostnamectl set-hostname new-hostname
exec bash
Navegar pelo terminal e visualizar o conteúdo dos arquivos usando o fuzzy finder (fzf):
fzf --preview "cat {}"
Esse são alguns container para cameras e cctv:
| Nome | Descrição Principal | Destaques | Site/Repo Oficial |
|---|---|---|---|
| Frigate | NVR com detecção de objetos em tempo real usando IA (integra com Coral TPU para eficiência). | Excelente para reduzir falsos positivos, integração com Home Assistant, baixa latência. Muito popular em homelabs. | https://frigate.video/ |
| ZoneMinder | Software completo e maduro para vigilância, com suporte a milhares de câmeras. | Escalável, API robusta, apps mobile/desktop, suporta 4K e GPU. | https://zoneminder.com/ |
| Shinobi | NVR web moderno, leve e fácil de usar. | Boa UI, gravação contínua ou por movimento, suporte a MP4/WebM. | https://shinobi.video/ |
| Scrypted | Plataforma de integração de vídeo com NVR, foco em HomeKit/Google Home/Alexa. | Baixa latência, detecções inteligentes, bom para câmeras não nativas. | https://www.scrypted.app/ |
| MotionEye | Frontend simples para o Motion, ideal para setups básicos e leves (ex: Raspberry Pi). | Fácil configuração, detecção de movimento, múltiplas câmeras. | https://github.com/motioneye-project/motioneye |
| Viseron | NVR com IA (detecção de objetos, faces), local-only. | Suporte a hardware acceleration, integração MQTT/Home Assistant. | https://github.com/roflcoopter/viseron |
| Kerberos.io | Sistema modular de vigilância, gratuito na versão Agent. | Fácil deploy em Docker/K8s/RPi, escalável. | https://kerberos.io/ |
| Agent DVR (iSpy) | Software de vigilância com versão Docker gratuita. | Detecção avançada, suporte a GPU, apps mobile. | https://www.ispyconnect.com/ |