Bookmark

Tự host BookStack trên Linux

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 .

Youtube video player

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

  1. Đăng nhập Linux host.
  2. Cập nhật package list:
1
sudo apt update
  1. Cài các bản cập nhật có sẵn:
1
sudo apt upgrade -y
  1. Cài công cụ cần thiết:
1
sudo apt install git openssl curl wget zip composer -y
  1. Cài Apache và MariaDB:
1
sudo apt install apache2 mariadb-server mariadb-client -y
  1. Cài PHP và các extension BookStack thường cần:
1
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

  1. Chạy trình bảo mật MariaDB:
1
sudo mysql_secure_installation
  1. Khi được hỏi đăng nhập root, nhấn Enter nếu hệ thống chưa có root password.
  2. 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.
  3. Chọn Y để xóa anonymous users.
  4. Chọn Y để không cho phép root login từ xa.
  5. Chọn Y để xóa test database.
  6. Chọn Y để reload privilege tables.
  7. Đăng nhập MariaDB:
1
mysql -u root -p
  1. Nhập root password vừa đặt.
  2. 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:
1
2
3
4
CREATE DATABASE bookstack;
GRANT ALL ON bookstack.* TO 'bookstack_rw'@'localhost' IDENTIFIED BY '[DB_PASSWORD]';
FLUSH PRIVILEGES;
EXIT;
  1. Thoát shell nếu vẫn còn ở trong đó:
1
exit

Tải BookStack và tạo file môi trường

  1. Clone branch release vào /var/www/bookstack:
1
sudo git clone https://github.com/BookStackApp/BookStack.git --branch release --single-branch /var/www/bookstack
  1. Copy file môi trường mẫu:
1
sudo cp /var/www/bookstack/.env.example /var/www/bookstack/.env
  1. Mở file cấu hình:
1
sudo nano /var/www/bookstack/.env
  1. Đ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:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
APP_ENV=production
APP_DEBUG=false
APP_KEY=
APP_URL=http://DNSorIP/bookstack
APP_TIMEZONE=Asia/Ho_Chi_Minh
APP_LOCALE=vi

DB_CONNECTION=mysql
DB_HOST=127.0.0.1
DB_DATABASE=bookstack
DB_USERNAME=bookstack_rw
DB_PASSWORD=[DB_PASSWORD]

MAIL_DRIVER=smtp
MAIL_HOST=[SMTP_HOST]
MAIL_PORT=25
MAIL_USERNAME=null
MAIL_PASSWORD=null
MAIL_ENCRYPTION=null
MAIL_FROM_ADDR=bookstack@[YOUR_DOMAIN]
MAIL_FROM_NAME='BookStack'
MAIL_REPLYTO_ADDR=bookstack@[YOUR_DOMAIN]
MAIL_REPLYTO_NAME='BookStack'
MAIL_AUTO_EMBED_METHOD='attachment'
  1. Đặt APP_URL đúng URL thật. Nếu dùng domain HTTPS, hãy dùng https:// thay vì HTTP.
  2. Nhấn Ctrl+O, Enter, rồi Ctrl+X để lưu và đóng nano.

Cài dependency và tạo app key

  1. Đặt owner cho thư mục BookStack:
1
sudo chown -R www-data:www-data /var/www/bookstack
  1. Tạo Composer working directory và cấp quyền:
1
2
sudo mkdir /var/www/.composer
sudo chown -R www-data:www-data /var/www/.composer
  1. Chuyển vào thư mục BookStack:
1
cd /var/www/bookstack
  1. Cài dependency production:
1
sudo -u www-data composer install --no-dev --no-plugins
  1. Tạo app key bằng Artisan, không tự chép key vào repository:
1
sudo php artisan key:generate --no-interaction --force
  1. Chạy migration:
1
sudo php artisan migrate --no-interaction --force
  1. Mở file Apache site configuration:
1
sudo nano /etc/apache2/sites-available/bookstack.conf
  1. Thêm cấu hình sau, điều chỉnh path/domain nếu triển khai khác /bookstack:
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
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>
  1. Nhấn Ctrl+O, Enter, Ctrl+X để lưu file.
  2. Bật rewrite module, enable site và restart Apache:
1
2
3
sudo a2enmod rewrite
sudo a2ensite bookstack
sudo systemctl restart apache2

Hoàn tất trên Web Installer

  1. Mở http://DNSorIP/bookstack.
  2. Đă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.
  3. Mở user dropdown góc phải, chọn My Account.
  4. Cập nhật username và email, rồi bấm Save.
  5. Chọn Access & Security ở navigation bên trái.
  6. Nhập và xác nhận password mới, bấm Update.
  7. Mở user dropdown và chọn Logout.
  8. Đăng nhập lại bằng email/password mới.
  9. 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


0 Bình luận

Góp Ý / Bình Luận / Đánh giá