Indeks dziennikaDockup / notatka terenowa
Note / self-host-changedetection

Jak samodzielnie hostować Change Detection w 2026 roku: pobieranie w przeglądarce, alerty i trwałość danych

Praktyczny poradnik samodzielnego hostowania Change Detection obejmujący Docker, porty, dane trwałe, TLS, bezpieczeństwo, kopie zapasowe oraz problemy uniemożliwiające użycie produkcyjne.

Kontener Change Detection może działać poprawnie, mimo że zadanie, na którym zależy użytkownikom, jest zepsute. W przypadku Change Detection ukryta awaria zwykle polega na tym, że zwykłe requesty trafiają na bot challenges albo usługa przeglądarki jest nieosiągalna. Ten poradnik przyjmuje jako test akceptacyjny scenariusz „obserwuj jedną statyczną stronę i jedną stronę renderowaną za pomocą JavaScript, wprowadź kontrolowaną zmianę i odbierz powiadomienie o różnicach dla każdej z nich”, a następnie projektuje wdrożenie od końca, zaczynając od tego rezultatu.

Change Detection pełni w stacku konkretną funkcję: monitoruje zmiany na stronach bez konieczności pisania scrapera. Pytanie produkcyjne nie brzmi więc, czy port 5000 odpowie raz, ale czy stan, zależności i publiczny adres nadal będą ze sobą zgodne po restarcie, aktualizacji i odtworzeniu.

Oddziel Change Detection od jego zależności

Najmniejsza odpowiedzialna topologia Change Detection obejmuje jeden prywatny listener na porcie 5000, trasę ingress oraz udokumentowaną granicę stanu. Kontraktem sieciowym Change Detection jest zdalna przeglądarka, taka jak Playwright, dla stron intensywnie korzystających z JavaScript. Prywatne endpointy trzymaj w wewnętrznym DNS, zezwalaj wyłącznie na wymagane połączenia wychodzące i nadaj Change Detection ograniczone uprawnienia service credential.

Zweryfikuj topologię, prosząc czystego klienta o obserwowanie jednej statycznej strony i jednej strony renderowanej za pomocą JavaScript, wprowadzenie kontrolowanej zmiany oraz odebranie powiadomienia o różnicach dla każdej z nich. W trakcie działania monitoruj współbieżność browser-workera, historię screenshotów, opóźnienie celu i bot challenges. Wynik pokaże, czy kolejnej poprawy należy szukać w pamięci, storage, sieci czy osobnym workerze, zamiast zachęcać do arbitralnego zwiększania zasobów kontenera.

Uczyń odtwarzanie Change Detection mierzalnym

Zdefiniuj recovery point i recovery time dla Change Detection w odniesieniu do definicji obserwacji, historii, snapshotów i ustawień powiadomień. Zamontuj /datastore przed bootstrapem, zapisz nieszkodliwe dane testowe i zastąp kontener, aby potwierdzić, że ta ścieżka rzeczywiście jest trwała. Named volume rozwiązuje problem trwałości danych po redeployu, ale nie zabezpiecza przed kompromitacją ani utratą serwera.

Zbuduj czyste środowisko odtwarzania, użyj tej samej przypiętej wersji aplikacji i potwierdź, że definicje obserwacji, historia oraz cele powiadomień wracają, a kontrolowana zmiana jest ponownie wykrywana. Zapisz komendy, poprawki właściciela plików i czas realizacji. Poradnik tworzenia kopii zapasowych stanowi przydatny standard: kopia zapasowa jest zaufana po odtworzeniu, a nie po przesłaniu.

Zabezpiecz Change Detection po bootstrapie

Nie dziedzicz założeń bezpieczeństwa z lokalnego tutoriala. Specyficznym problemem Change Detection jest ujawnienie historii obserwacji i tokenów powiadomień bez uwierzytelniania. Środowisko produkcyjne powinno więc chronić historię obserwacji, ponieważ może ona zawierać prywatne URL-e, cookies i credentials powiadomień.

BASE_URL jest konfiguracją, a nie sekretem; jego wartość powinna być jawna, a osobne credentials używane przez Change Detection należy chronić. Ogranicz dostęp do systemu plików i sieci, zabezpiecz endpointy konfiguracji oraz zdefiniuj limity uploadu, requestów lub wykonywania operacji wokół współbieżności browser-workera, historii screenshotów, opóźnienia celu i bot challenges.

Zbierz dowody przed uruchomieniem Change Detection

Zanim pojawią się prawdziwi użytkownicy, przygotuj release worksheet dla Change Detection. Musi on wskazywać przypięty image, port 5000, canonical origin, trwałe ścieżki oraz właściciela zdalnej przeglądarki, takiej jak Playwright, dla stron intensywnie korzystających z JavaScript. Dołącz oczekiwany rezultat tej transakcji: obserwuj jedną statyczną stronę i jedną stronę renderowaną za pomocą JavaScript, wprowadź kontrolowaną zmianę i odbierz powiadomienie o różnicach dla każdej z nich.

Użyj worksheetu po zwykłej wymianie kontenera oraz po czystym odtworzeniu. Odtworzenie można uznać za zaakceptowane wyłącznie wtedy, gdy definicje obserwacji, historia i cele powiadomień wrócą, a kontrolowana zmiana zostanie ponownie wykryta. Zbierz również krótki trace zasobów obejmujący współbieżność browser-workera, historię screenshotów, opóźnienie celu i bot challenges; przechowuj go obok release, aby przyszłe zmiany wydajności porównywać przy tym samym obciążeniu.

Uwzględnij jedną kontrolowaną awarię: tymczasowo odbierz testowej tożsamości dostęp do zdalnej przeglądarki, takiej jak Playwright, dla stron intensywnie korzystających z JavaScript. Potwierdź, że Change Detection zgłasza problem na właściwej granicy, przywróć poprawny stan i ponownie uruchom transakcję. Sprawdza to widoczność błędów, a nie tylko sukces, i zapobiega sytuacji, w której interfejs wyglądający na zdrowy ukrywa zepsutego workera, callback lub połączenie z bazą danych.

Uczyń uruchamianie Change Detection powtarzalnym

Minimalna komenda jest przydatna, gdy pokazuje, czym platforma będzie później zarządzać.

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

W tym przykładzie port 5000 pozostaje prywatny dla hosta, a każda wymagana ścieżka jest jawnie określona. Dodaj sprawdzone ustawienia połączenia ze zdalną przeglądarką, taką jak Playwright, dla stron intensywnie korzystających z JavaScript; w przypadku prywatnych usług używaj prywatnych nazw. Zweryfikuj uruchomienie zarówno za pomocą logów, jak i dowodu właściwego dla aplikacji: obserwuj jedną statyczną stronę i jedną stronę renderowaną za pomocą JavaScript, wprowadź kontrolowaną zmianę i odbierz powiadomienie o różnicach dla każdej z nich. Po weryfikacji przypnij wersję image, aby zwykła wymiana kontenera nie zmieniła po cichu sposobu działania.

Domeny, nagłówki proxy i port 5000

Traktuj zewnętrzny URL Change Detection jako konfigurację, która przetrwa redeploye. Najpierw ustaw BASE_URL oraz dowolny endpoint przeglądarki na adresy osiągalne z kontenera, a następnie skieruj hostname na port 5000, zachowując oryginalny host i scheme.

Checklistę osiągalności wdrożenia można wykorzystać do potwierdzenia, że requesty trafiają do kontenera. Od tego momentu znaną awarię — zwykłe requesty trafiają na bot challenges albo usługa przeglądarki jest nieosiągalna — należy analizować w Change Detection, jego stanie lub obciążeniu, a nie w automatyzacji certyfikatów.

Eksploatuj Change Detection z uwzględnieniem rzeczywistego wąskiego gardła

Zbuduj dashboardy wokół współbieżności browser-workera, historii screenshotów, opóźnienia celu i bot challenges. Wykres CPU bez kontekstu tego obciążenia nie wyjaśni, dlaczego Change Detection działa wolno. Dodaj synthetic lub zaplanowany check, który przy użyciu nieszkodliwych danych testowych obserwuje jedną statyczną stronę i jedną stronę renderowaną za pomocą JavaScript, wprowadza kontrolowaną zmianę i odbiera powiadomienie o różnicach dla każdej z nich.

Przed aktualizacją uwzględnij zagrożenie specyficzne dla tej aplikacji: wersje image Playwright, migracje datastore i integracje powiadomień powinny być aktualizowane razem. Odtwórz ostatnią kopię zapasową w odizolowanym wdrożeniu, uruchom tam migracje i porównaj działanie. Jeśli zwykłe requesty trafiają na bot challenges albo usługa przeglądarki jest nieosiągalna, sprawdź odpowiednią granicę — publiczny origin, storage lub zależność — zanim zmienisz niezwiązane ustawienia.

Co Dockup powinien automatyzować dla Change Detection

Template Dockup powinien definiować image, port 5000, mounty, timing health checków, domenę, TLS i dostarczanie sekretów. Dockup powinien utrzymywać prywatne elementy zdalnej przeglądarki, takiej jak Playwright, dla stron intensywnie korzystających z JavaScript w sieci wewnętrznej i nie udostępniać żadnego dodatkowego publicznego portu. To samo wdrożenie może być kierowane na serwery Dockup lub capacity dołączone przez klienta.

Po uruchomieniu trasy zastosuj ustawienie publiczne i spróbuj obserwować jedną statyczną stronę oraz jedną stronę renderowaną za pomocą JavaScript, wprowadź kontrolowaną zmianę i odbierz powiadomienie o różnicach dla każdej z nich. Twórz kopie zapasowe definicji obserwacji, historii, snapshotów i ustawień powiadomień oraz uwzględnij ćwiczenie odtwarzania w planie operacyjnym; są to obowiązki Change Detection, które pozostają widoczne po zakończeniu provisioningu infrastruktury.

Najczęściej zadawane pytania

Czego Change Detection potrzebuje do wdrożenia produkcyjnego?

Skieruj kontener Change Detection działający na porcie 5000 przez jeden HTTPS origin. Wymaganiem sieciowym jest zdalna przeglądarka, taka jak Playwright, dla stron intensywnie korzystających z JavaScript. Nie uznawaj Change Detection za gotowy, dopóki nie możesz obserwować jednej statycznej strony i jednej strony renderowanej za pomocą JavaScript, wprowadzić kontrolowanej zmiany i odebrać powiadomienia o różnicach dla każdej z nich.

Które dane Change Detection powinny znaleźć się w kopii zapasowej?

Utrwal /datastore i uwzględnij definicje obserwacji, historię, snapshoty oraz ustawienia powiadomień w tym samym recovery manifest. Czyste odtworzenie Change Detection kończy się powodzeniem wyłącznie wtedy, gdy definicje obserwacji, historia i cele powiadomień wrócą, a kontrolowana zmiana zostanie ponownie wykryta.

Czy Change Detection wymaga HTTPS za reverse proxy?

Używaj HTTPS dla publicznego origin Change Detection, a port 5000 pozostaw na trasie wewnętrznej. Zastosuj poprawnie ustawienie Change Detection: ustaw BASE_URL oraz dowolny endpoint przeglądarki na adresy osiągalne z kontenera. W przypadku Change Detection HTTPS chroni credentials lub treści użytkowników podczas transmisji i zapewnia spójne działanie klienta zależne od origin.

Jak testować aktualizację Change Detection?

Odtwórz aktualny stan Change Detection w odizolowanym wdrożeniu, zastosuj wersję kandydującą i ponownie wykonaj transakcję akceptacyjną. Zwróć szczególną uwagę na to, że wersje image Playwright, migracje datastore i integracje powiadomień powinny być aktualizowane razem. Zachowaj poprzedni image Change Detection do czasu zrozumienia granicy migracji danych i rollbacku.