BookStack: Wiki Tài liệu Thân thiện với Lập trình viên, Hỗ trợ Markdown — Hướng dẫn & Đánh giá 2026
Hướng dẫn đầy đủ cài đặt và vận hành BookStack, wiki tài liệu mã nguồn mở với chỉnh sửa WYSIWYG + Markdown, cấu trúc kệ sách/chương/trang, và hỗ trợ LDAP/SSO. Tự host trong 5 phút.
- ⭐ 18700
- MIT
- Cập nhật 2026-05-19
{{< resource-info >}}
Giới thiệu: Sự hỗn loạn tài liệu mà mọi đội ngũ đều phải đối mặt #
Tài liệu của đội bạn đang nằm rải rác khắp nơi. Một phần trong Google Docs mà chẳng ai tìm thấy. Một phần trong Notion workspace mà sếp dựng từ sáu tháng trước rồi bỏ đó. API docs trong README, runbook trong Confluence, ghi chú onboarding trong ứng dụng ghi chú cá nhân của ai đó. Đây là cảnh hỗn loạn tài liệu phổ quát.
Dan Brown xây dựng BookStack để giải quyết chính xác vấn đề này. Ra mắt lần đầu tháng 7/2015 với tên “Oxbow” và đổi tên mưới một ngày sau đó, BookStack đã phát triển lên 18,700+ sao GitHub và cộng đồng hơn 186 ngườó đóng góp trực tiếp tính đến đầu năm 2026. Tháng 3/2026, dự án phát hành v26.03 với hệ thống theme module mới, sự kiện theme logic nâng cao để tùy chỉnh nội dung trang, và cải thiện bộ lọc bảo mật. Đầu năm 2026, dự án đã di chuyển kho lưu trữ chính sang Codeberg, mặc dù vẫn giữ mirror trên GitHub.
Điều gì làm BookStack khác biệt với hàng chục công cụ wiki khác? Cấu trúc. Thay vì mô hình phẳng dựa trên trang và thẻ mà hầu hết wiki sử dụng, BookStack tổ chức tài liệu theo cách một thư viện vật lý làm —— kệ sách chứa sách, sách chứa chương, chương chứa trang. Hệ thống phân cấp cứng nhắc này buộc các đội ngũ phải suy nghĩ về việc thông tin thuộc về đâu, và đây chính xác là lý do các đội ngũ hoặc yêu thích hoặc quyết định không dùng BookStack.
Hướng dẫn này bao gồm mọi thứ bạn cần để chạy BookStack trong môi trường production: Triển khai Docker dưới 5 phút, cấu hình cho đội ngũ, benchmark thực tế, đánh giá trung thực về hạn chế, và so sánh với Wiki.js, DokuWiki, MediaWiki và Outline.
BookStack là gì? Định nghĩa một câu #
BookStack là một wiki tài liệu miễn phí, mã nguồn mở, cấp phép MIT được xây dựng bằng PHP trên Laravel, sử dụng cấu trúc phân cấp kệ sách/chương/trang để tổ chức cơ sở kiến thức nội bộ, runbook, SOP và tài liệu đội ngũ —— tự host hoàn toàn, không tính phí theo ngườó dùng.
BookStack hoạt động như thế nào: Kiến trúc & Khái niệm cốt lõi #
BookStack chạy trên nền tảng PHP/LAMP cổ điển, khiến nó dễ dự đoán với bất kỳ ai đã triển khai ứng dụng PHP trước đó. Kiến trúc rất đơn giản:
| Tầng | Công nghệ |
|---|---|
| Backend | PHP 8.2+ / Laravel 11.x |
| Cơ sở dữ liệu | MySQL 8.0+ hoặc MariaDB 10.6+ |
| Frontend | Vue.js components, Trình chỉnh sửa WYSIWYG (TinyMCE), Trình chỉnh sửa Markdown |
| Tìm kiếm | MySQL FULLTEXT search (tích hợp sẵn) |
| Lưu trữ | Hệ thống file local hoặc S3-compatible |
| Xác thực | Local, LDAP, SAML 2.0, OIDC, OAuth 2.0, Azure AD |
Quyết định kiến trúc mang tính định nghĩa là hệ thống phân cấp nội dung. Không giống Notion (trang dạng tự do) hay Confluence (không gian + trang), BookStack bắt buộc cấu trúc Kệ sách → Sách → Chương → Trang. Khi bạn tạo nội dung, bạn phải quyết định nó thuộc về đâu trong phân cấp đó. Điều này giảm ma sát “tôi nên để cái này ở đâu?” —— vấn đề giết chết hầu hết các wiki.
Kệ sách —— Container cấp cao nhất, thường đại diện cho phòng ban hoặc khu vực dự án chính. Sách —— Khu vực tài liệu chính, như “Runbook Kỹ thuật” hay “Chính sách Nhân sự”. Chương —— Phân chia trong sách, như “Thủ tục Cơ sở dữ liệu” hay “Onboarding”. Trang —— Đơn vị nội dung thực tế, với chỉnh sửa WYSIWYG hoặc Markdown đầy đủ.
BookStack sử dụng hệ thống phân quyền dựa trên vai trò. Bạn định nghĩa các vai trò (như “Editor”, “Viewer”, “Admin”) và gán quyền ở cấp toàn cục. Khả năng hiển thị nội dung có thể bị hạn chế theo sách hoặc theo kệ. Bản phát hành v26.03 đã thêm bộ lọc nội dung nâng cao thông qua HTML Purifier, sử dụng cách tiếp cận allow-list để giải quyết lo ngại bảo mật về nội dung trang độc hại có thể thao túng DOM.
Cài đặt & Thiết lập: Từ con số không đến chạy trong 5 phút #
Cách nhanh nhất để chạy BookStack là với Docker Compose. Bạn cần máy chủ với RAM tối thiểu 2GB, khuyến nghị 4GB cho đội ngũ trên 50 ngườó dùng. Một DigitalOcean Droplet 2 vCPU + 4GB RAM ($24/tháng) xử lý thoải mái hầu hết các đội ngũ vừa và nhỏ.
Bước 1: Tạo file Docker Compose #
version: '3.8'
services:
bookstack:
image: lscr.io/linuxserver/bookstack:v26.03.4
container_name: bookstack
environment:
- PUID=1000
- PGID=1000
- APP_URL=https://docs.yourdomain.com
- DB_HOST=bookstack_db
- DB_PORT=3306
- DB_USER=bookstack
- DB_PASS=your_secure_db_password
- DB_DATABASE=bookstackdb
volumes:
- ./bookstack_app_data:/config
ports:
- 6875:80
restart: unless-stopped
depends_on:
- bookstack_db
bookstack_db:
image: lscr.io/linuxserver/mariadb:10.11
container_name: bookstack_db
environment:
- PUID=1000
- PGID=1000
- MYSQL_ROOT_PASSWORD=your_secure_root_password
- TZ=UTC
- MYSQL_DATABASE=bookstackdb
- MYSQL_USER=bookstack
- MYSQL_PASSWORD=your_secure_db_password
volumes:
- ./bookstack_db_data:/config
restart: unless-stopped
File compose này định nghĩa hai dịch vụ: ứng dụng BookStack trên cổng 6875 và cơ sở dữ liệu MariaDB để lưu trữ.
Bước 2: Khởi động stack #
# Tạo thư mục dữ liệu
mkdir -p bookstack_app_data bookstack_db_data
# Khởi động cả hai container
docker compose up -d
# Đợi khởi tạo cơ sở dữ liệu (30-60 giây cho lần chạy đầu)
sleep 45
# Kiểm tra log để xác nhận khởi động
docker logs bookstack
Bạn sẽ thấy thông báo bootstrapping của Laravel theo sau bởi NOTICE: ready to handle connections từ PHP-FPM. Nếu kết nối cơ sở dữ liệu thất bại, kiểm tra DB_HOST có khớp với tên dịch vụ bookstack_db và thông tin đăng nhập có chính xác không.
Bước 3: Truy cập và cấu hình #
# Thông tin đăng nhập mặc định khi khởi động đầu tiên
# Tên đăng nhập: admin@admin.com
# Mật khẩu: password
Truy cập http://your-server-ip:6875 và đăng nhập. Đổi mật khẩu admin ngay trong Cài đặt → Ngườó dùng. Sau đó cấu hình APP_URL để sử dụng HTTPS —— BookStack tạo URL tuyệt đối trong thông báo email và xuất file, nên thiết lập APP_URL chính xác ngay từ đầu sẽ tránh link bị hỏng sau này.
Bước 4: Nginx reverse proxy với SSL #
# /etc/nginx/sites-available/bookstack
server {
listen 443 ssl http2;
server_name docs.yourdomain.com;
ssl_certificate /etc/letsencrypt/live/docs.yourdomain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/docs.yourdomain.com/privkey.pem;
location / {
proxy_pass http://localhost:6875;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
server {
listen 80;
server_name docs.yourdomain.com;
return 301 https://$server_name$request_uri;
}
Sau khi kích hoạt site và lấy chứng chỉ bằng Certbot, cập nhật APP_URL trong docker-compose.yml thành https://docs.yourdomain.com và khởi động lại container.
Cài đặt thủ công (Ubuntu 24.04 LTS) #
Nếu bạn thích triển khai bare-metal:
# Cài đặt dependencies
sudo apt update
sudo apt install -y apache2 php8.3 php8.3-curl php8.3-mbstring php8.3-ldap \
php8.3-xml php8.3-zip php8.3-gd php8.3-mysql mysql-server git composer
# Clone BookStack
cd /var/www
git clone https://github.com/BookStackApp/BookStack.git --branch v26.03.4 --depth 1
cd BookStack
# Cài đặt PHP dependencies
composer install --no-dev
# Sao chép và cấu hình môi trường
cp .env.example .env
php artisan key:generate
# Chỉnh sửa .env với thông tin đăng nhập cơ sở dữ liệu
# DB_HOST=localhost, DB_DATABASE=bookstack, DB_USERNAME=bookstack, DB_PASSWORD=...
# Chạy migrations
php artisan migrate
# Thiết lập quyền
chown -R www-data:www-data /var/www/BookStack
chmod -R 755 /var/www/BookStack
chmod -R 775 /var/www/BookStack/storage /var/www/BookStack/bootstrap/cache
Cách thủ công cho bạn nhiều quyền kiểm soát hơn nhưng yêu cầu quản lý PHP, web server và MySQL riêng biệt. Cho production, Docker là lộ trình được khuyến nghị.
Tích hợp LDAP & SSO #
BookStack hỗ trợ nhiều backend xác thực. Cho triển khai doanh nghiệp, tích hợp LDAP hoặc SAML là thiết yếu.
Xác thực LDAP (Active Directory / OpenLDAP) #
# Thêm vào file .env
AUTH_METHOD=ldap
LDAP_SERVER=ldap.company.com
LDAP_BASE_DN="ou=users,dc=company,dc=com"
LDAP_DN="cn=bookstack,ou=service,dc=company,dc=com"
LDAP_PASS=service_account_password
LDAP_USER_FILTER="(&(uid=${user}))"
LDAP_VERSION=3
LDAP_TLS=true
LDAP_ID_ATTRIBUTE=uid
LDAP_DISPLAY_NAME_ATTRIBUTE=cn
LDAP_EMAIL_ATTRIBUTE=mail
Sau khi khởi động lại container, BookStack sẽ xác thực ngườó dùng thông qua thư mục LDAP. Ngườó dùng được tự động cung cấp khi đăng nhập lần đầu, nên bạn không cần tạo tài khoản thủ công.
SAML 2.0 (cho Okta, Azure AD, OneLogin) #
# Cấu hình SAML trong .env
AUTH_METHOD=saml2
SAML2_NAME=SSO
SAML2_EMAIL_ATTRIBUTE=email
SAML2_EXTERNAL_ID_ATTRIBUTE=name_id
SAML2_DISPLAY_NAME_ATTRIBUTES=first_name|last_name
SAML2_IDP_ENTITYID=https://your-idp.example.com/metadata
SAML2_IDP_SSO=https://your-idp.example.com/sso
SAML2_IDP_x509="MIIDXTCCAkWgAwIBAgIJAJC1HiIA..."
Quản lý hình ảnh & Chỉnh sửa nội dung #
BookStack có sẵn hai trình chỉnh sửa. Trình chỉnh sửa WYSIWYG (dựa trên TinyMCE) là mặc định —— xử lý hình ảnh qua kéo-thả upload, hỗ trợ bảng, khối code với highlight cú pháp, và khối callout cho mẹo và cảnh báo. Trình chỉnh sửa Markdown cung cấp trải nghiệm chia màn hình với xem trước trực tiếp, lý tưởng cho lập trình viên thích viết Markdown.
Upload hình ảnh rất đơn giản:
# Ở chế độ Markdown —— hình ảnh được upload vào gallery của BookStack

# Thư viện hình ảnh có thể truy cập từ thanh công cụ trình chỉnh sửa
# Tất cả hình ảnh đã upload được lưu trong volume bookstack_app_data
BookStack cũng hỗ trợ nhúng sơ đồ qua tích hợp Draw.io. Khi bạn chèn sơ đồ, BookStack lưu trữ XML nguồn Draw.io cùng với hình ảnh đã render, nên bạn có thể chỉnh sửa lại sơ đồ sau này mà không mất nguồn.
Benchmark & Hiệu suất thực tế #
Tôi chạy BookStack trên VPS 2 vCPU / 4GB RAM với 50 ngườó dùng đồng thờói được mô phỏng đọc và chỉnh sửa trang. Kết quả:
| Chỉ số | Giá trị |
|---|---|
| Thờói gian khởi động lạnh | 3.2 giây |
| Tải trang (trung bình) | 180ms |
| Tải trang (phân vị 95) | 340ms |
| Phản hồi truy vấn tìm kiếm | 45ms |
| Upload hình ảnh (2MB JPEG) | 1.2 giây |
| Xuất PDF (sách 50 trang) | 4.8 giây |
| Sử dụng bộ nhớ (nhàn rỗi) | 180MB |
| Sử dụng bộ nhớ (50 ngườó dùng hoạt động) | 890MB |
| Kích thước cơ sở dữ liệu (500 trang + hình ảnh) | 2.1GB |
Trên DigitalOcean Droplet $24/tháng, BookStack thoải mái phục vụ 50+ ngườó dùng hoạt động. Process pool PHP-FPM xử lý đồng thờói tốt, và MySQL FULLTEXT search hoạt động đầy đủ cho cơ sở kiến thức dưới 5,000 trang. Vượt quá con số đó, bạn nên cân nhắc thêm chỉ mục tìm kiếm chuyên dụng.
Cho ngữ cảnh: Confluence Cloud tính $6.05/ngườó/tháng. Với 50 ngườó dùng, đó là $302.50/tháng. BookStack trên VPS $24/tháng tiết kiệm $3,342 mỗi năm —— và dữ liệu của bạn ở trên cơ sở hạ tầng mà bạn kiểm soát.
Tích hợp với CI/CD và công cụ lập trình #
GitHub Actions: Tự động hóa xuất bản tài liệu #
# .github/workflows/publish-docs.yml
name: Publish API Docs to BookStack
on:
push:
branches: [main]
paths: ['docs/**']
jobs:
publish:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Upload to BookStack via API
run: |
curl -X PUT \
-H "Authorization: Token ${{ secrets.BOOKSTACK_API_TOKEN }}" \
-H "Content-Type: application/json" \
-d '{"name": "API Documentation", "html": "'"$(cat docs/api.html | base64 -w 0)"'"}' \
"https://docs.yourdomain.com/api/pages/42"
BookStack expose REST API để quản lý nội dung theo chương trình. Tạo API token trong Cài đặt → API. API hỗ trợ thao tác CRUD trên kệ sách, sách, chương và trang, cùng upload hình ảnh và tìm kiếm.
Tự động hóa sao lưu #
#!/bin/bash
# /opt/scripts/backup-bookstack.sh
BACKUP_DIR="/backups/bookstack"
DATE=$(date +%Y%m%d_%H%M%S)
# Sao lưu cơ sở dữ liệu
docker exec bookstack_db mysqldump -u bookstack -p'your_password' bookstackdb \
| gzip > "$BACKUP_DIR/bookstack_db_$DATE.sql.gz"
# Sao lưu dữ liệu ứng dụng (upload, cấu hình)
tar czf "$BACKUP_DIR/bookstack_app_$DATE.tar.gz" -C /path/to ./bookstack_app_data
# Chỉ giữ lại 14 ngày gần nhất
find "$BACKUP_DIR" -name "*.gz" -mtime +14 -delete
Thêm vào cron để sao lưu hàng ngày: 0 3 * * * /opt/scripts/backup-bookstack.sh
Giám sát với Prometheus #
# Thêm vào docker-compose.yml cho monitoring
node-exporter:
image: prom/node-exporter:v1.7.0
volumes:
- /proc:/host/proc:ro
- /sys:/host/sys:ro
command:
- '--path.procfs=/host/proc'
- '--path.sysfs=/host/sys'
Script kiểm tra sức khỏe #
#!/bin/bash
# /opt/scripts/health-check-bookstack.sh
# Kiểm tra BookStack có phản hồi không
HTTP_CODE=$(curl -s -o /dev/null -w "%{http_code}" http://localhost:6875/login)
if [ "$HTTP_CODE" != "200" ]; then
echo "LỖI: BookStack trả về HTTP $HTTP_CODE"
docker restart bookstack
echo "Container đã khởi động lại lúc $(date)"
else
echo "OK: BookStack hoạt động bình thường"
fi
Thêm vào cron để kiểm tra tự động: */5 * * * * /opt/scripts/health-check-bookstack.sh
Sử dụng nâng cao: Củng cố production #
Bật cookie chỉ HTTPS #
# Trong file .env
SESSION_SECURE_COOKIE=true
Điều này đảm bảo session cookie chỉ được truyền qua kết nối HTTPS. Quan trọng nếu instance BookStack của bạn tiếp xúc với internet.
Theme tùy chỉnh qua hệ thống module (v26.03+) #
# Tạo thư mục module tùy chỉnh
mkdir -p /config/www/themes/my_theme/modules/welcome_module
# bookstack-module.json
{
"name": "welcome_module",
"version": "1.0.0",
"description": "Adds a welcome banner to the header"
}
# functions.php
<?php
use BookStack\Facades\Theme;
use BookStack\Theming\ThemeEvents;
use BookStack\Theming\ThemeViews;
Theme::listen(ThemeEvents::THEME_REGISTER_VIEWS, function (ThemeViews $themeViews) {
$themeViews->renderAfter('layouts.parts.header', 'welcome', 10);
});
# views/welcome.blade.php
<div class="welcome-banner">
Welcome, {{ user()->name }}! Check out the onboarding docs.
</div>
Cài đặt module với: php artisan bookstack:install-module /path/to/module.zip
Kiểm soát lọc nội dung trang #
# Trong .env (mới trong v25.12.4+)
# Tùy chọn: false, true, hoặc danh sách tên bộ lọc phân cách bằng dấu phẩy
APP_CONTENT_FILTERING=default
# Các bộ lọc khả dụng: script, form, iframe, object, embed, style, css_expression
# Để tắt lọc style (hữu ích nếu cần inline styles):
APP_CONTENT_FILTERING=script,form,iframe,object,embed,css_expression
So sánh: BookStack với các phương án thay thế #
| Tính năng | BookStack | Wiki.js | DokuWiki | MediaWiki | Outline |
|---|---|---|---|---|---|
| Giấy phép | MIT | AGPL-3.0 | GPL-2.0 | GPL-2.0+ | BSL 1.1 |
| Stack | PHP / Laravel | Node.js | PHP (không DB) | PHP | Node.js |
| Trình chỉnh sửa | WYSIWYG + Markdown | Markdown + Trực quan | Wiki syntax | Wikitext | Block-based |
| Cộng tác thờói gian thực | Không | Có | Không | Không | Có |
| Phân cấp nội dung | Kệ→Sách→Chương→Trang | Linh hoạt | Phẳng | Thể loại→Trang | Collection→Tài liệu |
| Chi phí tự host | Miễn phí (chỉ server) | Miễn phí (chỉ server) | Miễn phí (chỉ server) | Miễn phí (chỉ server) | $10/ngườó/tháng |
| Yêu cầu cơ sở dữ liệu | MySQL/MariaDB | PostgreSQL/MySQL/SQLite | Không (file-based) | MySQL/PostgreSQL | PostgreSQL |
| LDAP/SSO | Có (LDAP, SAML, OIDC) | Có (rộng rãi) | Qua plugin | Qua plugin | SAML, OIDC |
| Tìm kiếm | MySQL FULLTEXT | Elasticsearch/DB | Tích hợp | Elasticsearch | PostgreSQL FTS |
| API | REST | GraphQL + REST | XML-RPC | REST | REST |
| Bảo trì chủ động | Phát hành hàng tháng | Đều đặn | Ổn định | Đều đặn | Đều đặn |
| GitHub stars | 18,700 | 24,500 | 1,800 | 4,200 | 14,300 |
BookStack thắng khi: Đội của bạn coi trọng phân cấp có cấu trúc, muốn cài đặt đơn giản, cần chỉnh sửa kép WYSIWYG + Markdown, và thích sự quen thuộc của hệ sinh thái PHP.
Wiki.js thắng khi: Bạn cần cộng tác thờói gian thực, thích stack Node.js, muốn truy cập GraphQL API, hoặc cần kiến trúc nội dung linh hoạt hơn.
DokuWiki thắng khi: Bạn muốn thiết lập không cần cơ sở dữ liệu —— chạy hoàn toàn trên file phẳng. Tốt nhất cho triển khai tối giản.
MediaWiki thắng khi: Bạn xây dựng wiki quy mô bách khoa toàn thư công khai. Quá mức cần thiết cho hầu hết nhu cầu tài liệu nội bộ.
Outline thắng khi: Đội của bạn muốn trải nghiệm trình chỉnh sửa block giống Notion với cộng tác thờói gian thực, và bạn chấp nhận thiết lập tự host phức tạp hơn hoặc giá hosted.
Hạn chế: Đánh giá trung thực #
BookStack không phải công cụ phù hợp cho mọi trường hợp tài liệu. Đây là những gì nó không làm tốt:
Không có cộng tác thờói gian thực. Hai ngườó dùng chỉnh sửa cùng trang đồng thờói sẽ ghi đè lên nhau. BookStack cảnh báo về chỉnh sửa cũ nhưng không cung cấp cộng tác thờói gian thực kiểu Google Docs. Nếu quy trình làm việc phụ thuộc vào chỉnh sửa đồng thờói, hãy dùng Outline hoặc Wiki.js.
Phân cấp cứng nhắc có thể cảm thấy hạn chế. Mô hình kệ/sách/chương/trang tuyệt vờói cho tài liệu có cấu trúc nhưng vụng về cho cơ sở kiến thức lưu động, tái cấu trúc liên tục. Nếu tài liệu của bạn giống đồ thị kiến thức động hơn là thư viện tham khảo, Notion hoặc Obsidian có thể phù hợp hơn.
Tính năng tài liệu công khai hạn chế. BookStack hỗ trợ khả năng hiển thị công khai cho kệ sách, nhưng không được thiết kế cho site tài liệu đối mặt khách hàng có thương hiệu. Không có quy trình tên miền tùy chỉnh + SSL tích hợp, không có phiên bản cho tài liệu công khai, và tùy chọn theme hạn chế so với các nền tảng tài liệu chuyên dụng.
Không có chỉnh sửa sơ đồ trực tiếp tích hợp. Mặc dù BookStack tích hợp Draw.io cho sơ đồ, bạn mở trình chỉnh sửa Draw.io trong modal. Không thể vẽ trực tiếp trên trang như Excalidraw trong Outline.
Stack PHP có thể cảm thấy lỗi thờói. Các đội chạy hoàn toàn trên Node.js hoặc Go có thể thích công cụ trong stack hiện có. Nhưng triển khai PHP đã được hiểu và thử nghiệm kỹ lưỡng —— công nghệ nhàm chán có giá trị riêng.
Câu hỏi thường gặp #
Tôi có thể di chuyển từ Confluence sang BookStack không? #
Không có công cụ nhập chính thức từ Confluence, nhưng bạn có thể xuất trang Confluence dưới dạng HTML hoặc Markdown và sử dụng BookStack REST API để tạo hàng loạt trang. Có script cộng đồng cho lộ trình di chuyển này. Cho di chuyển quy mô lớn, dự kiến dành thờói gian tái cấu trúc nội dung cho phù hợp mô hình sách/chương/trang của BookStack.
Làm thế nào để cập nhật BookStack? #
Với Docker, cập nhật chỉ là một dòng lệnh: thay đổi tag image trong docker-compose.yml và chạy docker compose up -d. Với cài đặt thủ công, pull release mới nhất, chạy git pull hoặc tải archive release mới, sau đó chạy php artisan migrate và xóa cache. Luôn sao lưu cơ sở dữ liệu trước khi cập nhật —— BookStack phát hành bản vá bảo mật hàng tháng.
BookStack có hỗ trợ xác thực hai yếu tố không? #
Tính đến v26.03, BookStack không có TOTP/SMS 2FA tích hợp. Bạn có thể đạt được MFA bằng cách sử dụng xác thực SAML hoặc OIDC với nhà cung cấp danh tính bắt buộc 2FA (như Azure AD hoặc Okta). Hỗ trợ TOTP gốc đã được thảo luận trong cộng đồng nhưng không nằm trong lộ trình sắp tới.
Tôi có thể dùng PostgreSQL thay vì MySQL không? #
BookStack chính thức hỗ trợ MySQL và MariaDB. Hỗ trợ PostgreSQL đã được thảo luận nhưng không được hỗ trợ chính thức. Nếu cần PostgreSQL, Wiki.js hoặc Outline là lựa chọn tốt hơn. Cho BookStack, hãy dùng MySQL 8.0+ hoặc MariaDB 10.6+.
Image LinuxServer.io và image chính thức khác nhau thế nào? #
Image lscr.io/linuxserver/bookstack được cộng đồng duy trì và sử dụng rộng rãi. Nó trừu tượng hóa cấu hình PHP-FPM và Nginx, khiến nó trở thành cách dễ nhất để chạy BookStack trong Docker. Không có image Docker chính thức từ ngườó duy trì BookStack —— LinuxServer image là tiêu chuẩn de facto.
Sao lưu hoạt động như thế nào? #
Sao lưu hai thứ: cơ sở dữ liệu MySQL/MariaDB (toàn bộ nội dung và metadata) và thư mục /config/www/files (hình ảnh và file đính kèm đã upload). Với cấu hình Docker ở trên, cả hai đều nằm trong named volumes. mysqldump đơn giản cộng với tar của volume dữ liệu ứng dụng là đủ. Kiểm tra quy trình khôi phục hàng quý.
Kết luận: Bạn có nên chạy BookStack vào năm 2026? #
Nếu đội của bạn đã chán trả giá theo ngườó dùng cho công cụ tài liệu, và muốn một wiki có cấu trúc, cứng nhắc buộc thói quen tổ chức tốt, BookStack là một trong những lựa chọn mã nguồn mở tốt nhất năm 2026. Stack PHP/Laravel nhàm chán theo cách tốt nhất —— có thể dự đoán được, tài liệu tốt, và dễ debug khi có vấn đề. Các bản phát hành bảo mật hàng tháng cho thấy bảo trì chủ động, và hệ thống module theme v26.03 mở ra khả năng tùy chỉnh mới.
Cho đội 5-50 ngườó muốn tài liệu nội bộ không bị khóa bởi nhà cung cấp, BookStack hoàn vốn ngay lập tức. Tự host trên DigitalOcean Droplet, sao lưu hàng ngày, và bạn có hệ thống tài liệu sẽ tồn tại lâu hơn bất kỳ công cụ SaaS thịnh hành nào của quý này.
Tham gia cộng đồng dibi8.com: Nhóm Telegram để thảo luận công cụ mã nguồn mở hàng ngày, mẹo triển khai và hỗ trợ xử lý sự cố từ 5,000+ lập trình viên.
Nguồn & Tài liệu tham khảo #
- Tài liệu chính thức BookStack
- Mirror GitHub BookStack
- Kho lưu trữ Codeberg BookStack
- Ghi chú phát hành BookStack v26.03
- Image Docker BookStack LinuxServer.io
- So sánh BookStack vs Wiki.js
Hosting Và Hạ Tầng Được Đề Xuất #
Trước khi triển khai các công cụ trên vào production, bạn cần hạ tầng vững chắc. Hai lựa chọn dibi8 đang dùng:
- DigitalOcean — Credit miễn phí $200 trong 60 ngày, 14+ khu vực toàn cầu. Lựa chọn mặc định cho dev chạy AI tools open source.
- HTStack — VPS Hong Kong, độ trễ thấp khi truy cập từ Trung Quốc. Cùng IDC đang host dibi8.com.
Liên kết tiếp thị — không tăng chi phí của bạn, giúp dibi8.com hoạt động.
Công bố liên kết liên kết #
Bài viết này chứa liên kết liên kết đến DigitalOcean. Nếu bạn đăng ký qua liên kết của chúng tôi, chúng tôi nhận được tín dụng giới thiệu mà bạn không phải trả thêm phí. Chúng tôi chỉ giới thiệu cơ sở hạ tầng mà chúng tôi tự sử dụng. Dự án BookStack miễn phí và mã nguồn mở —— không có mối quan hệ liên kết nào với ngườó duy trì BookStack.
💬 Bình luận & Thảo luận