Η τεκμηρίωση μιας ομάδας συνήθως πεθαίνει με έναν από δύο τρόπους: σκορπισμένη σε νήματα chat που κανείς δεν μπορεί να ψάξει, ή θαμμένη σε ένα wiki τόσο δύσχρηστο που κανείς δεν το ενημερώνει. Το BookStack είναι εκείνο το σπάνιο wiki σε δικό σας server που ο κόσμος πραγματικά χρησιμοποιεί. Το περιεχόμενο μπαίνει σε ράφια, βιβλία, κεφάλαια και σελίδες — μια δομή που όλοι καταλαβαίνουν χωρίς εκπαίδευση. Και δεν θέλει σχεδόν καθόλου server.
Γιατί BookStack
- Προφανής δομή. Βιβλία και κεφάλαια αντί για έναν επίπεδο σωρό σελίδων.
- Επεξεργασία που δεν τρομάζει κανέναν. Editor WYSIWYG από προεπιλογή, Markdown για όσους το προτιμούν.
- Κανονικά δικαιώματα. Ρόλοι ανά ράφι, βιβλίο ή σελίδα — τα έγγραφα HR μένουν μακριά από εξωτερικούς συνεργάτες.
- Εταιρική σύνδεση. LDAP, SAML2 και OpenID Connect είναι ενσωματωμένα.
- Τα δεδομένα σας. Όλα βρίσκονται σε μια βάση MariaDB και έναν φάκελο στον server σας.
Δεν είναι το σωστό εργαλείο για τα πάντα. Η τεκμηρίωση για προγραμματιστές που πρέπει να αλλάζει μαζί με τον κώδικα ανήκει στο αποθετήριο, όχι σε wiki.
Τι χρειάζεται
Το BookStack είναι ελαφρύ. Για τις περισσότερες ομάδες, το Micro-IP — 1 vCPU, 2 GB, $10 τον μήνα — είναι υπεραρκετό. Η αποκλειστική IP είναι αυτό που επιτρέπει στους συναδέλφους να το φτάνουν μέσω HTTPS στο domain σας. Ο δίσκος μεγαλώνει με τα ανεβασμένα screenshots και PDF, όχι με τον αριθμό των σελίδων.
Εγκατάσταση με Docker Compose
Θα χρησιμοποιήσουμε τα δημοφιλή images του LinuxServer.io. Πρώτα δημιουργήστε ένα κλειδί εφαρμογής:
docker run -it --rm --entrypoint /bin/bash lscr.io/linuxserver/bookstack:latest appkey
Αντιγράψτε την τιμή base64:... που εμφανίζεται. Μετά δημιουργήστε το docker-compose.yml:
services:
bookstack:
image: lscr.io/linuxserver/bookstack:latest
environment:
- PUID=1000
- PGID=1000
- APP_URL=https://wiki.example.com
- APP_KEY=base64:paste-your-key-here
- DB_HOST=db
- DB_PORT=3306
- DB_DATABASE=bookstack
- DB_USERNAME=bookstack
- DB_PASSWORD=change-me
volumes:
- ./bookstack:/config
ports:
- 127.0.0.1:6875:80
depends_on:
- db
restart: unless-stopped
db:
image: lscr.io/linuxserver/mariadb:latest
environment:
- PUID=1000
- PGID=1000
- MYSQL_ROOT_PASSWORD=change-me-too
- MYSQL_DATABASE=bookstack
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=change-me
volumes:
- ./db:/config
restart: unless-stopped
docker compose up -d
docker compose logs -f bookstack
Το APP_URL πρέπει να ταιριάζει με τη διεύθυνση που θα χρησιμοποιεί ο κόσμος, μαζί με το https://. Αν κάνετε λάθος, εικόνες και σύνδεσμοι χαλάνε με περίεργους τρόπους. Περισσότερα για το Compose στον οδηγό μας για ανάπτυξη stack.
HTTPS και πρώτη σύνδεση
Δείξτε ένα subdomain στον server (πώς), βάλτε nginx μπροστά από το 127.0.0.1:6875 και προσθέστε πιστοποιητικό με certbot — ο οδηγός για reverse proxy σας καθοδηγεί βήμα βήμα.
Μετά συνδεθείτε με τον προεπιλεγμένο λογαριασμό: admin@admin.com / password. Αλλάξτε email και κωδικό αμέσως, πριν μοιραστείτε το link. Όλοι οι άλλοι παίρνουν δικό τους λογαριασμό ή συνδέονται μέσω του παρόχου ταυτότητάς σας.
Αντίγραφα ασφαλείας
Δύο πράγματα προς προστασία: η βάση δεδομένων και τα ανεβασμένα αρχεία μέσα στο ./bookstack. Μια νυχτερινή εργασία σαν αυτή καλύπτει τη βάση:
docker compose exec -T db mysqldump -u bookstack -pchange-me bookstack > /var/backups/bookstack.sql
Μετά κρατήστε αντίγραφο του /var/backups και του φακέλου compose εκτός server — ακριβώς αυτό κάνει ο οδηγός μας για restic. Τα Managed Backups προσθέτουν από πάνω ημερήσια σημεία επαναφοράς όλου του server.
Συντήρηση
Η ενημέρωση είναι docker compose pull && docker compose up -d. Το BookStack τρέχει τα migrations της βάσης κατά την εκκίνηση. Διαβάζετε τις σημειώσεις έκδοσης πριν από κύριες εκδόσεις· είναι σύντομες και σαφείς.
Αν η ομάδα σας θέλει και χώρο για tickets και κώδικα, ένας Git server σε δικό σας server κάθεται ωραία δίπλα του, στο ίδιο είδος πλάνου.
Σχόλια
Δεν υπάρχουν ακόμη σχόλια. Γίνετε ο πρώτος.