Cách cài đặt Wiki.js trên Ubuntu 22.04 LTS

theanh

Administrator
Nhân viên
Wiki.js là phần mềm wiki nhẹ, mã nguồn mở. Nó được xây dựng trên nền tảng JavaScript Node.js. Nó có thể được sử dụng để viết tài liệu, wiki và nội dung web bằng trình soạn thảo Markdown dành cho nhà phát triển và trình soạn thảo WYSIWYG dành cho những người không rành về kỹ thuật. Nó hỗ trợ nhiều loại nội dung bao gồm sơ đồ UML, biểu thức Toán học sử dụng cú pháp Tex hoặc MathML và mã. Nó bao gồm nhiều mô-đun cho nhiều chức năng khác nhau bao gồm phân tích, xác thực, ghi nhật ký, công cụ tìm kiếm của bên thứ ba và nhiều dịch vụ lưu trữ để đồng bộ hóa nội dung của bạn.

Trong hướng dẫn này, bạn sẽ học cách cài đặt Wiki.js trên máy chủ Ubuntu 22.04 bằng cơ sở dữ liệu PostgreSQL và máy chủ Nginx để tạo proxy.

Điều kiện tiên quyết​


  • Máy chủ chạy Ubuntu 22.04.

  • Người dùng không phải root có quyền sudo.

  • Tên miền đủ điều kiện (FQDN) trỏ đến máy chủ của bạn. Đối với mục đích của chúng tôi, chúng tôi sẽ sử dụng wiki.example.com làm tên miền.

  • Đảm bảo mọi thứ đã được cập nhật.
Mã:
$ sudo apt update && sudo apt upgrade
[*]
Cài đặt các gói tiện ích cơ bản. Một số trong số chúng có thể đã được cài đặt.
Mã:
$ sudo apt install wget curl ca-certificates gnupg gnupg2 nano unzip lsb-release ubuntu-keyring -y

Bước 1 - Cấu hình Tường lửa​

Trước khi cài đặt bất kỳ gói nào, bước đầu tiên là cấu hình tường lửa để cho phép kết nối HTTP và HTTPS.

Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo ufw status
Bạn sẽ thấy nội dung tương tự như sau.
Mã:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Cho phép HTTP và HTTPs cổng.
Mã:
$ sudo ufw allow http
$ sudo ufw allow https
Kiểm tra lại trạng thái để xác nhận.
Mã:
$ sudo ufw status
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
80/tcp ALLOW Anywhere
443 ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
80/tcp (v6) ALLOW Anywhere (v6)
443 (v6) ALLOW Anywhere (v6)

Bước 2 - Cài đặt PostgreSQL và Tiện ích​

Ubuntu 22.04 đi kèm với phiên bản PostgreSQL cũ hơn. Chúng tôi sẽ cài đặt Postgres 14 cho hướng dẫn của mình.

Cài đặt kho lưu trữ cho PostgreSQL.
Mã:
$ sudo sh -c 'echo "deb http://apt.postgresql.org/pub/repos/apt $(lsb_release -cs)-pgdg main" > /etc/apt/sources.list.d/pgdg.list'
Nhập khóa GPG PostgreSQL.
Mã:
$ curl https://www.postgresql.org/media/keys/ACCC4CF8.asc | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/apt.postgresql.org.gpg >/dev/null
Cập nhật kho lưu trữ hệ thống danh sách.
Mã:
$ sudo apt update
Cài đặt máy chủ PostgreSQL 14.
Mã:
$ sudo apt install -y postgresql-14
Kiểm tra trạng thái của dịch vụ.
Mã:
$ sudo systemctl status postgresql
? postgresql.service - PostgreSQL RDBMS Loaded: loaded (/lib/systemd/system/postgresql.service; enabled; vendor preset: enabled) Active: active (exited) since Tue 2022-10-25 06:24:24 UTC; 10min ago Main PID: 4032 (code=exited, status=0/SUCCESS) CPU: 1ms
Oct 25 06:24:24 wiki systemd[1]: Starting PostgreSQL RDBMS...
Oct 25 06:24:24 wiki systemd[1]: Finished PostgreSQL RDBMS.

Bước 3 - Cấu hình PostgreSQL​

Đăng nhập vào shell PostgreSQL.
Mã:
$ sudo -i -u postgres psql
Tạo cơ sở dữ liệu mới cho Wiki.js.
Mã:
postgres=# CREATE DATABASE wikidb;
Tạo người dùng cơ sở dữ liệu mới với mật khẩu mạnh.
Mã:
postgres=# CREATE USER wikiuser WITH ENCRYPTED PASSWORD 'wikipassword';
Cấp quyền cho người dùng sử dụng cơ sở dữ liệu.
Mã:
postgres=# GRANT ALL PRIVILEGES ON DATABASE wikidb TO wikiuser;
Thoát khỏi Postgres Shell.
Mã:
postgres=# \q

Bước 4 - Cài đặt Node.js​

Wiki.js hỗ trợ Node v16 tại thời điểm viết hướng dẫn này.

Cài đặt kho lưu trữ Node bằng cách sử dụng lệnh sau lệnh.
Mã:
$ curl -fsSL https://deb.nodesource.com/setup_16.x | sudo -E bash -
Cài đặt Node.
Mã:
$ sudo apt install nodejs -y
Xác minh Node cài đặt.
Mã:
$ node --version
v16.18.0

Bước 5 - Tải xuống Wiki.js​

Tạo một thư mục để cài đặt Wiki.js.
Mã:
$ sudo mkdir -p /var/www/wikijs
Đặt người dùng hiện đang đăng nhập làm chủ sở hữu của thư mục.
Mã:
$ sudo chown $USER:$USER /var/www/wikijs
Chuyển đến thư mục và tải xuống kho lưu trữ mã Wiki.js.
Mã:
$ cd /var/www/wikijs && wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
Giải nén tệp đã tải xuống archive.
Mã:
$ tar xzf wiki-js.tar.gz
Xóa archive.
Mã:
$ rm wiki-js.tar.gz

Bước 6 - Cấu hình và Chạy Wiki.js​

Tạo tệp cấu hình từ mẫu.
Mã:
$ cp config.sample.yml config.yml
Mở tệp cấu hình để chỉnh sửa.
Mã:
$ nano config.yml
Tìm các thiết lập cơ sở dữ liệu sau và cập nhật giá trị của chúng bằng các thiết lập được cấu hình trong bước 3.
Mã:
# PostgreSQL / MySQL / MariaDB / MS SQL Server only:
host: localhost
port: 5432
user: wikiuser
pass: wikipassword
db: wikidb
ssl: false
Tìm dòng bindIP: 0.0.0.0 và cập nhật thành sau.
Mã:
bindIP: 127.0.0.1
Điều này sẽ khiến WIki.js lắng nghe địa chỉ vòng lặp vì chúng ta sẽ sử dụng proxy Nginx để truy cập nó từ bên ngoài.

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Chạy Wiki.js bằng cách sử dụng lệnh sau lệnh.
Mã:
$ node server
Bạn sẽ nhận được thông báo tương tự xác nhận cài đặt thành công.
Mã:
Loading configuration from /var/www/wikijs/config.yml... OK
2022-10-25T06:40:46.294Z [MASTER] info: =======================================
2022-10-25T06:40:46.296Z [MASTER] info: = Wiki.js 2.5.289 =====================
2022-10-25T06:40:46.296Z [MASTER] info: =======================================
2022-10-25T06:40:46.296Z [MASTER] info: Initializing...
2022-10-25T06:40:46.962Z [MASTER] info: Using database driver pg for postgres [ OK ]
2022-10-25T06:40:46.974Z [MASTER] info: Connecting to database...
2022-10-25T06:40:47.067Z [MASTER] info: Database Connection Successful [ OK ]
2022-10-25T06:40:47.345Z [MASTER] warn: DB Configuration is empty or incomplete. Switching to Setup mode...
2022-10-25T06:40:47.345Z [MASTER] info: Starting setup wizard...
2022-10-25T06:40:47.510Z [MASTER] info: Starting HTTP server on port 3000...
2022-10-25T06:40:47.511Z [MASTER] info: HTTP Server on port: [ 3000 ]
2022-10-25T06:40:47.515Z [MASTER] info: HTTP Server: [ RUNNING ]
2022-10-25T06:40:47.515Z [MASTER] info: .......................................................................
2022-10-25T06:40:47.515Z [MASTER] info:
2022-10-25T06:40:47.516Z [MASTER] info: Browse to http://YOUR-SERVER-IP:3000/ to complete setup!
2022-10-25T06:40:47.516Z [MASTER] info:
2022-10-25T06:40:47.516Z [MASTER] info: ........................................................................
Nhấn Ctrl + C để dừng quá trình.

Bước 7 - Thiết lập Dịch vụ Systemd​

Quá trình trên để giữ Wiki.js chạy là tạm thời. Để quá trình này diễn ra vĩnh viễn, chúng ta sẽ cần tạo một dịch vụ systemd cho Wiki.js để chạy nó như một dịch vụ nền. Điều này sẽ cho phép Wiki.js chạy khi khởi động lại hệ thống.

Tạo một tệp dịch vụ systemd cho Wiki.js và mở tệp đó để chỉnh sửa.
Mã:
$ sudo nano /etc/systemd/system/wikijs.service
Dán mã sau vào đó. Thay thế giá trị của biến User bằng tên người dùng hệ thống của bạn.
Mã:
[Unit]
Description=Wiki.js
After=network.target
[Service]
Type=simple
ExecStart=/usr/bin/node server
Restart=always
User=navjot
Environment=NODE_ENV=production
WorkingDirectory=/var/www/wikijs
[Install]
WantedBy=multi-user.target
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Tải lại hệ thống daemon.
Mã:
$ sudo systemctl daemon-reload
Kích hoạt dịch vụ Wiki.js.
Mã:
$ sudo systemctl enable wikijs

Bước 8 - Cài đặt Nginx​

Ubuntu 22.04 đi kèm với phiên bản Nginx cũ hơn. Bạn cần tải xuống kho lưu trữ Nginx chính thức để cài đặt phiên bản mới nhất.

Nhập khóa Nginx chính thức.
Mã:
$ curl https://nginx.org/keys/nginx_signing.key | gpg --dearmor \ | sudo tee /usr/share/keyrings/nginx-archive-keyring.gpg >/dev/null
Thiết lập kho lưu trữ chính thức cho Nginx.
Mã:
$ echo "deb [signed-by=/usr/share/keyrings/nginx-archive-keyring.gpg] \ http://nginx.org/packages/ubuntu `lsb_release -cs` nginx" \ | sudo tee /etc/apt/sources.list.d/nginx.list
Ghim kho lưu trữ để ưu tiên kho lưu trữ chính thức hơn kho lưu trữ Ubuntu.
Mã:
$ echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \ | sudo tee /etc/apt/preferences.d/99nginx
Cập nhật danh sách kho lưu trữ hệ thống.
Mã:
$ sudo apt update
Cài đặt Nginx máy chủ.
Mã:
$ sudo apt install nginx -y
Xác minh cài đặt.
Mã:
$ nginx -v
nginx version: nginx/1.22.1
Khởi động Nginx máy chủ.
Mã:
$ sudo systemctl start nginx
Kiểm tra trạng thái của dịch vụ.
Mã:
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server Loaded: loaded (/lib/systemd/system/nginx.service; enabled; vendor preset: enabled) Active: active (running) since Tue 2022-10-25 06:50:05 UTC; 2s ago Docs: https://nginx.org/en/docs/ Process: 5522 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 5523 (nginx) Tasks: 2 (limit: 1030) Memory: 1.8M CPU: 4ms CGroup: /system.slice/nginx.service ??5523 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??5524 "nginx: worker process" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" "" ""
Oct 25 06:50:05 wiki systemd[1]: Starting nginx - high performance web server...

Bước 9 - Cài đặt SSL​

Chúng ta cần cài đặt Certbot để tạo chứng chỉ SSL. Bạn có thể cài đặt Certbot bằng kho lưu trữ của Ubuntu hoặc tải phiên bản mới nhất bằng công cụ Snapd. Chúng tôi sẽ sử dụng phiên bản Snapd.

Ubuntu 22.04 được cài đặt Snapd theo mặc định. Chạy các lệnh sau để đảm bảo rằng phiên bản Snapd của bạn được cập nhật.
Mã:
$ sudo snap install core
$ sudo snap refresh core
Cài đặt Certbot.
Mã:
$ sudo snap install --classic certbot
Sử dụng lệnh sau để đảm bảo rằng lệnh Certbot có thể chạy được bằng cách tạo liên kết tượng trưng đến /usr/bin thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Chạy lệnh sau để cấp phát chứng chỉ.
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d wiki.example.com
Lệnh trên sẽ tải chứng chỉ xuống thư mục /etc/letsencrypt/live/wiki.example.com trên máy chủ của bạn.

Tạo nhóm Diffie-Hellman chứng chỉ.
Mã:
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Kiểm tra dịch vụ lập lịch gia hạn Certbot.
Mã:
$ sudo systemctl list-timers
Bạn sẽ tìm thấy snap.certbot.renew.service là một trong những dịch vụ được lên lịch chạy.
Mã:
NEXT LEFT LAST PASSED UNIT ACTIVATES
.................................................................................................................................
Tue 2022-10-25 00:00:00 UTC 17h left Tue 2022-10-25 04:49:20 UTC 2h ago logrotate.timer logrotate.service
Tue 2022-10-25 02:39:09 UTC 20h left Tue 2022-10-25 06:47:33 UTC 12min ago apt-daily.timer apt-daily.service
Tue 2022-10-25 06:02:00 UTC 8h left n/a n/a snap.certbot.renew.timer snap.certbot.renew.service
Thực hiện chạy thử quy trình để kiểm tra xem việc gia hạn SSL có hoạt động không tốt.
Mã:
$ sudo certbot renew --dry-run
Nếu bạn không thấy lỗi nào, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.

Bước 10 - Cấu hình Nginx​

Tạo và mở tệp /etc/nginx/conf.d/wikijs.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/conf.d/wikijs.conf
Dán mã sau vào đó.
Mã:
# enforce HTTPS
server { listen 80; listen [::]:80; server_name wiki.example.com; return 301 https://$server_name$request_uri;
}
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name wiki.example.com; root /var/www/wikijs; access_log /var/log/nginx/wiki.access.log; error_log /var/log/nginx/wiki.error.log; http2_push_preload on; # Enable HTTP/2 Server Push ssl_certificate /etc/letsencrypt/live/wiki.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/wiki.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/wiki.example.com/chain.pem; ssl_session_timeout 1d; # Enable TLS versions (TLSv1.3 is required upcoming HTTP/3 QUIC). ssl_protocols TLSv1.2 TLSv1.3; # Enable TLSv1.3's 0-RTT. Use $ssl_early_data when reverse proxying to # prevent replay attacks. # # @see: https://nginx.org/en/docs/http/ngx_http_ssl_module.html#ssl_early_data ssl_early_data on; ssl_ciphers 'ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA384'; ssl_prefer_server_ciphers on; ssl_session_cache shared:SSL:50m; # OCSP Stapling --- # fetch OCSP records from URL in ssl_certificate and cache them ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; add_header X-Early-Data $tls1_3_early_data; location / { proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-Forwarded-Proto $scheme; proxy_pass http://127.0.0.1:3000; }
}
# This block is useful for debugging TLS v1.3. Please feel free to remove this
# and use the `$ssl_early_data` variable exposed by NGINX directly should you
# wish to do so.
map $ssl_early_data $tls1_3_early_data { "~." $ssl_early_data; default "";
}
Thay thế vị trí gốc trong tệp trên bằng thư mục trên máy chủ của bạn.

Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Mở tệp /etc/nginx/nginx.conf để chỉnh sửa.
Mã:
$ sudo nano /etc/nginx/nginx.conf
Thêm dòng sau vào trước dòng include /etc/nginx/conf.d/*.conf;.
Mã:
server_names_hash_bucket_size 64;
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.

Xác minh Nginx của bạn cấu hình.
Mã:
$ sudo nginx -t
Nếu bạn không thấy lỗi nào, điều đó có nghĩa là bạn đã sẵn sàng.

Khởi động dịch vụ Wiki.js.
Mã:
$ sudo systemctl start wikijs
Tải lại Nginx máy chủ.
Mã:
$ sudo systemctl reload nginx

Bước 11 - Hoàn tất cài đặt​

Truy cập URL https://wiki.example.com để hoàn tất cài đặt.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22736%22%3E%3C/svg%3E


Điền thông tin tài khoản quản trị viên và URL của bạn. Tắt Telemetry bằng cách bỏ chọn tùy chọn Allow Telemetry. Bạn cũng có thể tắt nó từ bảng điều khiển Quản trị. Nhấp vào nút Cài đặt để tiếp tục.

Bạn sẽ được đưa đến trang đăng nhập.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22699%22%20height=%22556%22%3E%3C/svg%3E


Nhập thông tin tài khoản của bạn và nhấp vào nút Đăng nhập để tiếp tục đến trang quản trị.


data:image/svg+xml,%3Csvg%20xmlns=%22http://www.w3.org/2000/svg%22%20width=%22750%22%20height=%22432%22%3E%3C/svg%3E


Bây giờ bạn có thể bắt đầu sử dụng Wiki.js.

Kết luận​

Đây là phần kết thúc hướng dẫn của chúng tôi, nơi bạn đã học cách cài đặt Wiki.js trên máy chủ Ubuntu 22.04. Nếu bạn có bất kỳ câu hỏi nào, hãy đăng chúng trong phần bình luận bên dưới.
 
Back
Bên trên