So installierst du Wiki.js auf Rocky Linux 9
Wiki.js ist eine leichtgewichtige Open-Source-Wikisoftware. Sie baut auf dem JavaScript-Framework Node.js auf. Sie kann zum Schreiben von Dokumentationen, Wikis und Webinhalten verwendet werden. Dabei steht Entwicklern ein Markdown-Editor und Nicht-Technikern ein WYSIWYG-Editor zur Verfügung. Er unterstützt mehrere Inhaltstypen, darunter UML-Diagramme, mathematische Ausdrücke in Tex- oder MathML-Syntax und Code. Es enthält mehrere Module für verschiedene Funktionen wie Analysen, Authentifizierung, Protokollierung, Suchmaschinen von Drittanbietern und mehrere Speicherdienste, mit denen du deine Inhalte synchronisieren kannst.
In diesem Lernprogramm lernst du, wie du Wiki.js auf einem Rocky Linux 9 Server installierst und dabei die PostgreSQL-Datenbank und den Nginx-Server für das Proxying nutzt.
Voraussetzungen
- Ein Server mit Rocky Linux 9.
- Ein Nicht-Root-Benutzer mit sudo-Rechten.
- Ein vollständig qualifizierter Domainname (FQDN), der auf deinen Server zeigt. Für unsere Zwecke verwenden wir
wiki.example.com
als Domänennamen. - Stelle sicher, dass alles auf dem neuesten Stand ist.
$ sudo dnf update
- Installiere grundlegende Hilfspakete. Einige von ihnen sind vielleicht schon installiert.
$ sudo dnf install wget curl nano unzip yum-utils -y
Schritt 1 – Firewall konfigurieren
Der erste Schritt besteht darin, die Firewall zu konfigurieren. Rocky Linux verwendet die Firewalld Firewall. Überprüfe den Status der Firewall.
$ sudo firewall-cmd --state running
Die Firewall arbeitet mit verschiedenen Zonen, wobei die öffentliche Zone die Standardzone ist, die wir verwenden werden. Liste alle Dienste und Ports auf, die auf der Firewall aktiv sind.
$ sudo firewall-cmd --permanent --list-services
Es sollte die folgende Ausgabe angezeigt werden.
cockpit dhcpv6-client ssh
Wiki.js braucht HTTP- und HTTPS-Ports, um zu funktionieren. Öffne sie.
$ sudo firewall-cmd --add-service=http --permanent $ sudo firewall-cmd --add-service=https --permanent
Lade die Firewall neu, um die Änderungen zu übernehmen.
$ sudo firewall-cmd --reload
Schritt 2 – PostgreSQL und Dienstprogramme installieren
Rocky Linux 9 wird mit einer älteren Version von PostgreSQL ausgeliefert. Für unser Tutorial werden wir Postgres 14 installieren.
Installiere das Repository-RPM für PostgreSQL.
$ sudo dnf install -y https://download.postgresql.org/pub/repos/yum/reporpms/EL-9-x86_64/pgdg-redhat-repo-latest.noarch.rpm
Installiere den PostgreSQL 14 Server.
$ sudo dnf install -y postgresql14-server postgresql14-contrib
Initialisiere die Datenbank.
$ sudo /usr/pgsql-14/bin/postgresql-14-setup initdb
Aktiviere und starte den PostgreSQL-Dienst.
$ sudo systemctl enable postgresql-14 --now
Überprüfe den Status des Dienstes.
$ 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...
Schritt 3 – PostgreSQL konfigurieren
Melde dich in der PostgreSQL-Shell an.
$ sudo -i -u postgres psql
Erstelle eine neue Datenbank für Wiki.js.
postgres=# CREATE DATABASE wikidb;
Erstelle einen neuen Datenbankbenutzer mit einem sicheren Passwort.
postgres=# CREATE USER wikiuser WITH ENCRYPTED PASSWORD 'wikipassword';
Erteile dem Benutzer die Rechte zur Nutzung der Datenbank.
postgres=# GRANT ALL PRIVILEGES ON DATABASE wikidb TO wikiuser;
Beende die Postgres-Shell.
postgres=# \q
Schritt 4 – Node.js installieren
Wiki.js unterstützt zum Zeitpunkt der Erstellung dieses Tutorials Node v16.
Installiere das Node-Repository mit dem folgenden Befehl.
$ curl -fsSL https://rpm.nodesource.com/setup_16.x | sudo bash -
Installiere Node.
$ sudo dnf install nodejs -y
Überprüfe die Installation von Node.
$ node --version v16.18.0
Schritt 5 – Wiki.js herunterladen
Erstelle einen Ordner, um Wiki.js zu installieren.
$ sudo mkdir -p /var/www/wikijs
Lege den aktuell angemeldeten Benutzer als Eigentümer des Ordners fest.
$ sudo chown $USER:$USER /var/www/wikijs
Wechsle in das Verzeichnis und lade das Wiki.js Code-Archiv herunter.
$ cd /var/www/wikijs && wget https://github.com/Requarks/wiki/releases/latest/download/wiki-js.tar.gz
Entpacke das heruntergeladene Archiv.
$ tar xzf wiki-js.tar.gz
Schritt 6 – Wiki.js konfigurieren und ausführen
Erstelle die Konfigurationsdatei aus dem Beispiel.
$ cp config.sample.yml config.yml
Öffne die Konfigurationsdatei zur Bearbeitung.
$ nano config.yml
Suche die folgenden Datenbankeinstellungen und aktualisiere ihre Werte mit denen, die in Schritt 3 konfiguriert wurden.
# PostgreSQL / MySQL / MariaDB / MS SQL Server only: host: localhost port: 5432 user: wikiuser pass: wikipassword db: wikidb ssl: false
Suche die Zeile bindIP: 0.0.0.0
und ändere sie wie folgt.
bindIP: 127.0.0.1
Dadurch wird WIki.js auf der Loopback-Adresse lauschen, da wir den Nginx-Proxy für den Zugriff von außen verwenden werden.
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Führe Wiki.js mit dem folgenden Befehl aus.
$ node server
Du wirst eine ähnliche Ausgabe erhalten, die eine erfolgreiche Installation bestätigt.
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!
Drücke Strg + C, um den Prozess zu beenden.
Schritt 7 – Einrichten eines Systemd-Dienstes
Der obige Prozess, um Wiki.js am Laufen zu halten, ist vorübergehend. Um den Prozess dauerhaft zu machen, müssen wir einen Systemd-Dienst für Wiki.js einrichten, damit es als Hintergrunddienst läuft. So kann Wiki.js auch nach einem Neustart des Systems weiterlaufen.
Erstelle eine systemd-Dienstdatei für Wiki.js und öffne sie zur Bearbeitung.
$ sudo nano /etc/systemd/system/wikijs.service
Füge den folgenden Code in die Datei ein. Ersetze den Wert der Variable User
durch den Namen deines Systembenutzers.
[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
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Lade den Systemdaemon neu.
$ sudo systemctl daemon-reload
Aktiviere den Wiki.js-Dienst.
$ sudo systemctl enable wikijs
Schritt 8 – Nginx installieren
Rocky Linux wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, musst du das offizielle Nginx-Repository herunterladen.
Erstelle und öffne die Datei /etc/yum.repos.d/nginx.repo
zur Erstellung des offiziellen Nginx-Repositorys.
$ sudo nano /etc/yum.repos.d/nginx.repo
Füge den folgenden Code in die Datei ein.
[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
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Installiere den Nginx-Server.
$ sudo dnf install nginx -y
Überprüfe die Installation.
$ nginx -v nginx version: nginx/1.22.1
Aktiviere und starte den Nginx-Server.
$ sudo systemctl enable nginx --now
Überprüfe den Status des Servers.
$ 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...
Schritt 9 – SSL installieren
Wir werden das Certbot-Tool mit dem Snapd-Tool verwenden, um SSL-Zertifikate auszustellen. Es benötigt das EPEL-Repository, um zu funktionieren.
$ sudo dnf install epel-release
Wir werden Snapd verwenden, um Certbot zu installieren. Installiere Snapd.
$ sudo dnf install snapd
Aktiviere und starte den Snap-Dienst.
$ sudo systemctl enable snapd.socket --now
Erstelle die notwendigen Links, damit Snapd funktioniert.
$ 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
Installiere das zentrale Snapd-Repository.
$ sudo snap install core $ sudo snap refresh core
Installiere Certbot.
$ sudo snap install --classic certbot $ sudo ln -s /snap/bin/certbot /usr/bin/certbot
Erstelle das Zertifikat. Mit dem folgenden Befehl wird auch Nginx automatisch konfiguriert.
$ sudo certbot certonly --nginx --agree-tos --no-eff-email --staple-ocsp --preferred-challenges http -m name@example.com -d wiki.example.com
Mit dem obigen Befehl wird ein Zertifikat in das Verzeichnis /etc/letsencrypt/live/wiki.example.com
auf deinem Server heruntergeladen.
Erstelle ein Diffie-Hellman-Gruppenzertifikat.
$ sudo openssl dhparam -dsaparam -out /etc/ssl/certs/dhparam.pem 4096
Führe einen Probelauf des Prozesses durch, um zu prüfen, ob die SSL-Erneuerung einwandfrei funktioniert.
$ sudo certbot renew --dry-run
Wenn du keine Fehler siehst, bist du bereit. Dein Zertifikat wird automatisch erneuert.
Schritt 10 – SELinux konfigurieren
Führe die folgenden Befehle aus, um den richtigen SELinux-Kontext auf das Wiki.js-Verzeichnis anzuwenden.
$ sudo semanage fcontext -a -t httpd_sys_rw_content_t "/var/www/wikijs(/.*)?" $ sudo restorecon -Rv /var/www/wikijs
Erstelle einen Port für HTTP und weise ihm den Wert 3000 zu, damit Wiki.js mit SELinux funktioniert.
$ sudo semanage port -a -t http_port_t -p tcp 3000
Erlaube Nginx, sich mit dem Netzwerk zu verbinden.
$ sudo setsebool -P httpd_can_network_connect 1
Schritt 11 – Nginx konfigurieren
Erstelle und öffne die Datei /etc/nginx/conf.d/wikijs.conf
zum Bearbeiten.
$ sudo nano /etc/nginx/conf.d/wikijs.conf
Füge den folgenden Code in die Datei ein.
# 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 ""; }
Ersetze das Stammverzeichnis in der obigen Datei durch das Verzeichnis auf deinem Server.
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Öffne die Datei /etc/nginx/nginx.conf
zur Bearbeitung.
$ sudo nano /etc/nginx/nginx.conf
Füge die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf;
ein.
server_names_hash_bucket_size 64;
Speichere die Datei, indem du Strg + X drückst und Y eingibst, wenn du dazu aufgefordert wirst.
Überprüfe deine Nginx-Konfiguration.
$ sudo nginx -t
Wenn du keine Fehler siehst, bist du startklar.
Starten Sie den Wiki.js-Dienst.
$ sudo systemctl start wikijs
Lade den Nginx-Server neu.
$ sudo systemctl reload nginx
Schritt 12 – Beende die Installation
Rufe die URL https://wiki.example.com
auf, um die Installation abzuschließen.
Gib die Daten deines Administratorkontos und die URL ein. Deaktiviere die Telemetrie, indem du das Häkchen bei der Option Telemetrie zulassen entfernst. Du kannst sie auch über das Administrationspanel deaktivieren. Klicke auf die Schaltfläche Installieren, um fortzufahren.
Du wirst auf die Anmeldeseite weitergeleitet.
Gib deine Kontodaten ein und klicke auf die Schaltfläche Anmelden, um zur Administrationsseite zu gelangen.
Jetzt kannst du Wiki.js benutzen.
Fazit
Dies ist der Abschluss unseres Tutorials, in dem du gelernt hast, wie du Wiki.js auf einem Rocky Linux 9 Server installierst. Wenn du noch Fragen hast, schreibe sie in die Kommentare unten.