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ủ Rocky Linux 9 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.
Tường lửa hoạt động với nhiều vùng khác nhau và vùng công cộng là vùng mặc định mà chúng ta sẽ sử dụng. Liệt kê tất cả các dịch vụ và cổng đang hoạt động trên tường lửa.
Nó sẽ hiển thị đầu ra sau.
Wiki.js cần các cổng HTTP và HTTPS để hoạt động. Mở chúng ra.
Tải lại tường lửa để áp dụng các thay đổi.
Cài đặt kho lưu trữ RPM cho PostgreSQL.
Cài đặt máy chủ PostgreSQL 14.
Khởi tạo cơ sở dữ liệu.
Kích hoạt và khởi động dịch vụ PostgreSQL.
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 sang 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.
Mở tệp cấu hình cho chỉnh sửa.
Tìm các thiết lập cơ sở dữ liệu sau và cập nhật các giá trị của chúng bằng các giá trị được cấu hình ở 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.
Tạo và mở tệp
Dán mã sau vào đó.
Lưu tệp bằng cách nhấn Ctrl + X và nhập Y khi được nhắc.
Cài đặt máy chủ Nginx.
Xác minh cài đặt.
Bật và khởi động máy chủ Nginx.
Kiểm tra trạng thái của máy chủ.
Chúng ta sẽ sử dụng Snapd để cài đặt Certbot. Cài đặt Snapd.
Kích hoạt và khởi động dịch vụ Snap.
Tạo các liên kết cần thiết cho Snapd tới làm việc.
Cài đặt kho lưu trữ Snapd cốt lõi.
Cài đặt Certbot.
Tạo chứng chỉ. Lệnh sau cũng sẽ tự động cấu hình Nginx.
Lệnh trên sẽ tải xuống chứng chỉ vào thư mục
Tạo nhóm Diffie-Hellman chứng chỉ.
Thực hiện chạy thử quy trình để kiểm tra xem quá trình gia hạn SSL có hoạt động tốt không.
Nếu không thấy lỗi, bạn đã hoàn tất. Chứng chỉ của bạn sẽ tự động gia hạn.
Tạo một cổng cho HTTP và gán cho 3000 để Wiki.js hoạt động với SELinux.
Cho phép Nginx kết nối với mạng.
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ủ.
Điền thông tin tài khoản quản trị viên và URL. Tắt Telemetry bằng cách bỏ chọn tùy chọn Cho phép 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.
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ị.
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ủ Rocky Linux 9 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 Rocky Linux 9.
-
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 dnf update
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 dnf install wget curl nano unzip yum-utils -y
Bước 1 - Cấu hình Tường lửa
Bước đầu tiên là cấu hình tường lửa. Rocky Linux sử dụng Tường lửa Firewalld. Kiểm tra trạng thái của tường lửa.
Mã:
$ sudo firewall-cmd --state
running
Mã:
$ sudo firewall-cmd --permanent --list-services
Mã:
cockpit dhcpv6-client ssh
Mã:
$ sudo firewall-cmd --add-service=http --permanent
$ sudo firewall-cmd --add-service=https --permanent
Mã:
$ sudo firewall-cmd --reload
Bước 2 - Cài đặt PostgreSQL và Tiện ích
Rocky Linux 9 đ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ữ RPM cho PostgreSQL.
Mã:
$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Mã:
$ sudo dnf install -y postgresql14-server postgresql14-contrib
Mã:
$ sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
Mã:
$ sudo systemctl enable postgresql-14 --now
Mã:
$ sudo systemctl status postgresql-14
? postgresql-14.service - PostgreSQL 14 database server Loaded: loaded (/usr/lib/systemd/system/postgresql-14.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2022-10-22 09:52:41 UTC; 2s ago Docs: https://www.postgresql.org/docs/14/static/ Process: 103857 ExecStartPre=/usr/pgsql-14/bin/postgresql-14-check-db-dir ${PGDATA} (code=exited, status=0/SUCCESS) Main PID: 103862 (postmaster) Tasks: 8 (limit: 5915) Memory: 16.6M CPU: 61ms CGroup: /system.slice/postgresql-14.service ??103862 /usr/pgsql-14/bin/postmaster -D /var/lib/pgsql/14/data/ ??103863 "postgres: logger " ??103865 "postgres: checkpointer " ??103866 "postgres: background writer " ??103867 "postgres: walwriter " ??103868 "postgres: autovacuum launcher " ??103869 "postgres: stats collector " ??103870 "postgres: logical replication launcher "
Oct 22 09:52:41 wiki.example.com systemd[1]: Starting PostgreSQL 14 database server...
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://rpm.nodesource.com/setup_16.x | sudo bash -
Mã:
$ sudo dnf 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
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 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ã:
2022-10-22T10:25:48.187Z [MASTER] info: =======================================
2022-10-22T10:25:48.190Z [MASTER] info: = Wiki.js 2.5.289 =====================
2022-10-22T10:25:48.191Z [MASTER] info: =======================================
2022-10-22T10:25:48.191Z [MASTER] info: Initializing...
2022-10-22T10:25:49.079Z [MASTER] info: Using database driver pg for postgres [ OK ]
2022-10-22T10:25:49.086Z [MASTER] info: Connecting to database...
2022-10-22T10:25:49.117Z [MASTER] info: Database Connection Successful [ OK ]
2022-10-22T10:25:49.467Z [MASTER] warn: DB Configuration is empty or incomplete. Switching to Setup mode...
2022-10-22T10:25:49.468Z [MASTER] info: Starting setup wizard...
2022-10-22T10:25:49.740Z [MASTER] info: Starting HTTP server on port 3000...
2022-10-22T10:25:49.741Z [MASTER] info: HTTP Server on port: [ 3000 ]
2022-10-22T10:25:49.745Z [MASTER] info: HTTP Server: [ RUNNING ]
2022-10-22T10:25:49.745Z [MASTER] info: .......................................
2022-10-22T10:25:49.745Z [MASTER] info:
2022-10-22T10:25:49.746Z [MASTER] info: Browse to http://YOUR-SERVER-IP:3000/ to complete setup!
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
Rocky Linux được tích hợp sẵn 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.Tạo và mở tệp
/etc/yum.repos.d/nginx.repo
để tạo kho lưu trữ Nginx chính thức.
Mã:
$ sudo nano /etc/yum.repos.d/nginx.repo
Mã:
[nginx-stable]
name=nginx stable repo
baseurl=http://nginx.org/packages/centos/$releasever/$basearch/
gpgcheck=1
enabled=1
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
[nginx-mainline]
name=nginx mainline repo
baseurl=http://nginx.org/packages/mainline/centos/$releasever/$basearch/
gpgcheck=1
enabled=0
gpgkey=https://nginx.org/keys/nginx_signing.key
module_hotfixes=true
Cài đặt máy chủ Nginx.
Mã:
$ sudo dnf install nginx -y
Mã:
$ nginx -v
nginx version: nginx/1.22.1
Mã:
$ sudo systemctl enable nginx --now
Mã:
$ sudo systemctl status nginx
? nginx.service - nginx - high performance web server Loaded: loaded (/usr/lib/systemd/system/nginx.service; enabled; vendor preset: disabled) Active: active (running) since Sat 2022-10-22 11:15:39 UTC; 49min ago Docs: http://nginx.org/en/docs/ Process: 116236 ExecStart=/usr/sbin/nginx -c /etc/nginx/nginx.conf (code=exited, status=0/SUCCESS) Main PID: 116237 (nginx) Tasks: 2 (limit: 5915) Memory: 5.0M CPU: 245ms CGroup: /system.slice/nginx.service ??116237 "nginx: master process /usr/sbin/nginx -c /etc/nginx/nginx.conf" ??116238 "nginx: worker process"
Oct 22 11:15:39 wiki.example.com systemd[1]: Starting nginx - high performance web server...
Bước 9 - Cài đặt SSL
Chúng ta sẽ sử dụng công cụ Certbot bằng công cụ Snapd để cấp chứng chỉ SSL. Công cụ này yêu cầu kho lưu trữ EPEL để hoạt động.
Mã:
$ sudo dnf install epel-release
Mã:
$ sudo dnf install snapd
Mã:
$ sudo systemctl enable snapd.socket --now
Mã:
$ sudo ln -s /var/lib/snapd/snap /snap
$ echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snapd.sh
Mã:
$ sudo snap install core
$ sudo snap refresh core
Mã:
$ sudo snap install --classic certbot
$ 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 certbot renew --dry-run
Bước 10 - Cấu hình SELinux
Chạy các lệnh sau để áp dụng ngữ cảnh SELinux chính xác vào thư mục Wiki.js.
Mã:
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/wikijs(/.*)?"
$ sudo restorecon -Rv /var/www/wikijs
Mã:
$ sudo semanage port -a -t http_port_t -p tcp 3000
Mã:
$ sudo setsebool -P httpd_can_network_connect 1
Bước 11 - 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 12 - Hoàn tất cài đặt
Truy cập URLhttps://wiki.example.com
để hoàn tất cài đặt.Điền thông tin tài khoản quản trị viên và URL. Tắt Telemetry bằng cách bỏ chọn tùy chọn Cho phép 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.
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ị.
Bây giờ bạn có thể bắt đầu sử dụng Wiki.js.