Πώς να κάνετε self-hosting του Change Detection το 2026: Browser fetching, alerts και persistence
Ένας πρακτικός οδηγός για self-hosting του Change Detection, με Docker, ports, persistent data, TLS, ασφάλεια, backups και τις αστοχίες που εμποδίζουν τη χρήση σε production.
Ένα container του Change Detection μπορεί να εμφανίζεται ως healthy, ενώ η λειτουργία που ενδιαφέρει τους χρήστες να είναι broken. Στο Change Detection, αυτή η κρυφή αστοχία συνήθως σημαίνει ότι τα plain requests συναντούν bot challenges ή ότι η browser service δεν είναι προσβάσιμη. Ο οδηγός αυτός αντιμετωπίζει ως acceptance test το εξής: «παρακολούθησε μία static σελίδα και μία JavaScript-rendered σελίδα, κάνε μια ελεγχόμενη αλλαγή και λάβε ένα diff notification για καθεμία» — και σχεδιάζει το deployment με βάση αυτό το αποτέλεσμα.
Το Change Detection έχει συγκεκριμένο ρόλο στο stack: παρακολούθηση αλλαγών σε σελίδες χωρίς να γράφετε scraper. Επομένως, το ερώτημα για production δεν είναι αν το port 5000 απαντά μία φορά, αλλά αν το state, τα dependencies και η public address εξακολουθούν να συμφωνούν μετά από restart, update και restore.
Διαχωρίστε το Change Detection από τα dependencies του
Η μικρότερη υπεύθυνη τοπολογία για το Change Detection περιλαμβάνει έναν private listener στο 5000, ένα ingress route και ένα τεκμηριωμένο state boundary. Το network contract του Change Detection είναι ένας remote browser, όπως το Playwright, για σελίδες με έντονη χρήση JavaScript. Διατηρήστε τα private endpoints σε internal DNS, επιτρέψτε μόνο τα απαραίτητα outbound calls και δώστε στο Change Detection ένα scoped service credential.
Επικυρώστε την τοπολογία ζητώντας από έναν clean client να παρακολουθήσει μία static σελίδα και μία JavaScript-rendered σελίδα, να κάνει μια ελεγχόμενη αλλαγή και να λάβει ένα diff notification για καθεμία. Παρακολουθήστε το browser-worker concurrency, το screenshot history, το target latency και τα anti-bot challenges όσο εκτελείται. Το αποτέλεσμα θα σας δείξει αν η επόμενη βελτίωση αφορά τη μνήμη, το storage, το networking ή έναν ξεχωριστό worker, αντί να σας οδηγήσει σε αυθαίρετο container sizing.
Κάντε measurable το recovery του Change Detection
Ορίστε το recovery point και το recovery time για το Change Detection με βάση τα watch definitions, το history, τα snapshots και τα notification settings. Κάντε mount το /datastore πριν από το bootstrap, γράψτε harmless sample data και αντικαταστήστε το container για να αποδείξετε ότι το path είναι πράγματι persistent. Ένα named volume λύνει το persistence μετά από redeploy· δεν λύνει όμως το πρόβλημα ενός compromise ή της απώλειας του server.
Δημιουργήστε ένα clean restore environment, χρησιμοποιήστε την ίδια pinned application version και αποδείξτε ότι τα watch definitions, το history και τα notification targets επανέρχονται και ότι η ελεγχόμενη αλλαγή εντοπίζεται ξανά. Καταγράψτε τις commands, τις ownership fixes και τον χρόνο που απαιτήθηκε. Ο οδηγός για τα backups αποτελεί χρήσιμο standard: ένα backup θεωρείται αξιόπιστο μετά το restoration και όχι μετά το upload.
Κλειδώστε την ασφάλεια του Change Detection μετά το bootstrap
Μην κληρονομείτε παραδοχές ασφαλείας από ένα local tutorial. Το συγκεκριμένο ζήτημα του Change Detection είναι η έκθεση του watch history και των notification tokens χωρίς authentication. Επομένως, σε production πρέπει να προστατεύετε το watch history, επειδή μπορεί να περιέχει private URLs, cookies και notification credentials.
Το BASE_URL είναι configuration και όχι secret· κρατήστε την τιμή του explicit, προστατεύοντας παράλληλα τα ξεχωριστά credentials που χρησιμοποιεί το Change Detection. Περιορίστε την πρόσβαση στο filesystem και στο network, προστατέψτε τα setup endpoints και ορίστε όρια για uploads, requests ή execution γύρω από το browser-worker concurrency, το screenshot history, το target latency και τα anti-bot challenges.
Evidence που πρέπει να συλλέξετε πριν το Change Detection γίνει live
Πριν εμφανιστούν πραγματικοί χρήστες, δημιουργήστε ένα release worksheet για το Change Detection. Πρέπει να αναφέρει το pinned image, το port 5000, το canonical origin, τα persistent paths και τον owner ενός remote browser, όπως το Playwright, για σελίδες με έντονη χρήση JavaScript. Επισυνάψτε το αναμενόμενο αποτέλεσμα αυτής της συναλλαγής: παρακολούθηση μίας static σελίδας και μίας JavaScript-rendered σελίδας, ελεγχόμενη αλλαγή και λήψη ενός diff notification για καθεμία.
Χρησιμοποιήστε το worksheet μετά από ένα normal replacement και μετά από ένα clean restore. Το recovery γίνεται accepted μόνο αν επανέλθουν τα watch definitions, το history και τα notification targets και αν εντοπιστεί ξανά η ελεγχόμενη αλλαγή. Συλλέξτε επίσης ένα σύντομο resource trace που καλύπτει το browser-worker concurrency, το screenshot history, το target latency και τα anti-bot challenges· κρατήστε το δίπλα στο release, ώστε οι μελλοντικές αλλαγές capacity να συγκρίνονται με το ίδιο workload.
Συμπεριλάβετε μία ελεγχόμενη αστοχία: αρνηθείτε προσωρινά στο test identity την πρόσβαση σε έναν remote browser, όπως το Playwright, για σελίδες με έντονη χρήση JavaScript. Επιβεβαιώστε ότι το Change Detection αναφέρει το πρόβλημα στο σωστό boundary, επαναφέρετε τη valid condition και εκτελέστε ξανά τη συναλλαγή. Έτσι ελέγχετε την ορατότητα των errors και όχι μόνο το success, αποτρέποντας ένα interface που φαίνεται healthy από το να κρύβει έναν broken worker, callback ή database connection.
Κάντε το startup του Change Detection reproducible
Μια minimal command είναι χρήσιμη όταν αποκαλύπτει τι θα διαχειρίζεται αργότερα η πλατφόρμα.
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
Εδώ το port 5000 παραμένει private στον host και κάθε απαιτούμενο path είναι explicit. Προσθέστε τις reviewed connection settings για έναν remote browser, όπως το Playwright, για σελίδες με έντονη χρήση JavaScript· χρησιμοποιήστε private names για private services. Επαληθεύστε το startup τόσο με τα logs όσο και με το application-specific proof: παρακολουθήστε μία static σελίδα και μία JavaScript-rendered σελίδα, κάντε μια ελεγχόμενη αλλαγή και λάβετε ένα diff notification για καθεμία. Μετά την επαλήθευση, κλειδώστε την image version, ώστε ένα routine replacement να μην αλλάξει σιωπηρά τη συμπεριφορά.
Domains, proxy headers και port 5000
Αντιμετωπίστε το εξωτερικό URL του Change Detection ως configuration που παραμένει μετά τα redeploys. Αρχικά ορίστε το BASE_URL και οποιοδήποτε browser endpoint σε addresses που μπορεί να φτάσει το container· στη συνέχεια κάντε route το hostname προς το port 5000, διατηρώντας ανέπαφα το original host και το scheme.
Το deployment reachability checklist μπορεί να αποδείξει ότι τα requests εισέρχονται στο container. Μετά από αυτό το σημείο, η γνωστή αστοχία — τα plain requests συναντούν bot challenges ή η browser service δεν είναι προσβάσιμη — πρέπει να διερευνηθεί στο Change Detection, στο state του ή στο workload του και όχι στο certificate automation.
Λειτουργήστε το Change Detection με βάση το πραγματικό bottleneck
Δημιουργήστε dashboards γύρω από το browser-worker concurrency, το screenshot history, το target latency και τα anti-bot challenges. Ένα CPU graph χωρίς το αντίστοιχο workload context δεν μπορεί να εξηγήσει γιατί το Change Detection είναι αργό. Προσθέστε έναν synthetic ή scheduled check που προσπαθεί να παρακολουθήσει μία static σελίδα και μία JavaScript-rendered σελίδα, να κάνει μια ελεγχόμενη αλλαγή και να λάβει ένα diff notification για καθεμία, χρησιμοποιώντας harmless test data.
Πριν από ένα upgrade, λάβετε υπόψη τον application-specific κίνδυνο: οι Playwright image versions, τα datastore migrations και τα notification integrations πρέπει να μετακινηθούν μαζί. Κάντε restore ένα πρόσφατο backup σε isolated deployment, εκτελέστε εκεί τα migrations και συγκρίνετε τη συμπεριφορά. Αν τα plain requests συναντούν bot challenges ή η browser service δεν είναι προσβάσιμη, ελέγξτε πρώτα το σχετικό boundary — public origin, storage ή dependency — πριν αλλάξετε άσχετες ρυθμίσεις.
Τι πρέπει να αυτοματοποιεί το Dockup για το Change Detection
Ένα template του Dockup πρέπει να κωδικοποιεί την image, το port 5000, τα mounts, το health timing, το domain, το TLS και το secret delivery. Το Dockup πρέπει να διατηρεί τα private τμήματα ενός remote browser, όπως το Playwright, σε internal networking και να μην εκθέτει κανένα επιπλέον public port. Το ίδιο deployment μπορεί να στοχεύει servers του Dockup ή capacity συνδεδεμένη από τον πελάτη.
Αφού γίνει live το route, εφαρμόστε το public setting και προσπαθήστε να παρακολουθήσετε μία static σελίδα και μία JavaScript-rendered σελίδα, να κάνετε μια ελεγχόμενη αλλαγή και να λάβετε ένα diff notification για καθεμία. Κάντε backup τα watch definitions, το history, τα snapshots και τα notification settings και διατηρήστε το restore exercise στο operating plan· αυτές είναι ευθύνες του Change Detection που παραμένουν ορατές και μετά το infrastructure provisioning.
Συχνές ερωτήσεις
Τι χρειάζεται το Change Detection για deployment σε production;
Κάντε route το container του Change Detection στο port 5000 μέσω ενός HTTPS origin. Η supporting network requirement είναι ένας remote browser, όπως το Playwright, για σελίδες με έντονη χρήση JavaScript. Μην θεωρήσετε το Change Detection ready μέχρι να μπορείτε να παρακολουθήσετε μία static σελίδα και μία JavaScript-rendered σελίδα, να κάνετε μια ελεγχόμενη αλλαγή και να λάβετε ένα diff notification για καθεμία.
Ποια δεδομένα του Change Detection πρέπει να περιλαμβάνονται σε backup;
Κάντε persist το /datastore και συμπεριλάβετε τα watch definitions, το history, τα snapshots και τα notification settings στο ίδιο recovery manifest. Ένα clean restore του Change Detection θεωρείται επιτυχές μόνο όταν επανέλθουν τα watch definitions, το history και τα notification targets και όταν εντοπιστεί ξανά η ελεγχόμενη αλλαγή.
Χρειάζεται το Change Detection HTTPS πίσω από reverse proxy;
Χρησιμοποιήστε HTTPS για το public origin του Change Detection και διατηρήστε το port 5000 στο internal route. Εφαρμόστε σωστά το setting του Change Detection: ορίστε το BASE_URL και οποιοδήποτε browser endpoint σε addresses που μπορεί να φτάσει το container. Για το Change Detection, το HTTPS προστατεύει τα credentials ή το user content κατά τη μεταφορά και διατηρεί συνεπή τη client behavior που εξαρτάται από το origin.
Πώς πρέπει να δοκιμάζεται ένα upgrade του Change Detection;
Κάντε restore το τρέχον state του Change Detection σε ένα isolated deployment, εφαρμόστε την candidate version και επαναλάβετε το acceptance transaction. Δώστε ιδιαίτερη προσοχή, επειδή οι Playwright image versions, τα datastore migrations και τα notification integrations πρέπει να μετακινηθούν μαζί. Διατηρήστε την προηγούμενη image του Change Detection μέχρι να κατανοήσετε το data-migration και το rollback boundary.
