How to Install Wiki.js - NodeJS based Wiki Software on Debian 9

Wiki.js is an open supply, trendy and highly effective wiki app based mostly on Node.js, Git, and Markdown. Wiki.js runs on the flamingly quick Node.js engine and is optimized to preserve CPU sources. A few of the Wiki.js options value mentioning are:

  • Markdown enhancing, backed by Git
  • Light-weight, but extraordinarily highly effective
  • Fantastically designed for the trendy internet
  • Built-in Entry Management
  • Intuitive Property Administration
  • Constructed-in search engine

On this tutorial, we’ll stroll you thru the Wiki.js model 1 set up course of on a Debian 9 working system by utilizing NGINX as a reverse proxy server, MongoDB as a database server, PM2 as a course of supervisor and optionally you may safe transport layer by utilizing consumer and Let’s Encrypt certificates authority so as to add SSL assist.


Necessities to run Wiki.js are the next:

  • Node.js 6.11.1 to 10.x is required.
  • MongoDB model 3.2 or later.
  • Git model 2.7.4 or later.
  • Web Server software program corresponding to NGINX, Apache, Caddy, H2O…
  • An empty Git repository (non-compulsory).
  • Minimal of 512MB RAM. 1GB of RAM advisable.
  • About 300MB of disk area.
  • Area identify with A/AAAA DNS information arrange.


  • A Debian 9 working system.
  • A non-root person with sudo privileges.

Preliminary Steps

Test your Debian system model:

lsb_release -ds
# Debian GNU/Linux 9.8 (stretch)

Arrange the timezone:

dpkg-reconfigure tzdata

Replace your working system packages (software program). This is a crucial first step as a result of it ensures you might have the most recent updates and safety fixes in your working system’s default software program packages:

apt replace && apt improve -y

Set up some important packages which are essential for primary administration of the Debian working system:

apt set up -y curl wget vim git unzip socat sudo bash-completion apt-transport-https build-essential dirmngr

Step 1- Set up Node.js and npm

Wiki.js is constructed on Node.js. We’re going to set up the most recent advisable model for Wiki.js which is model 10 on the time of this writing. On Linux, you might have a couple of Node.js set up choices: Linux Binaries (x86/x64), Supply Code or by way of Bundle Managers. We’ll use a Bundle Administration possibility which makes putting in and updating Node.js a breeze.

Obtain and set up the most recent advisable model of Node.js from the NodeSource repository:

curl -sL | sudo -E bash -
sudo apt set up -y nodejs

NOTE: npm is distributed with Node.js – which implies that if you obtain Node.js, you mechanically get npm put in in your system.

Test Node.js and npm model:

node -v && npm -v
# v10.15.1
# 6.4.1

Npm is a separate venture from Node.js and tends to replace extra incessantly. Because of this, even in case you’ve simply downloaded Node.js (and subsequently npm), you’ll most likely must replace your npm. Fortunately, npm is aware of how one can replace itself! To replace your npm, sort this into your terminal:

sudo npm set up -g [email protected]

This command will replace npm to the most recent steady model.

Re-check npm model with:

npm -v
# 6.8.0

And it ought to return the most recent model quantity.

Step 2 – Set up MongoDB database

Wiki.js wants a database to retailer its knowledge, and the present steady model of Wiki.js helps solely MongoDB database engine. In keeping with that, we might want to set up MongoDB database.

Obtain and set up MongoDB database:

sudo apt-key adv --keyserver hkp:// --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
echo "deb stretch/mongodb-org/4.0 main" | sudo tee /and so forth/apt/sources.listing.d/mongodb-org-4.0.listing
sudo apt-get replace
sudo apt-get set up -y mongodb-org

Test the MongoDB model:

mongo --version | head -n 1 && mongod --version | head -n 1

Begin and allow (set it to start out on rebootMongoDB service if not already began and enabled:

sudo systemctl begin mongod.service
sudo systemctl allow mongod.service

Step 3 – Set up consumer and procure Let’s Encrypt certificates (non-compulsory)

Securing your web site with HTTPS is just not essential, however it’s a good follow to safe your web site site visitors. So as to acquire an SSL certificates from Let’s Encrypt, we’ll use consumer. is a pure UNIX shell software program for acquiring SSL certificates from Let’s Encrypt with zero dependencies. 

Obtain and set up

sudo su - root
git clone
./ --install --accountemail [email protected]
supply ~/.bashrc
cd ~

Test model: --version
# v2.8.1

Get hold of RSA and ECC/ECDSA certificates in your area/hostname:

# RSA 2048 --issue --standalone -d --keylength 2048
# ECDSA --issue --standalone -d --keylength ec-256

In order for you pretend certificates for testing you may add --staging flag to the above instructions.

To listing your issued certs you may run: --list

Create folders to retailer your certs. We’ll use /and so forth/letsencrypt however it may be something you like to retailer SSL certs.

mkdir -p /and so forth/letsencrypt/
mkdir -p /and so forth/letsencrypt/instance.com_ecc

Set up/copy certificates to /and so forth/letsencrypt listing.

# RSA --install-cert -d
--cert-file /and so forth/letsencrypt/
--key-file /and so forth/letsencrypt/
--fullchain-file /and so forth/letsencrypt/
--reloadcmd "sudo systemctl reload nginx.service"

# ECC/ECDSA --install-cert -d --ecc
--cert-file /and so forth/letsencrypt/instance.com_ecc/cert.pem
--key-file /and so forth/letsencrypt/instance.com_ecc/personal.key
--fullchain-file /and so forth/letsencrypt/instance.com_ecc/fullchain.pem
--reloadcmd "sudo systemctl reload nginx.service"

After working the above instructions, your certificates and keys will probably be in:

  • For RSA: /and so forth/letsencrypt/ listing.
  • For ECC/ECDSA: /and so forth/letsencrypt/instance.com_ecc listing.

All of the certificates will probably be mechanically renewed each 60 days.

After acquiring certs, exit from root person and return again to regular sudo person:


Step 4 – Set up and configure NGINX

Wiki.js (or any HTTP Node.js app) can run with none precise internet server (corresponding to NGINX or Apache). Nevertheless, it’s extremely advisable to place a regular internet server in entrance of Wiki.js. This ensures you need to use options like SSL, a number of web sites, caching, and so forth. We’ll use NGINX on this tutorial, however every other server will do, you simply must configure it correctly.

Obtain and set up NGINX from the official NGINX repo by issuing the next instructions:

sudo apt-key add nginx_signing.key
rm nginx_signing.key
sudo -s
printf "deb $(lsb_release -sc) nginxndeb-src $(lsb_release -sc) nginxn" >> /and so forth/apt/sources.listing.d/nginx_mainline.listing
sudo apt replace
sudo apt set up -y nginx

Test the NGINX model:

sudo nginx -v
# nginx model: nginx/1.15.8

Allow and begin NGINX service:

sudo systemctl allow nginx.service
sudo systemctl begin nginx.service

Run sudo vim /and so forth/nginx/conf.d/wiki.js.conf and configure NGINX as an HTTPS reverse proxy.

server {
pay attention [::]:443 ssl http2;
pay attention 443 ssl http2; pay attention [::]:80; pay attention 80; server_name; charset utf-8; client_max_body_size 50M;

ssl_certificate /and so forth/letsencrypt/;
ssl_certificate_key /and so forth/letsencrypt/;
ssl_certificate /and so forth/letsencrypt/instance.com_ecc/fullchain.pem;
ssl_certificate_key /and so forth/letsencrypt/instance.com_ecc/personal.key; location / { proxy_set_header Host $http_host; proxy_set_header X-Actual-IP $remote_addr; proxy_pass; proxy_http_version 1.1; proxy_set_header Improve $http_upgrade; proxy_set_header Connection "upgrade"; proxy_next_upstream error timeout http_502 http_503 http_504; } }

The one factor it’s essential change within the above config is server_name directive, and probably proxy_pass directive in case you resolve to configure another than 3000 port. Wiki.js makes use of port 3000 by default.

Test the NGINX configuration:

sudo nginx -t

Lastly, for modifications to take impact, we have to reload NGINX:

sudo systemctl reload nginx.service

Step 5 – Set up and setup Wiki.js

Create a doc root listing the place Wiki.js ought to reside in:

sudo mkdir -p /var/www/wiki.js

Navigate to the doc root listing:

cd /var/www/wiki.js

Change possession of the /var/www/wiki.js listing to your_user:

sudo chown -R [your_user]:[your_user] /var/www/wiki.js

NOTE: Exchange your_user within the above command along with your non-root person that you need to have created as a prerequisite for this tutorial.

From /var/www/wiki.js listing, run the next command to fetch and set up the most recent Wiki.js utility:

curl -sSo- | bash

As soon as the set up is accomplished, you may run the next command in an effort to view the presently put in model of Wiki.js:

node wiki --version
# 1.0.117

As soon as the set up is accomplished, you may be prompted to launch the configuration wizard.

So, begin the configuration wizard by working:

node wiki configure

Utilizing your internet browser, navigate to and observe the on-screen directions. All settings entered through the configuration wizard are saved within the config.yml file. The configuration wizard will mechanically begin Wiki.js for you.

First, you will note a welcome message. Click on on the “Begin” button:

Wiki.js installer

Subsequent “System Check” web page will seem. If all necessities are met, click on on the “Proceed” button.

System Check

Enter basic details about your wiki and click on the “Proceed” button:

General information

Learn the “Important Consideration” discover and click on “Proceed” for the subsequent step: 

Important to consider

Subsequent, connect with the database and proceed: 

Database connection

You must see a message that Wiki.js has been efficiently linked to the database. Click on the “Proceed” button:

Database connection successful

Set paths and proceed:

Set the path

Arrange distant Git repo if you’d like or skip this step. This step is non-compulsory however extremely advisable:

Setup remote GIT repo

Subsequent, click on the “Continue” button:

Continue with the installation

Create an admin account and click on the “Proceed” button:

Create an admin account

And eventually, begin the Wiki.js:

Start Wiki.js

Wait round 30 seconds and you need to be redirected to Wiki.js homepage:

Wiki.js homepage

The set up is accomplished. You must wiki welcome web page:

Welcome to Wiki.js

Step 6 – Setup PM2 Course of Supervisor

By default, Wiki.js won’t begin mechanically after a system reboot. So as to make it begin on boot, we have to setup PM2 course of supervisor. PM2 comes bundled with Wiki.js as an area npm module, so we needn’t set up PM2 globally.

Inform PM2 to configure itself as a startup service by working:

/var/www/wiki.js/node_modules/pm2/bin/pm2 startup

Lastly, save the present PM2 configuration by working the command:

/var/www/wiki.js/node_modules/pm2/bin/pm2 save

Your Wiki.js now runs as a background course of, utilizing PM2 as its course of supervisor.

Nintendo Swap: Mario video games go on sale for MAR10 Day

Previous article

All indicators level to a Google recreation console announcement at GDC

Next article

You may also like


Leave a Reply

More in Apache