Guia de Deploy em Homelab & Produção¶
Este guia aborda padrões de implantação em nível de produção para o Bruce no seu homelab pessoal, servidor doméstico ou VPS na nuvem.
1. Topologia de Rede & Padrões de Acesso¶
O Bruce serve HTTP puro na porta 8080 (ou 9090 via Docker Compose). Para uso em produção, recomenda-se colocá-lo atrás de um proxy reverso ou acessá-lo de forma segura através de uma VPN de malha privada (mesh VPN).
flowchart LR
subgraph AccessMethods ["Métodos de Acesso"]
PUBLIC[Internet Pública + Domínio]
TAILNET[VPN Privada Tailscale]
end
subgraph SecurityLayer ["Segurança / Proxy"]
CADDY[Proxy Reverso Caddy / Nginx\nTLS Automático]
AUTH[Cloudflare Access / Tailscale Auth]
end
subgraph Server ["Servidor Homelab"]
BRUCE[Bruce :9090]
REDIS[Redis :6379]
end
PUBLIC --> CADDY --> BRUCE
TAILNET --> AUTH --> BRUCE
BRUCE <--> REDIS
2. Proxy Reverso com Caddy (Recomendado)¶
O Caddy fornece certificados HTTPS automáticos e configuração simples.
Exemplo de Caddyfile:¶
bruce.seudominio.com {
# Autenticação básica opcional para acesso ao painel
# Gere o hash usando: caddy hash-password
basicauth / {
admin $2a$14$Zkx19XLi...
}
# Proxy para o contêiner Docker do Bruce
reverse_proxy 127.0.0.1:9090
}
3. Acesso Privado via Tailscale (Sem Port Forwarding)¶
Se você não quiser expor o Bruce para a internet pública, pode acessá-lo de forma segura pelo celular e notebook usando o Tailscale:
- Instale o Tailscale no seu servidor.
- Publique o Bruce na sua rede privada Tailnet:
- Abra
https://<nome-do-servidor>.<tailnet>.ts.netem qualquer navegador nos seus dispositivos autorizados no Tailscale. - Seus bots do Discord, WhatsApp e Telegram continuarão funcionando normalmente porque estabelecem conexões de saída para os gateways de mensagens.
4. Serviço Systemd Bare-Metal (Sem Docker)¶
Se preferir rodar o Bruce como um binário nativo no Linux:
- Copie o binário compilado para
/usr/local/bin/bruce. - Crie o usuário de sistema e diretórios:
- Crie o arquivo
/etc/systemd/system/bruce.service:[Unit] Description=Bruce AI Assistant After=network.target redis.service Wants=redis.service [Service] Type=simple User=bruce Group=bruce WorkingDirectory=/var/lib/bruce ExecStart=/usr/local/bin/bruce --config /etc/bruce/config.yml Restart=always RestartSec=5s LimitNOFILE=65535 # Isolamento e Segurança ProtectSystem=full ProtectHome=true NoNewPrivileges=true [Install] WantedBy=multi-user.target - Ative e inicie o serviço:
5. Monitoramento & Verificações de Integridade¶
- Endpoint de Saúde:
GET http://localhost:9090/health - Retorna HTTP
200com tempo de atividade. - Pode ser monitorado por Uptime Kuma, Prometheus ou monitores de integridade.
- Visualização de Logs:
- No Docker:
docker compose logs -f --tail 100 bruce - No Systemd:
journalctl -u bruce -f -n 100 - Inspeção de Filas: Acesse o Asynqmon em
http://localhost:9090/monitorpara ver latência das filas, tentativas e payloads.