Wiki.js te installeren op Ubuntu 18.04 LTS

Wiki.js is een open bron, moderne en krachtige wiki app gebaseerd op Node.js, Git, en Markdown. Wiki.js draait op de razendsnelle Node.js motor en is geoptimaliseerd om CPU middelen te sparen. Enkele van de vermeldenswaardige Wiki.js functies zijn:

  • Markdown bewerken, ondersteund door Git
  • Lichtgewicht, maar toch uiterst krachtig
  • Mooi ontworpen voor het moderne web
  • Geïntegreerde toegangscontrole
  • Intuïtief beheer van assets
  • Ingebouwde zoekmachine

In deze handleiding lopen we door het installatieproces van Wiki.js versie 1 op een Ubuntu 18.04 LTS besturingssysteemdoor NGINX te gebruiken alsreverse proxy server, MongoDB als databaseserver, PM2 als procesmanager en optioneel kun je de transportlaag beveiligen door acme.sh client en Let’s Encrypt certificaatautoriteit te gebruiken om SSL ondersteuning toe te voegen.

Vereisten

Vereisten om Wiki.js te draaien zijn de volgende:

  • Node.js 6.11.1 tot 10.x is vereist.
  • MongoDB versie3.2of later.
  • Git versie2.7.4of later.
  • Web Server software zoals NGINX, Apache, Caddy, H2O…
  • Een lege Git repository (optioneel).
  • Minimaal 512MBRAM. 1GB RAM aanbevolen.
  • Ongeveer 300MB schijfruimte.
  • Domeinnaam met opgezette A/AAAADNS records.

Vereisten

  • Een Ubuntu 18.04 LTS besturingssysteem.
  • Een niet-root gebruiker met sudo privileges.

Eerste Stappen

Controleer je Ubuntu versie:

lsb_release -ds
# Ubuntu 18.04.1 LTS

Stel de tijdzone in:

sudo dpkg-reconfigure tzdata

Werk je besturingssysteem pakketten (software) bij. Dit is een belangrijke eerste stap omdat je er zeker van bent dat je de laatste updates en beveiligingsfixes hebt voor de standaard softwarepakketten van je besturingssysteem:

sudo apt update && sudo apt upgrade -y

Installeer enkele essentiële pakketten die nodig zijn voor het basisbeheer van het Ubuntu besturingssysteem:

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

Stap 1- Installeer Node.js en npm

Wiki.js is gebouwdop Node.js. We gaan de laatste aanbevolen versie voorWiki.js installeren, die op het moment van dit schrijven versie 10 is.Op Linux heb je een paar Node.js installatiemogelijkheden: Linux Binaries (x86/x64), Broncode of via Pakketbeheer. We zullen een Pakketbeheer optie gebruiken die het installeren en bijwerken van Node.js een fluitje van een cent maakt.

Download en installeer de laatste aanbevolen versievan Node.js uit de NodeSource repository:

curl -sL https://deb.nodesource.com/setup_10.x | sudo -E bash -
sudo apt install -y nodejs 

OPMERKING: npmwordt samen met Node.js gedistribueerd – wat betekent dat als je Node.js downloadt, je automatisch npm op je systeem geïnstalleerd krijgt.

Controleer de versie van Node.js en npm:

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

Npm is een apart project van Node.js en heeft de neiging vaker bij te werken. Daardoor zul je, zelfs als je net Node.js (en dus npm) gedownload hebt, waarschijnlijk je npm moeten bijwerken. Gelukkig weet npm hoe ze zichzelf moet bijwerken! Om je npm bij te werken, typ je dit in je terminal:

sudo npm install -g [email protected]

Dit commando zal npm bijwerken naar de nieuwste stabiele versie.

Controleer npm versie opnieuw met:

npm -v
# 6.8.0

En het zou het laatste versienummer moeten teruggeven.

Stap 2 – Installeer de MongoDB databank

Wiki.jsheeft een databank nodig om zijn gegevens op te slaan, en de huidige stabiele versie van Wiki.js ondersteunt alleen de databank-engine MongoDB. Volgens dat moeten we de databank MongoDB installeren.

Download en installeer de databank MongoDB:

sudo apt install -y mongodb

Controleer de versie van MongoDB:

mongo --version | head -n 1 && mongod --version | head -n 1
# MongoDB shell version v3.6.3
# db version v3.6.3

Start deMongoDB diensten schakel hem in (stel in dat hij startbij opnieuw opstarten) alshij nog niet gestart en ingeschakeld is:

sudo systemctl start mongodb.service
sudo systemctl enable mongodb.service

Stap 3 – Installeeracme.sh clienten verkrijg Let’s Encrypt certificaat (optioneel)

Je website beveiligen met HTTPS is niet noodzakelijk, maar het is een goed gebruik om je site verkeer te beveiligen. Om een SSL certificaat van Let’s Encrypt te verkrijgen, gebruiken we acme.sh client. Acme.sh is een zuivere UNIX shell software om SSL certificaten van Let’s Encrypt te verkrijgen zonder afhankelijkheden.

Download en installeer:acme.sh

sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh 
./acme.sh --install --accountemail [email protected]
source ~/.bashrc
cd ~

Controleer acme.sh versie:

acme.sh --version
# v2.8.1

Verkrijg RSAen ECC/ECDSAcertificaten voorje domein/hostnaam:

# RSA 2048
acme.sh --issue --standalone -d example.com --keylength 2048
# ECDSA
acme.sh --issue --standalone -d example.com --keylength ec-256

Als je nep certificaten wilt om te testen kun je de--stagingvlag aan de bovenstaande commando’s toevoegen.

Om een lijst van je uitgegeven certs te krijgen kun je uitvoeren:

acme.sh --list

Maak mappen om je certs in op te slaan. We zullen/etc/letsencrypt gebruiken, maar het kan om het even wat je verkiest om SSL certs in op te slaan.

mkdir -p /etc/letsencrypt/example.com
mkdir -p /etc/letsencrypt/example.com_ecc

Installeer/kopieer certificaten naar/etc/letsencryptmap.

# RSA
acme.sh --install-cert -d example.com \ 
        --cert-file /etc/letsencrypt/example.com/cert.pem \
        --key-file /etc/letsencrypt/example.com/private.key \
        --fullchain-file /etc/letsencrypt/example.com/fullchain.pem \
        --reloadcmd "sudo systemctl reload nginx.service"

# ECC/ECDSA
acme.sh –install-cert -d example.com –ecc \
–cert-file /etc/letsencrypt/example.com_ecc/cert.pem \
–key-file /etc/letsencrypt/example.com_ecc/private.key \
–fullchain-file /etc/letsencrypt/example.com_ecc/fullchain.pem \
–reloadcmd “sudo systemctl reload nginx.service”

Na het uitvoeren van de bovenstaande commando’s staan jecertificaten en sleutels in:

  • Voor RSA:/etc/letsencrypt/example.com map.
  • Voor ECC/ECDSA: /etc/letsencrypt/example.com_ecc directory.

Alle certificaten worden om de 60 dagen automatisch vernieuwd.

Verlaat na het verkrijgen van de certs de root gebruiker en ga terug naar de gewone sudo gebruiker:

exit

Stap 4 – Installeer en configureer NGINX

Wiki.js (of elke HTTP Node.js app) kan draaien zonder een eigenlijke webserver (zoals NGINX of Apache). Het is echter sterk aan te bevelen om een standaard webserver voor Wiki.js te zetten. Dit zorgt ervoor dat je functies als SSL, meerdere websites, caching, enz. kunt gebruiken. We zullen in deze handleiding NGINX gebruiken, maar elke andere server volstaat, je moet hem alleen goed instellen.

Download en installeer NGINX uit de officiële NGINX repo door de volgende commando’s uit te voeren:

wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
rm nginx_signing.key
sudo -s
printf "deb https://nginx.org/packages/mainline/ubuntu/ $(lsb_release -sc) nginx\ndeb-src https://nginx.org/packages/mainline/ubuntu/ $(lsb_release -sc) nginx\n" >> /etc/apt/sources.list.d/nginx_mainline.list
exit
sudo apt update
sudo apt install -y nginx

Controleer de NGINX versie:

sudo nginx -v
# nginx version: nginx/1.15.8

Schakel de NGINX dienst in en start hem:

sudo systemctl enable nginx.service
sudo systemctl start nginx.service

Voersudo vim /etc/nginx/conf.d/wiki.js.confuit

sudo vim /etc/nginx/conf.d/wiki.js.conf

en configureer NGINX als een HTTPS reverse proxy.

server {
    
    listen [::]:443 ssl http2;
    listen 443 ssl http2;
    listen [::]:80;
    listen 80;
    
    server_name example.com;

    charset utf-8;
    client_max_body_size 50M;

ssl_certificate /etc/letsencrypt/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com/private.key;
ssl_certificate /etc/letsencrypt/example.com_ecc/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/example.com_ecc/private.key; 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; } }

Het enige dat je in de bovenstaande configuratie hoeft te veranderen is deserver_name richtlijn, de domeinnaam in de ssl bestandspaden, en eventueel deproxy_passrichtlijn als jebesluit een andere dan3000poort te configureren. Wiki.js gebruikt standaard poort3000.

Controleer de NGINX configuratie:

sudo nginx -t

Om de veranderingen te laten inwerken, moeten we tenslotte NGINX opnieuw laden:

sudo systemctl reload nginx.service

Stap 5 – Installeer en stel Wiki.js in

Maak een document root directory waar Wiki.js in moet komen te staan:

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

Navigeer naar de document root directory:

cd /var/www/wiki.js

Maak een gebruiker aan voor wikijs

sudo useradd -d /var/www/wiki.js wikijs

Verander het eigendom van de/var/www/wiki.jsdirectory in wikijs gebruiker:

sudo chown -R wikijs:wikijs /var/www/wiki.js

Voer vanuit de/var/www/wiki.js directory het volgende commando uit om de nieuwste Wiki.js toepassing op te halen en te installeren:

cd /var/www/wiki.js
sudo su wikijs
curl -sSo- https://wiki.js.org/install.sh | bash

Als de installatie voltooid is, kun je het volgende commando uitvoeren om de huidig geïnstalleerde versie van Wiki.js te bekijken:

node wiki --version
# 1.0.117

Zodra de installatie voltooid is, wordt je gevraagd de configuratie wizard te starten.

Start dus de configuratie wizard door te draaien:

node wiki configure

Navigeer met je web browser naarhttp://example.comen volg de instructies op het scherm. Alle instellingen die je tijdens de configuratie wizard invoert worden opgeslagen in hetconfig.yml bestand.De configuratiewizard start automatisch Wiki.js voor je.

Eerst zie je een welkomstbericht. Klik op de knop“Start“:

Wiki.js installer

Vervolgens verschijnt de “System Check” pagina. Als aan alle eisen is voldaan, klik je op de “Continue” knop.

Systeemcontrole

Voer algemene informatie over je wiki in en klik op de“Continue” knop:

Algemene informatie

Lees de “Belangrijke overweging” mededeling en klik op“Continue” voor de volgende stap:

Belangrijk om te overwegen

Maak vervolgens verbinding met de database en ga verder:

Database verbinding

Je zou een bericht moeten zien dat Wiki.js metsucces metde database verbonden is. Klik op de knop“Continue“:

Database verbinding geslaagd

Stel paden in en ga verder:

Stel het pad in

Stel een remote Git repo in als je dat wilt of sla deze stap over. Deze stap is optioneel maar zeer aan te bevelen:

Opzetten van een remote GIT repo

Klik vervolgens op de “Continue” knop:

Ga verder met de installatie

Maak een admin account aan en klik op deContinue” knop:

Maak een admin account aan

En start tenslotte de Wiki.js:

Begin Wiki.js

Wacht ongeveer 30 seconden en je zou doorgestuurd moeten worden naar de Wiki.js homepage:

Wiki.js homepage

De installatie is voltooid. Je zou de welkomstpagina van wiki moeten zien:

Welkom bij Wiki.js

Stap 6 – Stel PM2 procesmanager in

Standaard start Wiki.js niet automatisch na een herstart van het systeem. Om het bij het opstarten te laten starten, moeten we PM2 proces manager instellen. PM2 wordt met Wiki.js gebundeld als een lokale npm module, dus we hoeven PM2 niet globaal te installeren.

Vertel PM2 om zichzelf als opstartdienst te configureren door te draaien:

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

Sla tenslotte de huidige PM2 configuratie op door het commando uit te voeren:

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

Je Wiki.js draait nu als een achtergrondproces, met PM2 als procesmanager.

Links