مستندات تیمی معمولاً به یکی از دو شکل میمیرد: پراکنده در رشتههای چت که هیچکس نمیتواند در آنها جستجو کند، یا دفنشده در ویکیای آنقدر بدقلق که کسی بهروزش نمیکند. BookStack همان ویکی خودمیزبان کمیابی است که مردم واقعاً از آن استفاده میکنند. محتوا در قفسهها، کتابها، فصلها و صفحهها چیده میشود — ساختاری که همه بدون آموزش میفهمند. و تقریباً به هیچ سروری نیاز ندارد.
چرا BookStack
- ساختار روشن. کتابها و فصلها به جای انبوهی تخت از صفحهها.
- ویرایشی که کسی را نمیترساند. ویرایشگر WYSIWYG بهطور پیشفرض، و Markdown برای کسانی که ترجیحش میدهند.
- دسترسیهای واقعی. نقشها برای هر قفسه، کتاب یا صفحه — اسناد منابع انسانی دور از پیمانکاران میماند.
- ورود سازمانی. LDAP، SAML2 و OpenID Connect داخلیاند.
- دادههای شما. همه چیز در یک پایگاه دادهی MariaDB و یک پوشه روی سرور شماست.
ابزار مناسب همه چیز نیست. مستندات توسعهدهنده که باید همراه کد تغییر کند جایش در مخزن است، نه در ویکی.
چه چیزهایی لازم دارد
BookStack سبک است. برای بیشتر تیمها Micro-IP — ۱ vCPU، ۲ گیگابایت، ماهی ۱۰ دلار — بیش از کافی است. IP اختصاصی همان چیزی است که به همکاران اجازه میدهد از طریق HTTPS روی دامنهی شما به آن برسند. دیسک با اسکرینشاتها و PDFهای آپلودشده بزرگ میشود، نه با تعداد صفحهها.
نصب با Docker Compose
از ایمیجهای پرکاربرد 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 در راهنمای استقرار استک بیشتر بخوانید.
HTTPS و اولین ورود
یک زیردامنه را به سرور وصل کنید (چطور)، nginx را جلوی 127.0.0.1:6875 بگذارید و با certbot گواهی اضافه کنید — راهنمای reverse proxy قدمبهقدم همراهتان است.
سپس با حساب پیشفرض وارد شوید: admin@admin.com / password. ایمیل و رمز را فوراً عوض کنید، پیش از اینکه لینک را به اشتراک بگذارید. بقیه حساب خودشان را میگیرند یا از طریق ارائهدهندهی هویت شما وارد میشوند.
پشتیبانگیری
دو چیز باید محافظت شود: پایگاه داده و آپلودهای داخل ./bookstack. یک کار شبانه مثل این، پایگاه داده را پوشش میدهد:
docker compose exec -T db mysqldump -u bookstack -pchange-me bookstack > /var/backups/bookstack.sql
بعد از /var/backups و پوشهی compose بیرون از سرور پشتیبان بگیرید — دقیقاً کاری که راهنمای restic انجام میدهد. Managed Backups هم روی آن نقطههای بازیابی روزانه از کل سرور اضافه میکند.
نگهداری
بهروزرسانی یعنی docker compose pull && docker compose up -d. BookStack مهاجرتهای پایگاه داده را هنگام شروع اجرا میکند. پیش از نسخههای اصلی یادداشتهای انتشار را بخوانید؛ کوتاه و روشناند.
اگر تیمتان جایی برای تیکتها و کد هم میخواهد، یک سرور Git خودمیزبان بهخوبی کنارش مینشیند، روی همان نوع پلن.
نظرات
هنوز نظری نیست. اولین نفر باشید.