Wiki.js (V 1.0) install on Ubuntu 18.04 LTS - Server
und Debian 9 für DockerContainer
Diese Anleitung entstand 2019 aus mehreren Kommentaren (in english) wie Wiki.js (Version 1.0) zu installieren sei.
Es gibt nun unter https://js.wiki/ , Anleitungen / Dokumentation (in english) für die V 1.0 (Legacy) und der V 2.5 (Stable 2.5.299).An dieser Stelle sei bei einer Neuinstallation auf die neuste Version (Stable 2.5.299) verwiesen.
Unterschiede:
- V 1.0.117 nutzt MongoDB (non SQL Datenbank)
- V 2.5.299 untestützt postgreSQL, mariadb etc. (SQL Datenbanken)
- ab Version 3.0 soll wohl nur noch postgreSQL untestützt werden
Bitte diesen Umstand bei der Installation von Version 2.5 für die künftige Kompatibilität / Upgrades beachten.
Wiki.js (V 1.0) auf Ubuntu 18.04 LTS - Server installieren
Es sei daran erinnert, daß Sie sich auf einem PRIVATEN Server befinden.
Die Angaben Debian 9 (Stretch) beziehen sich auf eine Minimalinstallation von debian:latest in einem DockerContainer.
Diese Angaben sind nur für die Variante Docker mit minimaler Installationsgröße des Repo debian:latest geeignet.
Vorbereitung des Host-Systems:
- Herunterladen des Server - Images:
- Installation starten und entsprechend einrichten
- einen "Hauptbenutzer" anlegen (wird im Zuge der Installation festgelegt)
- evt. einen Benutzer für Wiki.js anlegen und mit "SUDO"-rechte versehen (über diesen Benutzer dann alles weitere durchführen)
- als den gewünschten Benutzer unter dem der Wiki.js - Server laufen soll einloggen und nachfolgende Befehle ausführen
TIMEZONE setzen (wenn bei der Einrichtung bereits gesetzt -> ignorieren)
sudo echo "tzdata tzdata/Areas select Etc" | debconf-set-selections
sudo echo "tzdata tzdata/Zones/Etc select UTC" | debconf-set-selections
sudo TIMEZONE="Etc/UTC"
sudo echo $TIMEZONE > /etc/timezone
System updaten / upgraden
sudo apt-get update -y
sudo apt-get upgrade -y
benötigte Programme nachinstallieren
sudo apt-get install -y curl wget nano git unzip socat net-tools
sudo apt-get install -y bash-completion
sudo apt-get install -y apt-transport-https
sudo apt-get install -y build-essential
sudo apt-get install -y dirmngr
gilt nur für Debian 9 (Stretch) Docker Minimalversion:
sudo apt-get install -y sudo systemd cron
Note: das fehlte in der Minimalversion von debian:latest für Docker
System updaten / upgraden / "Müll" entsorgen
sudo apt-get update -y
sudo apt-get upgrade -y
sudo apt-get autoremove -y
Node.js installieren
sudo curl -sL https://deb.nodesource.com/setup_10.x | bash
sudo apt-get install -y nodejs
Check Node.js and npm version
node -v && npm -v
npm update auf letzte Version
sudo npm install -g npm@latest
Download und installiere MongoDB-org 4.0 database
Das mongodb package = Ubuntu Version, ist keine offiziell von MongoDB Inc. unterstützte Version.
Das mongodb-org package wird offiziell von der MongoDB Inc. unterstützt und supportet. siehe hier
Also bitte VORHER prüfen ob eine Ubuntu-eigene-Version bereits drauf ist. Es gibt sonst nur Probleme die keiner haben will.
Ubuntu Altlasten (mongodb) entsorgen (optional)
Ubuntu-MongoDB suchen:
sudo apt list --installed | grep mongodb
Ubuntu-MongoDB deinstallieren:
sudo apt remove -y mongodb
Ubuntu-MongoDB verbannen:
sudo apt purge -y mongodb
offizielle MongoDB-org 4.x database installieren
Eventuell nach einer neuen Version sehen und der Anleitung (engl.) folgen. ---> siehe hier
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4
sudo echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
Die Version für Debian 9 (Strech) für Docker Installationen:
sudo echo "deb http://repo.mongodb.org/apt/debian stretch/mongodb-org/4.0 main" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list
Auch hier gilt, vorher nachsehen ob sich etwas verändert hat. Link siehe oben
System Update
sudo apt-get update -y
Install MongoDB-org 4.0
sudo apt-get install -y mongodb-org
Check the MongoDB version
mongo --version | head -n 1
mongod --version | head -n 1
Starten und "enable" (für den Start wenn reboot) MongoDB service
Für mongodb
sudo systemctl start mongodb.service
sudo systemctl enable mongodb.service
oder
sudo service mongodb enable
sudo service mongodb restart
oder für mongod (eher warscheinlich)
sudo systemctl enable mongod.service
sudo systemctl start mongod.service
oder
sudo service mongod enable
sudo service mongod restart
acme installieren (optional)
ACME erzeugt Certifikate die alle 60 Tage automatisch erneuert werden.
Wichtig:
Die Erzeugung der Certifikate funktioniert nur mit den für diesen Server vorhandene Domain! Diese muß auf diesen Server (IP) per DNS-Auflösung erreichbar sein.
Serverfremde Domains (die nicht auf diesen Server zeigen) werden NICHT erzeugt.
Bitte beachtet auch, daß die vorhandenen Sicherheitsverfahren den Netzwerkverkehr zu diesem Server gewährleisten (wird leider oft vergessen).
Wichtiger Hinweis:
Ersetzt bitte folgendes: DeineEmail@deine_Domain.com durch eine gültige E-Mail-Adresse
und deine_Domain.com durch eine gültige Domain
sudo su - root
git clone https://github.com/Neilpang/acme.sh.git
cd acme.sh
./acme.sh --install --accountemail DeineEmail@deine_Domain.com
source ~/.bashrc
./acme.sh --issue --standalone -d deine_Domain.com --keylength 2048
./acme.sh --issue --standalone -d deine_Domain.com --keylength ec-256
Check acme.sh Version
Achtung: du bist immernoch root !!!
./acme.sh --version
RSA und ECC/ECDSA certifikate für Deine domain/hostname erhalten
Wenn Du nur Certifikate zum testen benötigst, füge das --staging flag zum Commando hinzu. Beispiel:
acme.sh --issue --standalone **--staging** -d deine_Domain.com --keylength 2048
RSA 2048
acme.sh --issue --standalone -d deine_Domain.com --keylength 2048
ECDSA
acme.sh --issue --standalone -d deine_Domain.com --keylength ec-256
Zum auflisten Deiner Certifikate
./acme.sh --list
exit
Verzeichnis erstellen zum ablegen der Certifikate
We will use /etc/letsencrypt but it can be anything you prefer to store SSL certs.
sudo su - root
mkdir -p /etc/letsencrypt/deine_Domain.com
mkdir -p /etc/letsencrypt/deine_Domain.com_ecc
Installieren / Kopieren der Certifikate nach /etc/letsencrypt
!!! funktioniert nicht mit fake domain-addressen da keine erstellt wurden !!! Consolenausgaben beachten!
All the certificates will be automatically renewed every 60 days
RSA
./acme.sh --install-cert -d deine_Domain.com --cert-file /etc/letsencrypt/deine_Domain.com/cert.pem
./acme.sh --install-cert -d deine_Domain.com --key-file /etc/letsencrypt/deine_Domain.com/private.key # CERT fehlt bei fake-domain
./acme.sh --install-cert -d deine_Domain.com --fullchain-file /etc/letsencrypt/deine_Domain.com/fullchain.pem # CERT fehlt bei fake-domain
#--reloadcmd "sudo systemctl reload nginx.service"
ECC/ECDSA
./acme.sh --install-cert -d deine_Domain.com --ecc --cert-file /etc/letsencrypt/deine_Domain.com_ecc/cert.pem
./acme.sh --install-cert -d deine_Domain.com --key-file /etc/letsencrypt/deine_Domain.com_ecc/private.key # CERT fehlt bei fake-domain
./acme.sh --install-cert -d deine_Domain.com --fullchain-file /etc/letsencrypt/deine_Domain.com_ecc/fullchain.pem # CERT fehlt bei fake-domain
#--reloadcmd "sudo systemctl reload nginx.service"
cd ~
Nach dem erhalten der Certifikate
exit vom Benutzer root und gehe zurück zu normal sudo Benutzer (user)
exit
UPDATE / UPGRADE
sudo apt-get update
sudo apt-get upgrade
Download und installiere NGINX vom offiziellen NGINX repo
sudo apt-get install -y nginx
Die nachfolgende Variante wird nur benötigt wenn Debian 9 (Strech) in einer Minimalversion für Docker installiert wird
sudo wget https://nginx.org/keys/nginx_signing.key
sudo apt-key add nginx_signing.key
sudo rm nginx_signing.key
sudo -s
printf "deb https://nginx.org/packages/mainline/debian/ $(uname -r) nginx\ndeb-src https://nginx.org/packages/mainline/debian/ $(uname -r) nginx\n" >> /etc/apt/sources.list.d/nginx_mainline.list
CHECK NGINX VERSION & START SERVICE & CONFIG NGINX
sudo nginx -v
Enable and start NGINX service
sudo service nginx restart
sudo service nginx enable
erstelle diese Verzeichnisse wenn nötig
sudo mkdir -p /etc/nginx
sudo mkdir -p /etc/nginx/conf.d
Run:
sudo nano /etc/nginx/conf.d/wiki.js.conf
and configure NGINX as an HTTPS reverse proxy.
The only thing you need to change in the above config is server_name directive, and potentially proxy_pass directive if you decide to configure some other than 3000 port. Wiki.js uses port 3000 by default.
füge nachfolgendes in die wiki.js.conf ein
entweder einzeln und nur was in den " " bzw. ' ' steht oder als script:
sudo echo "server {" > /etc/nginx/conf.d/wiki.js.conf
sudo echo " listen [::]:443 ssl http2;" >> /etc/nginx/conf.d/wiki.js.conf
sudo echo " listen 443 ssl http2;" >> /etc/nginx/conf.d/wiki.js.conf
sudo echo " listen [::]:80;" >> /etc/nginx/conf.d/wiki.js.conf
sudo echo " listen 80;" >> /etc/nginx/conf.d/wiki.js.conf
sudo echo " server_name deine_Domain.com;" >> /etc/nginx/conf.d/wiki.js.conf
sudo echo " charset utf-8;" >> /etc/nginx/conf.d/wiki.js.conf
sudo echo " client_max_body_size 50M;" >> /etc/nginx/conf.d/wiki.js.conf
sudo echo " ssl_certificate /etc/letsencrypt/deine_Domain.com/fullchain.pem;" >> /etc/nginx/conf.d/wiki.js.conf # CERT fehlt bei fake-domain
sudo echo " ssl_certificate_key /etc/letsencrypt/deine_Domain.com/private.key;" >> /etc/nginx/conf.d/wiki.js.conf # CERT fehlt bei fake-domain
sudo echo " ssl_certificate /etc/letsencrypt/deine_Domain.com_ecc/fullchain.pem;" >> /etc/nginx/conf.d/wiki.js.conf # CERT fehlt bei fake-domain
sudo echo " ssl_certificate_key /etc/letsencrypt/deine_Domain.com_ecc/private.key;" >> /etc/nginx/conf.d/wiki.js.conf # CERT fehlt bei fake-domain
sudo echo " location / {" >> /etc/nginx/conf.d/wiki.js.conf
sudo echo " proxy_set_header Host "'$http_host'";" >> /etc/nginx/conf.d/wiki.js.conf
sudo echo " proxy_set_header X-Real-IP "'$remote_addr'";" >> /etc/nginx/conf.d/wiki.js.conf
sudo echo " proxy_pass http://127.0.0.1:3000;" >> /etc/nginx/conf.d/wiki.js.conf **# der Port muß mit dem Port in der wiki-config (config.yml) übereinstimmen!**
sudo echo " proxy_http_version 1.1;" >> /etc/nginx/conf.d/wiki.js.conf
sudo echo " proxy_set_header Upgrade "'$http_upgrade'";" >> /etc/nginx/conf.d/wiki.js.conf
sudo echo ' proxy_set_header Connection "upgrade";' >> /etc/nginx/conf.d/wiki.js.conf
sudo echo " proxy_next_upstream error timeout http_502 http_503 http_504;" >> /etc/nginx/conf.d/wiki.js.conf
sudo echo " }" >> /etc/nginx/conf.d/wiki.js.conf
sudo echo "}" >> /etc/nginx/conf.d/wiki.js.conf
oder per Hand via:
sudo nano /path/to/config
und einzeln selbst schreiben.
ACHTUNG: Bitte immer auf die genaue Schreibweise und Leerzeichen achten!!
Check die NGINX Konfiguration und reload NGINX
sudo nginx -t
RESTART NGINX
sudo service nginx restart
sudo service nginx enable
oder
sudo systemctl enable nginx
sudo systemctl restart nginx
UPDATE / UPGRADE
sudo apt-get update
sudo apt-get upgrade
Installation und setup Wiki.js
Create a document root directory where Wiki.js should reside in
sudo mkdir -p /var/www/wiki.js
Navigate to the document root directory
cd /var/www/wiki.js
Ändere den Benutzer und die Benutzergruppe
für das Verzeichnis: /var/www/wiki.js zu Deinem gewählten Benutzer (your_user - z.Bsp: wiki)
sudo chown -R your_user_ID:your_user_group_ID /var/www/wiki.js
NOTE: Ersetze your_user_ID mit Deiner non-root user ID und die your_user_group_ID mit der your_user_group_ID die Du für das Wiki erstellt und die ganze Zeit benutzt hattest.
z.Bsp.: non-root user = wiki und hat die userID 1002 und die groupID 1002 also muß der Befehl lauten: sudo chown -R 1002:1002 /var/www/wiki.js
Installation von wiki.js (immernoch nur als einfacher Benutzer ausführen)
führe das nachfolgende direkt im Verzeichnis: /var/www/wiki.js
curl -sSo- https://wiki.js.org/install.sh | bash
das Commando installiert die letzte / aktuellste Wiki.js Applikationsversion
noch im Verzeichnis: /var/www/wiki.js (als Benutzer ausführen)
um die aktuelle Version anzuzeigen
node wiki --version
ALLES bereinigen
sudo apt-get autoremove
WIKI konfigurieren und starten
Bitte bleiben Sie im Verzeichnis: /var/www/wiki.js
node wiki configure
Bitte die Ausgabe nach der Fertigstellung beachten!!
Bitte bleiben Sie im Verzeichnis: /var/www/wiki.js
node wiki start
OPTIONAL
#### Tell PM2 to configure itself as a startup service by running:
/var/www/wiki.js/node_modules/pm2/bin/pm2 startup
#### Finally, save the current PM2 configuration by running the command:
/var/www/wiki.js/node_modules/pm2/bin/pm2 save
#### Your Wiki.js now runs as a background process, using PM2 as its process manager. ####