Sistema de videomonitoramento institucional que transforma celulares em câmeras gerenciáveis, com transmissão ao vivo via WebRTC, pareamento por QR Code, painel administrativo e acesso remoto seguro por Tailscale.
Este repositório é uma vitrine pública do projeto: apresenta a ideia, a arquitetura, os recursos implementados e os caminhos de expansão. A implementação original nasceu para o IF Sudeste MG - Campus Barbacena, reaproveitando celulares homologados/doados para criar uma solução de monitoramento funcional, acessível e adaptável.
O Cameras IF foi pensado para ambientes que precisam ampliar a cobertura de câmeras sem depender de infraestrutura cara, IP fixo, abertura de portas no roteador ou configurações manuais complexas de certificado.
Na prática, um celular pareado funciona como ponto de captura de vídeo. Ele publica a imagem para o servidor via WebRTC, enquanto operadores e administradores acessam um painel web para acompanhar as câmeras em tempo real, organizar o grid de monitoramento, gerenciar usuários e manter a configuração do sistema.
O foco do projeto é unir baixo custo, segurança e simplicidade operacional.
Muitos ambientes precisam de monitoramento visual, mas encontram barreiras comuns:
- câmeras IP dedicadas podem ser caras para expansão rápida;
- redes institucionais nem sempre permitem redirecionamento de portas;
- IP fixo e certificado TLS costumam gerar complexidade operacional;
- instalações pequenas precisam de uma solução simples de administrar;
- equipamentos já disponíveis, como celulares, acabam subutilizados.
O projeto responde a esse cenário com uma arquitetura containerizada, acesso privado por tailnet e um fluxo de pareamento que permite transformar dispositivos móveis em câmeras de forma controlada.
- O administrador acessa o painel e cadastra uma câmera.
- O sistema gera um QR Code de pareamento temporário.
- O celular escaneia o QR Code, recebe um token de dispositivo e passa a publicar vídeo.
- O servidor autentica a câmera e encaminha o stream via MediaMTX.
- Operadores autorizados visualizam as câmeras em tempo real no painel web.
- Status, heartbeat, bloqueio, ativação e organização do grid ficam sob controle administrativo.
flowchart LR
Phone["Celular pareado<br/>câmera WebRTC"] -->|WHIP + token| Tailnet["Rede privada<br/>Tailscale"]
Operator["Operador / Admin"] -->|HTTPS privado| Tailnet
Tailnet --> Nginx["Nginx<br/>proxy reverso"]
Nginx --> Frontend["Frontend<br/>React + Vite"]
Nginx --> Backend["Backend<br/>FastAPI"]
Backend --> DB["PostgreSQL"]
Backend --> Cache["Redis"]
Backend --> Media["MediaMTX<br/>WHIP/WHEP"]
Media -->|WHEP| Operator
- Transmissão ao vivo com WebRTC usando fluxo WHIP/WHEP.
- Celulares reaproveitados como câmeras de vigilância.
- Pareamento por QR Code com token temporário.
- Token permanente de dispositivo armazenado de forma segura.
- Painel de administração para câmeras, usuários e configurações.
- Perfil de administrador e perfil de operador.
- Grid de monitoramento ao vivo com organização das câmeras.
- Status operacional das câmeras: online, offline, aguardando pareamento, bloqueada ou desativada.
- Heartbeat do dispositivo para detectar perda de sinal.
- Setup Wizard para primeira configuração do servidor.
- Integração com Tailscale para acesso remoto privado e TLS automático.
- Backup/restauração de configurações para migração de servidor.
- Deploy containerizado com Docker Compose.
Embora tenha sido criado para um contexto institucional, a ideia é adaptável para qualquer ambiente que precise de monitoramento visual flexível:
- escolas, institutos e universidades;
- portarias, corredores e áreas administrativas;
- laboratórios, almoxarifados e oficinas;
- condomínios, estacionamentos e pequenos comércios;
- obras, eventos e espaços temporários;
- ambientes com câmeras existentes que possam receber novas camadas de integração.
O modelo também permite expansões para câmeras IP/RTSP tradicionais, sensores, automações e análise inteligente de vídeo.
A arquitetura foi desenhada para reduzir superfície de exposição:
- acesso remoto via Tailscale, sem portas públicas abertas diretamente no servidor;
- HTTPS com certificado gerenciado automaticamente pela camada de rede privada;
- autenticação de usuários com tokens e controle de perfil;
- tokens de dispositivos protegidos por hash;
- pareamento com validade limitada;
- setup inicial bloqueado após a configuração;
- backend isolado em containers e sem acesso amplo ao Docker Socket;
- separação entre publicação da câmera e visualização do operador.
| Camada | Tecnologias |
|---|---|
| Frontend | React, Vite, React Router, Lucide |
| Backend | FastAPI, SQLAlchemy async, Pydantic |
| Banco de dados | PostgreSQL |
| Cache e sessões | Redis |
| Streaming | MediaMTX, WebRTC, WHIP, WHEP |
| Rede privada | Tailscale / WireGuard |
| Proxy reverso | Nginx |
| Infraestrutura | Docker Compose |
O projeto foi pensado para crescer de forma modular. Algumas evoluções naturais:
- suporte a câmeras IP/RTSP além de celulares;
- gravação sob demanda, por agenda ou por evento;
- detecção de movimento;
- alertas por e-mail, WhatsApp, push ou painel;
- visão por mapa/planta do ambiente;
- multiunidade para gerenciar mais de um campus ou prédio;
- integração com IA para classificação de eventos;
- logs e trilhas de auditoria mais completas;
- modo PWA dedicado para o dispositivo-câmera;
- armazenamento externo em NAS, S3 ou outro backend de mídia.
O MVP contempla o fluxo principal de instalação, pareamento, transmissão e monitoramento:
- setup inicial do servidor;
- cadastro e gestão de câmeras;
- pareamento por QR Code;
- transmissão via celular;
- visualização ao vivo por operador;
- painel administrativo;
- backup e migração de configurações.
As próximas fases devem priorizar robustez operacional, gravação, alertas e integrações com outros tipos de câmera.
Este repositório público foi criado para apresentar o Cameras IF como projeto de portfólio e demonstrar a proposta técnica da solução. Ele resume a arquitetura e o funcionamento do sistema sem expor detalhes sensíveis de operação ou configuração de ambientes reais.
Desenvolvido por cuLasss, com foco em aplicações web, infraestrutura containerizada, redes privadas e soluções práticas para ambientes institucionais.