Tự host BookStack trên Linux
Nghia Phan
Mục Lục Bài Viết
BookStack là nền tảng wiki tự host để quản lý tài liệu HomeLab. Bài này biên tập đầy đủ quy trình cài đặt Linux từ tutorial của i12bretro, gồm Apache, MariaDB, PHP, Composer, file .env và virtual host. Các mật khẩu mẫu trong nguồn được thay bằng placeholder; hãy tự tạo secret riêng khi triển khai.
Nguồn tham khảo: i12bretro – Install BookStack on Linux. Video gốc thuộc kênh i12bretro trên YouTube.
Chuẩn bị
- Một máy Linux có quyền
sudo. - Hostname hoặc domain sẽ dùng cho BookStack.
- MariaDB, Apache và PHP tương thích với phiên bản BookStack đang cài.
- Một mật khẩu database riêng và app key được tạo bằng Artisan.
Cài package nền
- Đăng nhập Linux host.
- Cập nhật package list:
sudo apt update
- Cài các bản cập nhật có sẵn:
sudo apt upgrade -y
- Cài công cụ cần thiết:
sudo apt install git openssl curl wget zip composer -y
- Cài Apache và MariaDB:
sudo apt install apache2 mariadb-server mariadb-client -y
- Cài PHP và các extension BookStack thường cần:
sudo apt install php libapache2-mod-php php-curl php-tokenizer php-ldap php-cli php-json php-gd php-mbstring php-mysql php-xml php-zip php-bcmath -y
Khóa cấu hình MariaDB
- Chạy trình bảo mật MariaDB:
sudo mysql_secure_installation
- Khi được hỏi đăng nhập root, nhấn Enter nếu hệ thống chưa có root password.
- Chọn
Yđể đặt root password và nhập lại password hai lần. Không ghi password thật vào bài, log hoặc Git. - Chọn
Yđể xóa anonymous users. - Chọn
Yđể không cho phép root login từ xa. - Chọn
Yđể xóa test database. - Chọn
Yđể reload privilege tables. - Đăng nhập MariaDB:
mysql -u root -p
- Nhập root password vừa đặt.
- Tạo database và user riêng cho BookStack. Thay
[DB_PASSWORD]bằng password được lưu ở secret manager hoặc file ngoài repository:
CREATE DATABASE bookstack;GRANT ALL ON bookstack.* TO 'bookstack_rw'@'localhost' IDENTIFIED BY '[DB_PASSWORD]';FLUSH PRIVILEGES;EXIT;
- Thoát shell nếu vẫn còn ở trong đó:
exit
Tải BookStack và tạo file môi trường
- Clone branch release vào
/var/www/bookstack:
sudo git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch /var/www/bookstack
- Copy file môi trường mẫu:
sudo cp /var/www/bookstack/.env.example /var/www/bookstack/.env
- Mở file cấu hình:
sudo nano /var/www/bookstack/.env
- Điều chỉnh các biến chính sau. Không dùng nguyên giá trị mẫu cho password, mail host hoặc app key:
APP_ENV=productionAPP_DEBUG=falseAPP_KEY=APP_URL=http://DNSorIP/bookstackAPP_TIMEZONE=Asia/Ho_Chi_MinhAPP_LOCALE=viDB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_DATABASE=bookstackDB_USERNAME=bookstack_rwDB_PASSWORD=[DB_PASSWORD]MAIL_DRIVER=smtpMAIL_HOST=[SMTP_HOST]MAIL_PORT=25MAIL_USERNAME=nullMAIL_PASSWORD=nullMAIL_ENCRYPTION=nullMAIL_FROM_ADDR=bookstack@[YOUR_DOMAIN]MAIL_FROM_NAME='BookStack'MAIL_REPLYTO_ADDR=bookstack@[YOUR_DOMAIN]MAIL_REPLYTO_NAME='BookStack'MAIL_AUTO_EMBED_METHOD='attachment'
- Đặt
APP_URLđúng URL thật. Nếu dùng domain HTTPS, hãy dùnghttps://thay vì HTTP. - Nhấn Ctrl+O, Enter, rồi Ctrl+X để lưu và đóng nano.
Cài dependency và tạo app key
- Đặt owner cho thư mục BookStack:
sudo chown -R www-data:www-data /var/www/bookstack
- Tạo Composer working directory và cấp quyền:
sudo mkdir /var/www/.composersudo chown -R www-data:www-data /var/www/.composer
- Chuyển vào thư mục BookStack:
cd /var/www/bookstack
- Cài dependency production:
sudo -u www-data composer install --no-dev --no-plugins
- Tạo app key bằng Artisan, không tự chép key vào repository:
sudo php artisan key:generate --no-interaction --force
- Chạy migration:
sudo php artisan migrate --no-interaction --force
- Mở file Apache site configuration:
sudo nano /etc/apache2/sites-available/bookstack.conf
- Thêm cấu hình sau, điều chỉnh path/domain nếu triển khai khác
/bookstack:
Alias /bookstack "/var/www/bookstack/public"<Directory /var/www/bookstack/public> Options Indexes FollowSymLinks AllowOverride None Require all granted <IfModule mod_rewrite.c> <IfModule mod_negotiation.c> Options -MultiViews -Indexes </IfModule> RewriteEngine On RewriteCond %{HTTP:Authorization} . RewriteRule .* - [E=HTTP_AUTHORIZATION:%{HTTP:Authorization}] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} (.+)/$ RewriteRule ^ %1 [L,R=301] RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^ index.php [L] </IfModule></Directory>
- Nhấn Ctrl+O, Enter, Ctrl+X để lưu file.
- Bật rewrite module, enable site và restart Apache:
sudo a2enmod rewritesudo a2ensite bookstacksudo systemctl restart apache2
Quảng cáo
Hoàn tất trên Web Installer
- Mở
http://DNSorIP/bookstack. - Đăng nhập lần đầu bằng thông tin mặc định của phiên bản BookStack đang cài chỉ khi tài liệu chính thức xác nhận; đổi ngay sang tài khoản/password riêng, không đưa credential mặc định vào bài.
- Mở user dropdown góc phải, chọn My Account.
- Cập nhật username và email, rồi bấm Save.
- Chọn Access & Security ở navigation bên trái.
- Nhập và xác nhận password mới, bấm Update.
- Mở user dropdown và chọn Logout.
- Đăng nhập lại bằng email/password mới.
- Kiểm tra BookStack đã đọc được database, ghi được file upload và mở được trang wiki.
Lưu ý vận hành: Bật HTTPS, backup database cùng thư mục
/var/www/bookstack, khóa quyền.env, không cho MariaDB root login từ xa và kiểm tra compatibility trước khi cập nhật branch release.
Nguồn và video
- Tutorial gốc: i12bretro 0919
- Video gốc: Install BookStack on Linux
- BookStack manual installation: bookstackapp.com/docs/admin/installation
- Repository: BookStackApp/BookStack
Bình Luận & Thảo Luận
Góp ý, hỏi đáp và chia sẻ suy nghĩ của bạn