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

Πώς να φιλοξενήσετε μόνοι σας το Shiori το 2026: Αρχεία, λογαριασμοί και persistent storage

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

Ένα αποτυχημένο deployment του Shiori δεν καταρρέει πάντα. Μπορεί να εμφανίζει σελίδα σύνδεσης, ενώ η αρχειοθέτηση αποτυγχάνει επειδή οι dependencies του Chromium ή τα filesystem permissions δεν έχουν ρυθμιστεί σωστά. Ξεκινήστε αντί γι’ αυτό με έναν end-to-end έλεγχο: αποθηκεύστε ένα bookmark με archived content, αναζητήστε το, επεξεργαστείτε τα tags και επιβεβαιώστε ότι το archive παραμένει διαθέσιμο αφού αλλάξει η σελίδα προέλευσης.

Ο έλεγχος αυτός ανταποκρίνεται στον καταγεγραμμένο σκοπό του Shiori: είναι bookmark manager που αρχειοθετεί περιεχόμενο σελίδων. Παράλληλα, αποκαλύπτει νωρίτερα τις ελλείψεις dependencies, τις λανθασμένες παραδοχές για τον proxy και τα ephemeral δεδομένα απ’ ό,τι ένα uptime probe.

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

Η υγεία της διεργασίας και η υγεία του προϊόντος είναι διαφορετικά πράγματα στο Shiori. Το port 8080 μπορεί να απαντά, ενώ η συναλλαγή που βλέπει ο χρήστης εξακολουθεί να αποτυγχάνει. Η εξωτερική απαίτηση του Shiori είναι ένα writable data volume και outbound πρόσβαση στις σελίδες που αρχειοθετούνται. Ελέγξτε το outbound DNS, το TLS και τη συμπεριφορά του provider χωρίς να δημοσιεύσετε άλλη inbound υπηρεσία.

Χρησιμοποιήστε αυτή την άσκηση ετοιμότητας μετά από κάθε ουσιαστική αλλαγή ρυθμίσεων: αποθηκεύστε ένα bookmark με archived content, αναζητήστε το, επεξεργαστείτε τα tags και επιβεβαιώστε ότι το archive παραμένει διαθέσιμο αφού αλλάξει η σελίδα προέλευσης. Κρατήστε τους ακριβούς εξωτερικούς ελέγχους έξω από τα liveness probes, ώστε μια διακοπή λειτουργίας του provider να μην προκαλεί restart loop. Η μελέτη χωρητικότητας θα πρέπει να παρακολουθεί το browser-based page capture, το μέγεθος των archives, τα thumbnails και το outbound fetching, καθώς αυτά αποτυπώνουν καλύτερα την πραγματική πίεση στο Shiori από ό,τι τα page requests.

Επαναφέρετε το Shiori σε άδειο host

Καταγράψτε την κατάσταση πριν δημιουργηθεί η πρώτη πραγματική εγγραφή: τη βάση δεδομένων, το αρχειοθετημένο περιεχόμενο σελίδων, τα thumbnails και τις ρυθμίσεις. Κάντε mount το /shiori πριν από το bootstrap, γράψτε ακίνδυνα sample data και αντικαταστήστε το container, ώστε να αποδείξετε ότι η συγκεκριμένη διαδρομή είναι πράγματι persistent. Επιβεβαιώστε το mount γράφοντας ακίνδυνα δεδομένα, αντικαθιστώντας το Shiori και διαβάζοντάς τα ξανά.

Τα snapshots είναι χρήσιμα για γρήγορο rollback, όμως χρειάζεται ανεξάρτητο backup όταν χαθεί ο host ή το volume. Κάντε restore σε ένα άδειο περιβάλλον με το pinned image και επιβεβαιώστε ότι επιστρέφουν τα bookmarks, τα tags, τα archive files και οι λογαριασμοί, καθώς και ότι ένας ανενεργός σύνδεσμος πηγής εξακολουθεί να ανοίγει το αποθηκευμένο περιεχόμενό του. Χρησιμοποιήστε τα persistent volumes και snapshots, ώστε να διατηρείτε ξεχωριστούς αυτούς τους δύο μηχανισμούς ανάκτησης.

Αποφάσεις ασφάλειας ειδικά για το Shiori

Ο ειδικός για την εφαρμογή κίνδυνος ασφάλειας είναι να παραμείνει ο αρχικός λογαριασμός αμετάβλητος σε ένα public instance. Η επιχειρησιακή λύση είναι να αντικαταστήσετε τον αρχικό λογαριασμό, να περιορίσετε το public sharing και να αντιμετωπίζετε τα archived private URLs ως ευαίσθητο περιεχόμενο. Ολοκληρώστε το bootstrap μέσω μιας restricted route και αφαιρέστε αμέσως μετά την προσωρινή πρόσβαση εγκατάστασης.

Το SHIORI_DIR ελέγχει τη συμπεριφορά και όχι την εμπιστευτικότητα· επικυρώστε τον τύπο και την τιμή του και αποθηκεύστε τα πραγματικά credentials του Shiori ξεχωριστά. Δώστε στη διεργασία του Shiori μόνο τα documented mounts και τα dependency routes· αποφύγετε την πρόσβαση στο host root και στο Docker socket. Καταγράφετε τις αποτυχημένες προσπάθειες authentication και τα configuration errors, αλλά κάντε redact τα tokens, τα connection strings και το περιεχόμενο των χρηστών.

Ένας production acceptance έλεγχος για το Shiori

Ένα release candidate του Shiori κερδίζει το δικαίωμα να δεχτεί traffic ολοκληρώνοντας ένα προκαθορισμένο σενάριο: αποθηκεύστε ένα bookmark με archived content, αναζητήστε το, επεξεργαστείτε τα tags και επιβεβαιώστε ότι το archive παραμένει διαθέσιμο αφού αλλάξει η σελίδα προέλευσης. Καταγράψτε το image digest, την effective non-secret configuration, το public origin και τα timestamps για αυτό το σενάριο. Τα test data θα πρέπει να είναι disposable, αλλά αρκετά ρεαλιστικά ώστε να ελέγχουν την ίδια διαδρομή που χρησιμοποιούν οι χρήστες.

Εκτελέστε τον έλεγχο μετά την αντικατάσταση του runtime και στη συνέχεια κάντε rebuild την υπηρεσία από τη βάση δεδομένων, το αρχειοθετημένο περιεχόμενο σελίδων, τα thumbnails και τις ρυθμίσεις. Η ανάκτηση θεωρείται επιτυχής όταν επιστρέφουν τα bookmarks, τα tags, τα archive files και οι λογαριασμοί και ένας ανενεργός σύνδεσμος πηγής εξακολουθεί να ανοίγει το αποθηκευμένο περιεχόμενό του. Συγκρίνετε τις μετρήσεις πόρων για το browser-based page capture, το μέγεθος των archives, τα thumbnails και το outbound fetching με την προηγούμενη έκδοση και διερευνήστε κάθε ουσιαστική απόκλιση πριν από το promotion.

Τέλος, ελέγξτε την εξής ελεγχόμενη αστοχία: αρνηθείτε προσωρινά την πρόσβαση στη διαδρομή ελέγχου που χρησιμοποιείται από ένα writable data volume και στο outbound access προς τις σελίδες που αρχειοθετούνται. Επιβεβαιώστε ότι το Shiori εξηγεί την αποτυχία, δεν καταστρέφει την υπάρχουσα κατάσταση και συνεχίζει κανονικά όταν αποκατασταθεί η σωστή συνθήκη. Αποθηκεύστε ένα redacted απόσπασμα log και τον χρόνο ανάκτησης. Όλοι αυτοί οι έλεγχοι καλύπτουν τη συμπεριφορά, την ανθεκτικότητα και τη λειτουργική διαχείριση — όχι απλώς το uptime της διεργασίας.

Εκκινήστε το Shiori με observable defaults

Διατηρήστε την αρχική εκκίνηση του Shiori αρκετά reproducible, ώστε να μπορεί να ελεγχθεί σε ένα pull request.

docker run -d \
  --name shiori \
  --restart unless-stopped \
  -p 127.0.0.1:8080:8080 \
  -v shiori-data:/shiori \
  -e SHIORI_DIR=/shiori \
  ghcr.io/go-shiori/shiori:latest

Μην βασίζεστε στο latest αφού υπάρχουν πραγματικά δεδομένα. Καταγράψτε το working digest, τον χρήστη του container και το ownership του mount. Παρακολουθήστε το application log σε ολόκληρο το test — αποθηκεύστε ένα bookmark με archived content, αναζητήστε το, επεξεργαστείτε τα tags και επιβεβαιώστε ότι το archive παραμένει διαθέσιμο αφού αλλάξει η σελίδα προέλευσης — και σημειώστε τυχόν migrations πριν βάλετε τη διαδρομή πίσω από production traffic.

Domains, proxy headers και port 8080

Αντιμετωπίστε το εξωτερικό URL του Shiori ως ρύθμιση που διατηρείται στα redeploys. Αρχικά δρομολογήστε το UI και το API μέσω ενός σταθερού HTTPS origin· στη συνέχεια δρομολογήστε το hostname στο port 8080, διατηρώντας ανέπαφα το original host και το scheme.

Το checklist reachability για το deployment μπορεί να αποδείξει ότι τα requests φτάνουν στο container. Από εκεί και πέρα, η γνωστή αστοχία — η αρχειοθέτηση αποτυγχάνει επειδή οι dependencies του Chromium ή τα filesystem permissions είναι λανθασμένα — θα πρέπει να διερευνηθεί στο Shiori, στην κατάστασή του ή στο workload του και όχι στο certificate automation.

Κάντε upgrade στο Shiori χωρίς εικασίες

Το πρώτο χρήσιμο operational metric για το Shiori είναι αν μπορεί να αποθηκεύσει ένα bookmark με archived content, να το αναζητήσει, να επεξεργαστεί τα tags και να επιβεβαιώσει ότι το archive παραμένει διαθέσιμο αφού αλλάξει η σελίδα προέλευσης. Συνδυάστε το με saturation signals για browser-based page capture, archive size, thumbnails και outbound fetching. Ένα process-only probe δεν θα πρέπει να καλεί ακριβές dependencies ούτε να κάνει restart στο container επειδή ένα upstream είναι προσωρινά μη διαθέσιμο.

Αντιμετωπίστε τα upgrades ως αλλαγές δεδομένων, επειδή τα database migrations του Shiori και οι dependencies για page capture μπορούν να αλλάξουν τη συμπεριφορά των archives. Κάντε pin τις εκδόσεις, κάντε rehearse σε restored state και διατηρήστε διαθέσιμο το προηγούμενο image μέχρι να παραμένει έγκυρο ένα rollback. Όταν η αρχειοθέτηση αποτυγχάνει επειδή οι dependencies του Chromium ή τα filesystem permissions είναι λανθασμένα, διατηρήστε τα logs από πριν από το restart· συνήθως περιέχουν το μήνυμα που εξηγεί την αιτία.

Τι θα πρέπει να αυτοματοποιεί το Dockup για το Shiori

Το platform layer για το Shiori αποτελείται από το port 8080, το ingress, το TLS, το runtime configuration, το storage και το dependency reachability. Το Dockup μπορεί να αναπαράγει αυτά τα στοιχεία για τη δική του υποδομή ή για έναν server στον οποίο συνδέεται ο πελάτης.

Στη συνέχεια, ο operator ολοκληρώνει το product layer: δρομολογεί το UI και το API μέσω ενός σταθερού HTTPS origin· εφαρμόζει αυτόν τον κανόνα πρόσβασης — αντικατάσταση του αρχικού λογαριασμού, περιορισμός του public sharing και αντιμετώπιση των archived private URLs ως ευαίσθητου περιεχομένου· και εκτελεί το «αποθηκεύστε ένα bookmark με archived content, αναζητήστε το, επεξεργαστείτε τα tags και επιβεβαιώστε ότι το archive παραμένει διαθέσιμο αφού αλλάξει η σελίδα προέλευσης». Η καταγραφή αυτού του test μαζί με το deployment αποτρέπει τη σύγχυση μεταξύ automated provisioning και application readiness.

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

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

Δρομολογήστε το container του Shiori στο port 8080 μέσω ενός HTTPS origin. Η εξωτερική απαίτηση delivery είναι ένα writable data volume και outbound πρόσβαση στις σελίδες που αρχειοθετούνται. Μην θεωρήσετε το Shiori έτοιμο μέχρι να μπορείτε να αποθηκεύσετε ένα bookmark με archived content, να το αναζητήσετε, να επεξεργαστείτε τα tags και να επιβεβαιώσετε ότι το archive παραμένει διαθέσιμο αφού αλλάξει η σελίδα προέλευσης.

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

Κάντε persist το /shiori και συμπεριλάβετε τη βάση δεδομένων, το αρχειοθετημένο περιεχόμενο σελίδων, τα thumbnails και τις ρυθμίσεις στο ίδιο recovery manifest. Ένα clean restore του Shiori θεωρείται επιτυχές μόνο όταν επιστρέφουν τα bookmarks, τα tags, τα archive files και οι λογαριασμοί και ένας ανενεργός σύνδεσμος πηγής εξακολουθεί να ανοίγει το αποθηκευμένο περιεχόμενό του.

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

Χρησιμοποιήστε HTTPS για το public origin του Shiori και διατηρήστε το port 8080 στο internal route. Εφαρμόστε σωστά τη ρύθμιση του Shiori: δρομολογήστε το UI και το API μέσω ενός σταθερού HTTPS origin. Για το Shiori, το HTTPS προστατεύει τα credentials ή το περιεχόμενο των χρηστών κατά τη μεταφορά και διατηρεί συνεπή τη συμπεριφορά του client που εξαρτάται από το origin.

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

Κάντε restore την τρέχουσα κατάσταση του Shiori σε ένα isolated deployment, εφαρμόστε την υποψήφια έκδοση και επαναλάβετε τη transaction αποδοχής. Δώστε ιδιαίτερη προσοχή, επειδή τα database migrations του Shiori και οι dependencies για page capture μπορούν να αλλάξουν τη συμπεριφορά των archives. Διατηρήστε το προηγούμενο image του Shiori μέχρι να κατανοήσετε τα όρια του data migration και του rollback.