o banco é medido na hora; a VPS reporta de 10 em 10 min
Backups
verificando…
Onde ficam: cifrados no bucket privado backup do
Supabase Storage, e também em /var/backups/scada na VPS.
Diários por 21 dias; o pacote do dia 01 de cada mês fica 12 meses.
Para baixar, na VPS: scada-backup-baixar.sh --lista
mostra o que existe e scada-backup-baixar.sh devolve um link
de 2 h para abrir no seu computador. Esta tela mostra, mas não
entrega: o conteúdo exige a chave de serviço, que só existe na VPS.
Por onde o dado passa
das usinas até a tela
SAJ Portal Solis Cloud
│ │
└─────────┬─────────┘
│ coletores Python
▼
Supabase COLETA (Sidnei)vwptejwgtgykypegwrpl
│
│ pg_cron · a cada 5 min · 4 tabelas
▼
Supabase APLICAÇÃO (SolarSync)mgecaxqkyahlucvscvgw
│ ▲
│ │ pg_cron · 3h · Open-Meteo
│ │ admin · kWp, tilt, PVsyst
▼
scada.solarsync.com.br
(site estático na VPS, lê direto do banco)
Os dois bancos não são cópias um do outro. Apenas 4 tabelas vêm da
coleta. As outras 7 — cadastro das usinas, estudos PVsyst, histórico de
clima, contas, vínculos e auditoria — existem somente no banco de
aplicação e não estão em lugar nenhum além dele.
Onde cada tabela nasce
quem escreve nela
Tabela
Origem
Linhas
O que guarda
Carregando…
Organização da VPS
Ubuntu 24.04 · 179.197.68.153
/opt/solarsync/← a aplicação de coleta — repo GitHub privado próprio
├── app/
│ ├── src/captura_saj, solis_api, clima_openmeteo, supabase_sync…
│ ├── data/monitor_ufv.db (SQLite) + JSON bruto dos fabricantes
│ ├── logs/
│ ├── exports/
│ ├── .envsegredos — nunca versionado, nunca exibido
│ ├── main.pyo que a coleta executa
│ └── api.pya FastAPI
└── venv/ambiente Python isolado/opt/scada-src/← cópia do repositório GitHub deste painel (só leitura)
└── infra/fonte da configuração da VPS — units, nginx, scripts/var/www/scada/← o painel publicado, servido pelo nginx/var/backups/scada/← .tar.gz diário, 21 dias, 700/600/etc/systemd/system/
├── scada-deploy.timer2 min — busca o painel
├── scada-backup.timer03:17 — copia tabelas + SQLite
└── solarsync-coleta.timer15 min, 06h–19h45/usr/local/bin/
├── scada-deploy.shbusca o repositório e atualiza o painel
└── scada-backup.shfonte em infra/bin/ deste repo
Esta árvore é documentação mantida no repositório, não uma leitura ao vivo
do servidor. É de propósito: expor a estrutura de pastas pela
internet entrega a quem tenta invadir metade do trabalho de
reconhecimento. Quando algo mudar na VPS, esta página muda junto no
código.
Mapa de melhorias
mantido à mão — atualiza junto com docs/INFRA.md
P1 = compromete dado ou disponibilidade se não for feito.
P2 = corrige qualidade do que já funciona. P3 = arruma
e organiza, sem efeito no dia a dia. Itens riscados foram resolvidos
e ficam por uma rodada como registro de auditoria.
O que roda sozinho
tudo pelo systemd e pelo pg_cron — nada iniciado à mão
Nome
Onde
Quando
O que faz
solarsync-api
VPS
sempre ativo
FastAPI em 127.0.0.1:8000, atrás do nginx
solarsync-coleta.timer
VPS
15 min
busca SAJ e Solis e grava no banco de coleta
scada-deploy.timer
VPS
2 min
traz do GitHub a versão nova do painel e da configuração (infra/)
scada-backup.timer
VPS
03:17
copia as 7 tabelas de aplicação + SQLite para /var/backups/scada
certbot.timer
VPS
2×/dia
renova os certificados HTTPS
sync_from_sidnei()
Banco
5 min
copia usinas, histórico, eventos e alarmes da coleta
atualiza_geracao_diaria()
Banco
5 min
recalcula o total gerado dos últimos 3 dias
sync_clima()
Banco
3 h
busca irradiação no Open-Meteo por inclinação e azimute
Manutenção preventiva
detecção no banco, redação pela IA
Peça
Onde
Quando roda
O que faz
manutencao_diagnostico()
Banco
sob demanda
compara cada usina com as demais no mesmo dia e classifica os desvios
manutencao-ia
Edge Function
ao clicar
manda os números prontos ao Claude Haiku 4.5 e devolve o texto
Nada do que a IA escreve é gravado. Não há tabela nova: o texto é
gerado na hora e descartado ao sair da tela. A chave da Anthropic fica
num segredo do Supabase — nunca no navegador, nunca no repositório. A
detecção em si é SQL fixo e auditável; a IA só interpreta números que
já vieram calculados, e enxerga apenas as usinas de quem pediu.
Endereços e publicação
DNS na Cloudflare, sempre em modo "DNS only"
Endereço
Serve
Onde mora
scada.solarsync.com.br
o painel
/var/www/scada
api.solarsync.com.br
a FastAPI
proxy para 127.0.0.1:8000
solarsync.com.br
ainda sem site
página padrão do nginx
Publicação: você altera o código no GitHub; a VPS verifica de 2 em 2
minutos e se atualiza sozinha. Nada entra na VPS de fora — ela é quem
busca. Por isso não existe senha de servidor guardada no GitHub.