Wiki.js is a free and open-source wiki application written in Node.js. It is simple, lightweight, and uses Markdown files to saves all contents. You can save your content directly to the Markdown file and sync it with your Git repository. It offers a rich set of features including, integrated access control, a built-in search engine, and supports external authentication.
In this tutorial, we will show you how to install Wiki.js on CentOS 8.
Table of Contents
Prerequisites
- A CentOS 8 VPS.
- Access to the root user account (or access to an admin account with root privileges)
Step 1: Log in to the Server & Update the Server OS Packages
First, log in to your CentOS 8 server via SSH as the root user:
ssh root@IP_Address -p Port_number
You will need to replace ‘IP_Address‘ and ‘Port_number‘ with your server’s respective IP address and SSH port number. Additionally, replace ‘root’ with the username of the admin account if necessary.
Before starting, you have to make sure that all CentOS packages installed on the server are up to date. You can do this by running the following commands:
dnf update -y
Step 2: Install Node.js and Redis
Wiki.js is built on Node.js. So you will need to install Node.js in your system. First, install all required dependencies with the following command:
dnf install epel-release git curl unzip -y
Once all the dependencies are installed, add the Node.js repository with the following command:
curl -sL https://rpm.nodesource.com/setup_12.x | bash -
Next, install Node.js and Redis with the following command:
dnf install nodejs -y dnf install redis -y
After installing both packages, start the Redis service and enable it to start at system reboot with the following command:
systemctl start redis systemctl enable redis
Step 3: Install Nginx and MariaDB
Next, will need to install the Nginx web server and MariaDB database server to your system. You can install both packages with the following command:
dnf install nginx @mariadb -y
Once both packages are installed, start the Nginx and MariaDB service and enable them to start at system reboot with the following command:
systemctl start nginx systemctl start mariadb systemctl enable nginx systemctl enable mariadb
Once installed, secure the MariaDB installation by running the following command:
mysql_secure_installation
Answer all the questions as shown below to set the MariaDB root password and secure the installation:
Enter current password for root (enter for none): Set root password? [Y/n] Y New password: Re-enter new password: Remove anonymous users? [Y/n] Y Disallow root login remotely? [Y/n] Y Remove test database and access to it? [Y/n] Y Reload privilege tables now? [Y/n] Y
Once the MariaDB is secured, log in to the MariaDB console with the following command:
mysql -u root -p
Once login, create a database and user for Wiki.js with the following command:
MariaDB [(none)]> CREATE DATABASE wikidb; MariaDB [(none)]> GRANT ALL PRIVILEGES ON wikidb.* TO 'wiki'@'localhost' IDENTIFIED BY 'password';
Next, flush the privileges and exit from the MariaDB with the following command:
MariaDB [(none)]> FLUSH PRIVILEGES; MariaDB [(none)]> EXIT;
Once the MariaDB is configured, you can proceed to install Wiki.js.
Step 4: Install Wiki.js
First, create a separate user and group for Wiki.js with the following command:
groupadd --system wiki useradd -s /sbin/nologin --system -g wiki wiki
Next, download the latest version of Wiki.js with the following command:
curl -s https://api.github.com/repos/Requarks/wiki/releases/latest | grep browser_download_url | grep -v windows | cut -d '"' -f 4 | wget -qi -
Next, create a directory for Wiki.js and extract the downloaded file to the /var/www/html/wiki directory:
mkdir -p /var/www/html/wiki tar zxf wiki-js.tar.gz -C /var/www/html/wiki
Next, change the directory to the wiki and copy the sample configuration file:
cd /var/www/html/wiki cp config.sample.yml config.yml
Next, edit the config.yml file and define your MariaDB database:
nano config.yml
Define your MariaDB database details as shown below:
db: type: mariadb # PostgreSQL / MySQL / MariaDB / MS SQL Server only: host: localhost port: 3306 user: wiki pass: password db: wikidb ssl: false
Save and close the file then change the ownership of the wiki directory with the following command:
chown -R wiki:wiki /var/www/html/wiki
Next, verify the Wiki.js with the following command:
node server
If everything is fine, you should get the following output:
Loading configuration from /var/www/html/wiki/config.yml... OK 2020-11-09T08:16:24.205Z [MASTER] info: ======================================= 2020-11-09T08:16:24.207Z [MASTER] info: = Wiki.js 2.5.170 ===================== 2020-11-09T08:16:24.207Z [MASTER] info: ======================================= 2020-11-09T08:16:24.207Z [MASTER] info: Initializing... 2020-11-09T08:16:24.801Z [MASTER] info: Using database driver mysql2 for mariadb [ OK ] 2020-11-09T08:16:24.805Z [MASTER] info: Connecting to database... 2020-11-09T08:16:24.834Z [MASTER] info: Database Connection Successful [ OK ] 2020-11-09T08:16:27.571Z [MASTER] warn: DB Configuration is empty or incomplete. Switching to Setup mode... 2020-11-09T08:16:27.572Z [MASTER] info: Starting setup wizard... 2020-11-09T08:16:27.747Z [MASTER] info: Starting HTTP server on port 3000... 2020-11-09T08:16:27.747Z [MASTER] info: HTTP Server on port: [ 3000 ] 2020-11-09T08:16:27.751Z [MASTER] info: HTTP Server: [ RUNNING ] 2020-11-09T08:16:27.751Z [MASTER] info: 2020-11-09T08:16:27.751Z [MASTER] info: 2020-11-09T08:16:27.751Z [MASTER] info: Browse to http://YOUR-SERVER-IP:3000/ to complete setup! 2020-11-09T08:16:27.751Z [MASTER] info: 2020-11-09T08:16:27.751Z [MASTER] info:
Step 5: Create a Systemd Service File for Wiki.js
Next, you will need to create a systemd service file to manage the Wiki.js service. You can create it with the following command:
nano /etc/systemd/system/wiki.service
Add the following lines:
[Unit] Description=Wiki.js After=network.target [Service] Type=simple ExecStart=/usr/bin/node server Restart=always User=wiki Environment=NODE_ENV=production WorkingDirectory=/var/www/html/wiki [Install] WantedBy=multi-user.target
Save and close the file then reload the systemd daemon with the following command:
systemctl daemon-reload
Next, start the wiki service and enable it to start at system reboot with the following command:
systemctl start wiki systemctl enable wiki
Step 6: Configure Nginx as a Reverse Proxy
Next, you will need to configure Nginx as a reverse proxy to access the Wiki.js on port 80. First, create an Nginx virtual host configuration file with the following command:
nano /etc/nginx/conf.d/wikijs.conf
Add the following lines:
server { listen 80; server_name wiki.example.com; location / { proxy_set_header Host $http_host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://127.0.0.1:3000; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection "upgrade"; proxy_next_upstream error timeout http_502 http_503 http_504; } }
Save and close the file then restart Nginx service to apply the changes:
systemctl restart nginx
Step 7: Access Wiki.js
Now, open your web browser and access the Wiki.js using the URL http://wiki.example.com. You will be redirected to the following page:
Provide your admin email, password, site URL and click on the INSTALL button. You will be redirected to the Wiki.js login screen:
Provide your admin email, password and click on the Log In button. You should see the Wiki.js dashboard in the following screen:
Of course, you don’t have to install Wiki.js on CentOS 8, if you use one of our Managed CentOS Hosting plans, in which case you can simply ask our expert Linux admins to install Wiki.js on CentOS 8 for you. They are available 24×7 and will take care of your request immediately.
PS. If you liked this post on how to install Wiki.js on CentOS 8, please share it with your friends on the social networks using the buttons on the left or simply leave a reply below. Thanks.