Ευρετήριο ημερολογίουDockup / σημείωση πεδίου
Note / self-host-beszel

Πώς να κάνετε self-hosting του Beszel το 2026: Agents, ιδιωτική δικτύωση και backups

Ένας πρακτικός οδηγός για self-hosting του Beszel με Docker, ports, persistent data, TLS, ασφάλεια, backups και τα προβλήματα που εμποδίζουν τη χρήση σε production. Βήμα προς βήμα.

Το πιο σύντομο demo του Beszel αποδεικνύει ότι μια διεργασία ακούει στο port 8090. Το production χρειάζεται ισχυρότερες ενδείξεις. Πρέπει να περνά αυτό το σενάριο ακόμη και μετά την αντικατάσταση του container: να κάνετε enroll έναν agent, να παρακολουθείτε γραφήματα CPU, memory και disk, να ενεργοποιείτε ένα threshold alert και να επανασυνδέετε τον agent μετά από restart του hub.

Το Beszel αναπτύσσεται για έναν σαφή σκοπό: ελαφρύ server monitoring σε ένα μικρό container. Η συνηθέστερη παγίδα στο deployment είναι ότι το hub δεν μπορεί να φτάσει το port 45876 σε έναν agent ή ότι άλλαξε το SSH key του. Γι’ αυτό η διαχείριση του public URL και το durable state χρειάζονται την ίδια προσοχή με το startup του image.

Οριοθετήστε το runtime του Beszel

Η υγεία της διεργασίας και η υγεία του product είναι διαφορετικά πράγματα στο Beszel. Το port 8090 μπορεί να απαντά, ενώ η συναλλαγή που βλέπει ο χρήστης εξακολουθεί να αποτυγχάνει. Το network contract για το Beszel απαιτεί έναν Beszel agent σε κάθε machine που παρακολουθείται. Κρατήστε τα private endpoints σε internal DNS, επιτρέψτε μόνο τα απαραίτητα outbound calls και δώστε στο Beszel ένα service credential με περιορισμένο scope.

Χρησιμοποιήστε αυτή την άσκηση readiness μετά από κάθε ουσιαστική αλλαγή ρυθμίσεων: κάντε enroll έναν agent, παρακολουθήστε γραφήματα CPU, memory και disk, ενεργοποιήστε ένα threshold alert και επανασυνδέστε τον agent μετά από restart του hub. Μην εντάσσετε ακριβά external checks στα liveness probes, ώστε μια διακοπή λειτουργίας provider να μην προκαλεί restart loop. Η εργασία capacity planning πρέπει να παρακολουθεί τον αριθμό των agents, το metrics retention, το hub storage και τη network reachability προς κάθε agent στο δικό του port — στοιχεία που αποτυπώνουν καλύτερα την πραγματική πίεση στο Beszel από τα page requests.

Κάντε το public origin ξεκάθαρο

Ο browser, ο API client και το Beszel πρέπει να συμφωνούν σε ένα origin. Για να το εξασφαλίσετε, δρομολογήστε το hub μέσω HTTPS και κρατήστε τα agent ports private. Διατηρήστε το αρχικό host και protocol, ενώ παράλληλα κρατάτε το port 8090 μη διαθέσιμο ως ανταγωνιστική public address.

Ο οδηγός αντιμετώπισης προβλημάτων όταν το site είναι εκτός λειτουργίας βοηθά να ξεχωρίσετε μια μη προσβάσιμη route από μια εφαρμογή που απαντά. Η διάκριση αυτή είναι σημαντική εδώ: το hub δεν μπορεί να φτάσει το port 45876 σε έναν agent ή έχει αλλάξει το SSH key του. Μόνο το πρώτο πρόβλημα διορθώνεται με αλλαγές στο ingress· το δεύτερο απαιτεί έλεγχο των logs, του state ή του workload του Beszel.

Εκτελέστε το πρώτο production-shaped instance

Το πρώτο container πρέπει να διαγράφεται και να αναδημιουργείται εύκολα. Κρατήστε τα δεδομένα εκτός του writable layer, κάντε bind το port 8090 μόνο εκεί όπου μπορεί να το φτάσει ο proxy και περάστε τις ρυθμίσεις κατά το runtime.

docker run -d \
  --name beszel \
  --restart unless-stopped \
  -p 127.0.0.1:8090:8090 \
  -v beszel-data:/beszel_data \
  henrygd/beszel:latest

Κάντε pin το image μετά την αρχική δοκιμή. Διαβάστε το πρώτο startup error αντί για το τελικό restart message, επαληθεύστε κάθε mount με το docker inspect και παρακολουθήστε τα logs ενώ κάνετε enroll έναν agent, παρακολουθείτε γραφήματα CPU, memory και disk, ενεργοποιείτε ένα threshold alert και επανασυνδέετε τον agent μετά από restart του hub. Αυτή η ακολουθία ξεχωρίζει μια λανθασμένη εντολή image από ένα πρόβλημα dependency ή permissions.

Logs που απαντούν στην επόμενη ερώτηση

Ένα healthy container είναι απαραίτητο, αλλά όχι αρκετό. Το service-level indicator είναι η επιτυχής ολοκλήρωση της διαδικασίας «enroll ενός agent, παρακολούθηση γραφημάτων CPU, memory και disk, ενεργοποίηση threshold alert και επανασύνδεση του agent μετά από restart του hub». Τα πιθανά σημάδια πίεσης είναι ο αριθμός των agents, το metrics retention, το hub storage και η network reachability προς κάθε agent στο δικό του port.

Το change control έχει σημασία, επειδή οι εκδόσεις hub και agent πρέπει να δοκιμάζονται μαζί: οι αλλαγές στο protocol μπορεί να μοιάζουν με αθόρυβα κενά στο monitoring. Διατηρήστε το προηγούμενο image, δοκιμάστε τα migrations σε αντίγραφο του state και καταγράψτε αν υποστηρίζεται rollback μετά τη μετακίνηση του schema. Αν το hub δεν μπορεί να φτάσει το port 45876 σε έναν agent ή έχει αλλάξει το SSH key του, διαγνώστε το πρώτο boundary που διαφέρει από το περιβάλλον όπου όλα λειτουργούν.

Ένα production acceptance run για το Beszel

Πριν εμφανιστούν πραγματικοί users, δημιουργήστε ένα release worksheet για το Beszel. Πρέπει να αναφέρει το pinned image, το port 8090, το canonical origin, τα persistent paths και τον υπεύθυνο για έναν Beszel agent σε κάθε machine που παρακολουθείται. Επισυνάψτε το αναμενόμενο αποτέλεσμα αυτής της συναλλαγής: enroll ενός agent, παρακολούθηση γραφημάτων CPU, memory και disk, ενεργοποίηση threshold alert και επανασύνδεση του agent μετά από restart του hub.

Χρησιμοποιήστε το worksheet μετά από μια κανονική αντικατάσταση και μετά από ένα clean restore. Η ανάκτηση θεωρείται επιτυχής μόνο αν επανέλθουν τα systems, το history και τα alerts και κάθε restored agent ξεκινήσει ξανά να στέλνει current metrics. Συλλέξτε επίσης ένα σύντομο resource trace που καλύπτει τον αριθμό των agents, το metrics retention, το hub storage και τη network reachability προς κάθε agent στο δικό του port. Κρατήστε το μαζί με το release, ώστε οι μελλοντικές αλλαγές capacity να συγκρίνονται με το ίδιο workload.

Συμπεριλάβετε μία ελεγχόμενη αστοχία: αρνηθείτε προσωρινά στο test identity την πρόσβαση σε έναν Beszel agent σε κάθε machine που παρακολουθείται. Επιβεβαιώστε ότι το Beszel αναφέρει το πρόβλημα στο σωστό boundary, επαναφέρετε την έγκυρη κατάσταση και εκτελέστε ξανά τη συναλλαγή. Έτσι ελέγχετε την ορατότητα των errors και όχι μόνο την επιτυχία, αποτρέποντας ένα interface που φαίνεται healthy από το να κρύβει έναν broken worker, callback ή database connection.

Σχεδιάστε το restore του Beszel πριν από το launch

Καταγράψτε κάθε durable artifact: hub data, users, systems και alert configuration. Κάντε mount το /beszel_data πριν από το bootstrap, γράψτε harmless sample data και αντικαταστήστε το container για να αποδείξετε ότι το συγκεκριμένο path είναι πράγματι persistent. Συμπεριλάβετε ρυθμίσεις που αλλάζουν τον τρόπο ερμηνείας των stored data και όχι μόνο τον μεγαλύτερο κατάλογο.

Ορίστε retention, αντιγράψτε τα backups εκτός host και εκτελέστε ένα clean-room restore. Το drill του Beszel ολοκληρώνεται όταν επανέλθουν τα systems, το history και τα alerts και κάθε restored agent ξεκινήσει ξανά να στέλνει current metrics. Αν τα snapshots αποτελούν μέρος του πλάνου, χρησιμοποιήστε τον οδηγό PITR έναντι snapshots για να καταγράψετε τι μπορεί να ανακτήσει κάθε μηχανισμός.

Κλείστε την προσωρινή πρόσβαση setup

Κάντε threat modeling για την ενέργεια που εκτελεί το Beszel και όχι μόνο για τη login form. Το επικίνδυνο λάθος εδώ είναι να δημοσιεύσετε agent listeners στο internet χωρίς network controls. Υλοποιήστε αυτό το boundary: κρατήστε τους agent listeners σε private networks και προστατέψτε το hub account και τα enrollment keys.

Το Beszel δεν απαιτεί mandatory bootstrap secret σε αυτό το baseline. Προστατέψτε το πραγματικό administrator account ή το upstream authentication. Μην επιλύετε ένα permission error εκτελώντας το container ως root ή κάνοντας broad mount του host. Τα resource limits ανήκουν επίσης στον σχεδιασμό ασφάλειας, όταν οι users μπορούν να προκαλέσουν αύξηση στον αριθμό των agents, στο metrics retention, στο hub storage ή στη network reachability προς κάθε agent στο δικό του port.

Μεταφέρετε το repeatable infrastructure work στο Dockup

Για το Beszel, το Dockup είναι πιο χρήσιμο στο boundary ανάμεσα σε ένα image και ένα durable service. Διατηρεί συνδεδεμένα το route προς το 8090, το TLS, τις secret values και το storage κατά τις αντικαταστάσεις των containers, είτε το compute ανήκει στο Dockup είτε στον attached server σας.

Ολοκληρώστε με application knowledge: δρομολογήστε το hub μέσω HTTPS και κρατήστε τα agent ports private· συνδέστε και δοκιμάστε έναν Beszel agent σε κάθε machine που παρακολουθείται· και εκτελέστε αυτή την επαλήθευση: κάντε enroll έναν agent, παρακολουθήστε γραφήματα CPU, memory και disk, ενεργοποιήστε ένα threshold alert και επανασυνδέστε τον agent μετά από restart του hub. Κρατήστε το αποτέλεσμα ως deployment check, ώστε η επόμενη ενημέρωση του image να αξιολογείται βάσει συμπεριφοράς και όχι βάσει του status του container.

Συχνές ερωτήσεις

Τι χρειάζεται το Beszel για deployment σε production;

Δρομολογήστε το Beszel container στο port 8090 μέσω ενός HTTPS origin. Η βασική δικτυακή απαίτηση είναι ένας Beszel agent σε κάθε machine που παρακολουθείται. Μην θεωρήσετε το Beszel έτοιμο μέχρι να μπορείτε να κάνετε enroll έναν agent, να παρακολουθείτε γραφήματα CPU, memory και disk, να ενεργοποιείτε ένα threshold alert και να επανασυνδέετε τον agent μετά από restart του hub.

Ποια δεδομένα του Beszel πρέπει να περιλαμβάνονται σε backup;

Κάντε persist το /beszel_data και συμπεριλάβετε hub data, users, systems και alert configuration στο ίδιο recovery manifest. Ένα clean Beszel restore θεωρείται επιτυχές μόνο όταν επανέλθουν τα systems, το history και τα alerts και κάθε restored agent ξεκινήσει ξανά να στέλνει current metrics.

Απαιτεί το Beszel HTTPS πίσω από reverse proxy;

Χρησιμοποιήστε HTTPS για το public Beszel origin και κρατήστε το port 8090 στο internal route. Εφαρμόστε σωστά τη ρύθμιση του Beszel: δρομολογήστε το hub μέσω HTTPS και κρατήστε τα agent ports private. Για το Beszel, το HTTPS προστατεύει τα credentials ή το περιεχόμενο των users κατά τη μεταφορά και διατηρεί συνεπή τη συμπεριφορά των clients που εξαρτάται από το origin.

Πώς πρέπει να δοκιμάζεται ένα upgrade του Beszel;

Κάντε restore το τρέχον Beszel state σε ένα isolated deployment, εφαρμόστε την υποψήφια έκδοση και επαναλάβετε τη διαδικασία acceptance. Δώστε ιδιαίτερη προσοχή, επειδή οι εκδόσεις hub και agent πρέπει να δοκιμάζονται μαζί: οι αλλαγές στο protocol μπορεί να μοιάζουν με αθόρυβα κενά στο monitoring. Κρατήστε το προηγούμενο Beszel image μέχρι να κατανοήσετε τα όρια του data migration και του rollback.