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.
[*]
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.
Kiểm tra trạng thái của tường lửa.
Bạn sẽ thấy nội dung tương tự như sau.
Cho phép HTTP và HTTPs cổng.
Kiểm tra lại trạng thái để xác nhận.
Cài đặt kho lưu trữ cho PostgreSQL.
Nhập khóa GPG PostgreSQL.
Cập nhật kho lưu trữ hệ thống danh sách.
Cài đặt máy chủ PostgreSQL 14.
Kiểm tra trạng thái của dịch vụ.
Tạo cơ sở dữ liệu mới cho Wiki.js.
Tạo người dùng cơ sở dữ liệu mới với mật khẩu mạnh.
Cấp quyền cho người dùng sử dụng cơ sở dữ liệu.
Thoát khỏi Postgres Shell.
Cài đặt kho lưu trữ Node bằng cách sử dụng lệnh sau lệnh.
Cài đặt Node.
Xác minh Node cài đặt.
Đặt người dùng hiện đang đăng nhập làm chủ sở hữu của thư mục.
Chuyển đến thư mục và tải xuống kho lưu trữ mã Wiki.js.
Giải nén tệp đã tải xuống archive.
Xóa archive.
Mở tệp cấu hình để chỉnh sửa.
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.
Tìm dòng
Đ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.
Bạn sẽ nhận được thông báo tương tự xác nhận cài đặt thành công.
Nhấn Ctrl + C để dừng quá trình.
Tạo một tệp dịch vụ systemd cho Wiki.js và mở tệp đó để chỉnh sửa.
Dán mã sau vào đó. Thay thế giá trị của biến
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.
Kích hoạt dịch vụ Wiki.js.
Nhập khóa Nginx chính thức.
Thiết lập kho lưu trữ chính thức cho Nginx.
Ghim kho lưu trữ để ưu tiên kho lưu trữ chính thức hơn kho lưu trữ Ubuntu.
Cập nhật danh sách kho lưu trữ hệ thống.
Cài đặt Nginx máy chủ.
Xác minh cài đặt.
Khởi động Nginx máy chủ.
Kiểm tra trạng thái của dịch vụ.
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.
Cài đặt 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
Chạy lệnh sau để cấp phát chứng chỉ.
Lệnh trên sẽ tải chứng chỉ xuống thư mục
Tạo nhóm Diffie-Hellman chứng chỉ.
Kiểm tra dịch vụ lập lịch gia hạn Certbot.
Bạn sẽ tìm thấy
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.
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.
Dán mã sau vào đó.
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
Thêm dòng sau vào trước dòng
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.
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.
Tải lại Nginx máy chủ.
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.
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ụngwiki.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
Mã:
Status: active
To Action From
-- ------ ----
OpenSSH ALLOW Anywhere
OpenSSH (v6) ALLOW Anywhere (v6)
Mã:
$ sudo ufw allow http
$ sudo ufw allow https
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'
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
Mã:
$ sudo apt update
Mã:
$ sudo apt install -y postgresql-14
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
Mã:
postgres=# CREATE DATABASE wikidb;
Mã:
postgres=# CREATE USER wikiuser WITH ENCRYPTED PASSWORD 'wikipassword';
Mã:
postgres=# GRANT ALL PRIVILEGES ON DATABASE wikidb TO wikiuser;
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 -
Mã:
$ sudo apt install nodejs -y
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
Mã:
$ sudo chown $USER:$USER /var/www/wikijs
Mã:
$ cd /var/www/wikijs && wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
Mã:
$ tar xzf wiki-js.tar.gz
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ã:
$ nano config.yml
Mã:
# PostgreSQL / MySQL / MariaDB / MS SQL Server only:
host: localhost
port: 5432
user: wikiuser
pass: wikipassword
db: wikidb
ssl: false
bindIP: 0.0.0.0
và cập nhật thành sau.
Mã:
bindIP: 127.0.0.1
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
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: ........................................................................
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
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
Tải lại hệ thống daemon.
Mã:
$ sudo systemctl daemon-reload
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
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
Mã:
$ echo -e "Package: *\nPin: origin nginx.org\nPin: release o=nginx\nPin-Priority: 900\n" \ | sudo tee /etc/apt/preferences.d/99nginx
Mã:
$ sudo apt update
Mã:
$ sudo apt install nginx -y
Mã:
$ nginx -v
nginx version: nginx/1.22.1
Mã:
$ sudo systemctl start nginx
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
Mã:
$ sudo snap install --classic certbot
/usr/bin
thư mục.
Mã:
$ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Mã:
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m [emailprotected] -d wiki.example.com
/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
Mã:
$ sudo systemctl list-timers
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
Mã:
$ sudo certbot renew --dry-run
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
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 "";
}
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
include /etc/nginx/conf.d/*.conf;
.
Mã:
server_names_hash_bucket_size 64;
Xác minh Nginx của bạn cấu hình.
Mã:
$ sudo nginx -t
Khởi động dịch vụ Wiki.js.
Mã:
$ sudo systemctl start wikijs
Mã:
$ sudo systemctl reload nginx
Bước 11 - Hoàn tất cài đặt
Truy cập URLhttps://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.