Índice do diárioDockup / nota de campo
Note / self-host-changedetection

Como fazer self-hosting do Change Detection em 2026: fetching no navegador, alertas e persistência

Um guia prático de self-hosting do Change Detection, cobrindo Docker, portas, dados persistentes, TLS, segurança, backups e as falhas que impedem o uso em produção.

Um container do Change Detection pode estar green enquanto o job que realmente importa para os usuários está quebrado. No Change Detection, essa falha oculta geralmente significa que requisições simples encontram desafios anti-bot ou que o browser service está inacessível. Este guia considera como teste de aceitação “monitorar uma página estática e uma página renderizada com JavaScript, introduzir uma alteração controlada e receber uma notificação de diff para cada uma” e estrutura o deployment a partir desse resultado.

O Change Detection tem uma função específica na stack: monitorar alterações em páginas sem escrever um scraper. Portanto, a questão em produção não é se a porta 5000 responde uma vez, mas se o estado, as dependências e o endereço público continuam consistentes depois de um restart, update e restore.

Separe o Change Detection das dependências

A menor topologia responsável para o Change Detection contém um único listener privado na porta 5000, uma rota de ingress e uma fronteira de estado documentada. O contrato de rede do Change Detection é um browser remoto, como o Playwright, para páginas com uso intenso de JavaScript. Mantenha endpoints privados no DNS interno, permita apenas as chamadas de saída necessárias e forneça ao Change Detection uma credencial de serviço com escopo restrito.

Valide a topologia solicitando a um client limpo que monitore uma página estática e uma página renderizada com JavaScript, introduza uma alteração controlada e receba uma notificação de diff para cada uma. Monitore a concorrência dos workers do navegador, o histórico de screenshots, a latência dos alvos e os desafios anti-bot enquanto o processo é executado. O resultado mostra se a próxima melhoria deve ser feita em memória, storage, networking ou em um worker separado, em vez de incentivar um dimensionamento arbitrário do container.

Torne a recuperação do Change Detection mensurável

Defina o recovery point e o recovery time do Change Detection em termos de definições de monitoramento, histórico, snapshots e configurações de notificação. Monte /datastore antes do bootstrap, grave dados de exemplo inofensivos e substitua o container para provar que esse caminho é realmente persistente. Um named volume resolve a persistência durante redeploys; não resolve comprometimento nem perda do servidor.

Prepare um ambiente de restore limpo, use a mesma versão fixada da aplicação e prove que as definições de monitoramento, o histórico e os destinos de notificação retornam e que a alteração controlada é detectada novamente. Registre comandos, correções de ownership e o tempo decorrido. O guia de backup é um padrão útil: um backup só é confiável depois do restore, não depois do upload.

Proteja o Change Detection após o bootstrap

Não herde as premissas de segurança de um tutorial local. A preocupação específica do Change Detection é expor o histórico de monitoramento e os tokens de notificação sem autenticação. Por isso, em produção, o histórico de monitoramento deve ser protegido, pois pode conter URLs privadas, cookies e credenciais de notificação.

BASE_URL é configuração, não um secret; mantenha seu valor explícito e proteja as credenciais separadas usadas pelo Change Detection. Restrinja o acesso ao filesystem e à rede, proteja os endpoints de setup e defina limites de upload, requests ou execução em torno da concorrência dos workers do navegador, do histórico de screenshots, da latência dos alvos e dos desafios anti-bot.

Evidências a coletar antes de colocar o Change Detection em produção

Antes da chegada dos usuários reais, crie uma release worksheet para o Change Detection. Ela deve indicar a image fixada, a porta 5000, a origem canônica, os caminhos persistentes e o responsável por um browser remoto, como o Playwright, para páginas com uso intenso de JavaScript. Anexe o resultado esperado desta transação: monitorar uma página estática e uma página renderizada com JavaScript, introduzir uma alteração controlada e receber uma notificação de diff para cada uma.

Use a worksheet depois de uma substituição normal e de um restore limpo. A recuperação só é aceita quando as definições de monitoramento, o histórico e os destinos de notificação retornam e a alteração controlada é detectada novamente. Colete também um breve resource trace cobrindo a concorrência dos workers do navegador, o histórico de screenshots, a latência dos alvos e os desafios anti-bot; mantenha-o junto da release para que futuras alterações de capacidade sejam comparadas com a mesma carga de trabalho.

Inclua uma falha controlada: negue temporariamente à identidade de teste o acesso a um browser remoto, como o Playwright, para páginas com uso intenso de JavaScript. Confirme que o Change Detection reporta o problema na fronteira correta, restaure a condição válida e execute novamente a transação. Isso verifica a visibilidade dos erros, não apenas o sucesso, e impede que uma interface aparentemente saudável oculte um worker, callback ou conexão com o banco de dados quebrado.

Torne o startup do Change Detection reproduzível

Um comando mínimo é útil quando revela o que a plataforma gerenciará posteriormente.

docker run -d \
  --name change-detection \
  --restart unless-stopped \
  -p 127.0.0.1:5000:5000 \
  -v change-detection-data:/datastore \
  -e BASE_URL=https://app.example.com \
  dgtlmoon/changedetection.io:latest

Aqui, a porta 5000 permanece privada no host e todos os caminhos necessários estão explícitos. Adicione as configurações de conexão revisadas para um browser remoto, como o Playwright, destinado a páginas com uso intenso de JavaScript; use nomes privados para serviços privados. Verifique o startup com os logs e também com a prova específica da aplicação: monitorar uma página estática e uma página renderizada com JavaScript, introduzir uma alteração controlada e receber uma notificação de diff para cada uma. Depois da verificação, fixe a versão da image para que uma substituição rotineira não altere o comportamento silenciosamente.

Domínios, proxy headers e a porta 5000

Trate a URL externa do Change Detection como uma configuração que sobrevive a redeploys. Primeiro, defina BASE_URL e qualquer browser endpoint com endereços que o container consiga alcançar; depois, direcione o hostname para a porta 5000 preservando o host e o scheme originais.

O checklist de reachability do deployment pode provar que as requisições entram no container. Depois disso, a falha conhecida — requisições simples encontram desafios anti-bot ou o browser service está inacessível — deve ser investigada no Change Detection, em seu estado ou em sua carga de trabalho, e não na automação de certificados.

Opere o Change Detection em torno do gargalo real

Crie dashboards em torno da concorrência dos workers do navegador, do histórico de screenshots, da latência dos alvos e dos desafios anti-bot. Um gráfico de CPU sem o contexto dessa carga de trabalho não consegue explicar por que o Change Detection está lento. Adicione um check sintético ou agendado que tente monitorar uma página estática e uma página renderizada com JavaScript, introduza uma alteração controlada e receba uma notificação de diff para cada uma usando dados de teste inofensivos.

Antes de fazer um upgrade, considere este risco específico da aplicação: as versões das images do Playwright, as migrações do datastore e as integrações de notificação devem avançar juntas. Restaure um backup recente em um deployment isolado, execute as migrações nesse ambiente e compare o comportamento. Se requisições simples encontrarem desafios anti-bot ou o browser service estiver inacessível, inspecione a fronteira envolvida — origem pública, storage ou dependência — antes de alterar configurações não relacionadas.

O que o Dockup deve automatizar para o Change Detection

Um template do Dockup deve codificar a image, a porta 5000, os mounts, o timing de health check, o domínio, o TLS e a entrega de secrets. O Dockup deve manter as partes privadas de um browser remoto, como o Playwright, para páginas com uso intenso de JavaScript na rede interna e não expor nenhuma porta pública adicional. O mesmo deployment pode ser direcionado a servidores do Dockup ou a capacidade conectada pelo cliente.

Depois que a rota estiver ativa, aplique a configuração pública e tente monitorar uma página estática e uma página renderizada com JavaScript, introduza uma alteração controlada e receba uma notificação de diff para cada uma. Faça backup das definições de monitoramento, do histórico, dos snapshots e das configurações de notificação e mantenha o exercício de restore no plano operacional; essas são responsabilidades do Change Detection que continuam visíveis depois do provisionamento da infraestrutura.

Perguntas frequentes

O que o Change Detection precisa para um deployment em produção?

Direcione o container do Change Detection na porta 5000 por meio de uma única origem HTTPS. O requisito de rede de suporte é um browser remoto, como o Playwright, para páginas com uso intenso de JavaScript. Não considere o Change Detection pronto até conseguir monitorar uma página estática e uma página renderizada com JavaScript, introduzir uma alteração controlada e receber uma notificação de diff para cada uma.

Quais dados do Change Detection devem fazer parte de um backup?

Persista /datastore e inclua as definições de monitoramento, o histórico, os snapshots e as configurações de notificação no mesmo recovery manifest. Um restore limpo do Change Detection só é aprovado quando as definições de monitoramento, o histórico e os destinos de notificação retornam e a alteração controlada é detectada novamente.

O Change Detection precisa de HTTPS atrás de um reverse proxy?

Use HTTPS para a origem pública do Change Detection e mantenha a porta 5000 na rota interna. Aplique corretamente a configuração do Change Detection: defina BASE_URL e qualquer browser endpoint com endereços que o container consiga alcançar. No Change Detection, o HTTPS protege credenciais ou conteúdo de usuários em trânsito e mantém consistente o comportamento do client que depende da origem.

Como testar um upgrade do Change Detection?

Restaure o estado atual do Change Detection em um deployment isolado, aplique a versão candidata e repita sua transação de aceitação. Tenha atenção especial, pois as versões das images do Playwright, as migrações do datastore e as integrações de notificação devem avançar juntas. Mantenha a image anterior do Change Detection até que os limites de migração de dados e rollback estejam compreendidos.