Etherpad ist ein Open-Source-Online-Editor, der die gemeinsame Bearbeitung in Echtzeit im Browser ermöglicht. Es ist in Node.js geschrieben und kann selbst gehostet werden, um mit verschiedenen Plattformen wie WordPress, Drupal, Odoo, Discourse, Joomla usw. zu arbeiten.
In diesem Tutorial installieren wir Etherpad auf einem Rocky Linux 8-Server und verwenden die MariaDB-Datenbank zum Speichern unserer Daten. Wir werden Nginx auch als Reverse-Proxy für die Anwendung verwenden und ein SSL-Zertifikat mit Let's Encrypt installieren, um HTTPS-Verbindungen zu unserer Etherpad-Instanz zu ermöglichen.
Voraussetzungen
-
Ein System, auf dem Rocky Linux 8 ausgeführt wird.
-
Ein Nicht-Root-Benutzer mit sudo-Berechtigungen.
-
Ein Domänenname, der auf den Server verweist.
-
Nodejs installiert. Befolgen Sie unsere Anleitung zur Installation von Nodejs auf einem Rocky Linux 8-Server. Verwenden Sie eine der beiden angegebenen Methoden.
-
Stellen Sie sicher, dass alles aktualisiert ist.
$ sudo dnf update
Schritt 1 – Firewall konfigurieren
Rocky Linux verwendet Firewalld Firewall. Überprüfen Sie den Status der Firewall.
$ sudo firewall-cmd --state running
Dies zeigt an, dass es erfolgreich ausgeführt wird.
Die Firewall arbeitet mit verschiedenen Zonen und die öffentliche Zone ist die Standardzone, die wir verwenden werden. Listet alle Dienste und Ports auf, die auf der Firewall aktiv sind.
$ sudo firewall-cmd --permanent --list-services
Es sollte die folgende Ausgabe zeigen.
cockpit dhcpv6-client ssh
HTTP- und HTTPS-Ports zulassen.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Öffnen Sie den 9001
Port, der von der Etherpad-Anwendung verwendet wird.
$ sudo firewall-cmd --permanent --add-port=9001/tcp
Überprüfen Sie den Status der Firewall erneut.
$ sudo firewall-cmd --permanent --list-services
Sie sollten eine ähnliche Ausgabe sehen.
cockpit dhcpv6-client http https ssh
Laden Sie die Firewall neu, um die Änderungen zu aktivieren.
$ sudo firewall-cmd --reload
Schritt 2 – Git installieren
Vor der Installation von Etherpad müssen wir Git installieren. Führen Sie den folgenden Befehl aus, um Git zu installieren.
$ sudo dnf install git
Überprüfen Sie die Installation.
$ git --version git version 2.27.0
Anfangskonfiguration hinzufügen.
$ git config --global user.name "YourName" $ git config --global user.email "[email protected]"
Listen Sie die Konfiguration auf, die Sie gerade eingestellt haben.
$ git config --list user.name=YourName [email protected]
Schritt 3 – MariaDB installieren
Da wir die MariaDB-Datenbank verwenden werden, um die Daten von Etherpad zu speichern, müssen wir sie zuerst installieren und konfigurieren.
Das Rocky Linux AppStream-Repository wird mit MariaDB geliefert. Führen Sie den folgenden Befehl aus, um alle verfügbaren installierten Versionen von MariaDB aufzulisten.
$ sudo dnf module list mariadb Last metadata expiration check: 1:15:26 ago on Thu 21 Oct 2021 10:20:01 AM UTC. Rocky Linux 8 - AppStream Name Stream Profiles Summary mariadb 10.3 [d] client, galera, server [d] MariaDB Module mariadb 10.5 client, galera, server [d] MariaDB Module Hint: [d]efault, [e]nabled, [x]disabled, [i]nstalled
Die Standardversion ist auf 10.3 eingestellt. Sie können jedoch die neueste Version mit dem folgenden Befehl installieren.
$ sudo dnf module enable mariadb:10.5
Installieren Sie MariaDB.
$ sudo dnf install mariadb-server
Aktivieren und starten Sie den MariaDB-Dienst.
$ sudo systemctl enable mariadb --now
Überprüfen Sie den Status des Dienstes.
$ sudo systemctl status mariadb
Sichern Sie den MariaDB-Server.
$ sudo mysql_secure_installation
Sie werden mit verschiedenen Eingabeaufforderungen konfrontiert. Beantworten Sie sie wie folgt.
Enter current password for root (enter for none): Press Enter Switch to unix_socket authentication [Y/n] Type y Change the root password? [Y/n] Type n Remove anonymous users? [Y/n] Type y Disallow root login remotely? [Y/n] Type y Remove test database and access to it? [Y/n] Type y Reload privilege tables now? [Y/n] Type yein
Sie können sich jetzt mit dem folgenden Befehl mit dem MariaDB-Server verbinden.
$ sudo mysql
Schritt 4 – MariaDB konfigurieren
Melden Sie sich bei der MariaDB-Shell an.
$ sudo mysql
Erstellen Sie eine neue Datenbank für Etherpad.
$ create database `etherpad_lite_db`;
Erstellen Sie einen neuen Datenbankbenutzer.
$ CREATE USER 'etherpaduser'@'localhost' identified by 'password';
Verwenden Sie ein sicheres Passwort.
Erteilen Sie dem Benutzer Berechtigungen für die Datenbank.
$ grant CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `etherpad_lite_db`.* to '<etherpaduser>'@'localhost';
Beenden Sie die MySQL-Shell.
$ exit
Schritt 5 – Etherpad herunterladen und installieren
Um Etherpad zu installieren, laden wir den Quellcode herunter und erstellen ihn.
Der erste Schritt besteht darin, ein neues etherpad
zu erstellen Benutzer mit dem folgenden Befehl.
$ sudo adduser --system --home /opt/etherpad --create-home --user-group etherpad
Dieser Befehl erstellt ein --system
Benutzer, was bedeutet, dass er sich nicht anmelden kann und kein Passwort hat. Wir geben ihm auch ein Home-Verzeichnis /opt/etherpad
Dort laden wir Etherpad herunter. Die --create-home
flag erstellt das Home-Verzeichnis mit den richtigen Berechtigungen. Die --user-group
Flag erstellt eine Gruppe mit demselben Namen wie der Benutzername.
Wechseln Sie zum etherpad
Benutzer, um die Anwendung herunterzuladen und zu installieren.
$ sudo -u etherpad bash
Wechseln Sie zu /opt/etherpad
Verzeichnis.
[[email protected] user] cd /opt/etherpad
Klonen Sie das Etherpad-Repository in /opt/etherpad
Verzeichnis.
[[email protected] ~]$ git clone --branch master git://github.com/ether/etherpad-lite.git
Wechseln Sie in das neu heruntergeladene Verzeichnis.
[[email protected] ~]$ cd etherpad-lite
Führen Sie die run.sh
des Etherpads aus Skript zum Einrichten und Installieren von Abhängigkeiten.
[[email protected] etherpad-lite]$ src/bin/run.sh
Sie können die URL http://YOURSERVERIP:9001
starten im Browser, um Etherpad zu starten. Sie erhalten den folgenden Bildschirm.
Es gibt ein Problem mit der obigen Installation. Es erfordert, dass Sie die aktuelle Shell geöffnet lassen, während Node im Vordergrund ausgeführt wird. Um es zu einer dauerhaften Installation zu machen, müssen wir Etherpad als Dienst ausführen. Drücken Sie Strg + C auf Ihrem Terminal, um die Ausführung von Etherpad zu beenden.
Schritt 6 – Etherpad konfigurieren
Bevor wir fortfahren, müssen wir einige Einstellungen vornehmen und unsere Installation gemäß unseren Anforderungen konfigurieren. Etherpad speichert seine Einstellungen in der settings.json
Datei im Installationsverzeichnis.
Öffnen Sie die Datei zum Bearbeiten.
[[email protected] etherpad-lite]$ nano settings.json
Die Einstellungsdatei ist als JSON formatiert. Das erste, was Sie konfigurieren müssen, sind die Datenbankeinstellungen.
Suchen Sie den folgenden Code und kommentieren Sie ihn aus, indem Sie //
einfügen davor.
// "dbType": "dirty", // "dbSettings": { // "filename": "var/dirty.db" // },
Suchen Sie dann den folgenden Code und ändern Sie seine Werte wie folgt. Achten Sie darauf, /*
zu entfernen und */
am Anfang und am Ende.
"dbType" : "mysql", "dbSettings" : { "user": "etherpaduser", "host": "localhost", "port": 3306, "password": "password", "database": "etherpad_lite_db", "charset": "utf8mb4" },
Scrollen Sie schließlich ein wenig nach unten, um den trustProxy
zu finden Einstellung und ändern Sie den Wert von false
auf true
.
"trustProxy": true,
Diese Einstellung ist erforderlich, damit Etherpad mit Nginx zusammenarbeitet.
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden, sobald Sie fertig sind.
Beenden Sie die Etherpad-Benutzer-Shell.
[[email protected] etherpad-lite]$ exit
Schritt 7 – Etherpad-Dienst erstellen
Um Etherpad beim Booten zu starten und den Prozess mit systemctl
zu verwalten , müssen wir eine Servicedatei erstellen.
Erstellen und öffnen Sie die Dienstdatei.
$ sudo nano /etc/systemd/system/etherpad.service
Fügen Sie den folgenden Code ein.
[Unit] Description=Etherpad, a collaborative web editor. After=syslog.target network.target [Service] Type=simple User=etherpad Group=etherpad WorkingDirectory=/opt/etherpad Environment=NODE_ENV=production ExecStart=/usr/bin/node --experimental-worker /opt/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js Restart=always [Install] WantedBy=multi-user.target
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden, sobald Sie fertig sind.
Laden Sie den Service-Daemon neu, um die neue Konfiguration einzufügen.
$ sudo systemctl daemon-reload
Aktivieren Sie Etherpad-Dienst starten.
$ sudo systemctl enable etherpad --now
Überprüfen Sie den Status des Dienstes.
$ sudo systemctl status etherpad ? etherpad.service - Etherpad, a collaborative web editor. Loaded: loaded (/etc/systemd/system/etherpad.service; disabled; vendor preset: disabled) Active: active (running) since Thu 2021-10-21 15:06:53 UTC; 6s ago Main PID: 47228 (node) Tasks: 13 (limit: 11411) Memory: 102.8M CGroup: /system.slice/etherpad.service ??47228 /usr/bin/node --experimental-worker /opt/etherpad/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js .......
Schritt 8 – SSL mit Let's Encrypt installieren
Um ein SSL-Zertifikat mit Let's Encrypt zu installieren, müssen wir das Certbot-Tool installieren.
Zuerst müssen Sie das EPEL-Repository herunterladen und installieren.
$ sudo dnf install epel-release
Führen Sie die folgenden Befehle aus, um Certbot zu installieren.
$ sudo dnf install certbot
Generieren Sie das SSL-Zertifikat.
$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -m [email protected] -d example.com
Der obige Befehl lädt ein Zertifikat in /etc/letsencrypt/live/etherpad.example.com
herunter Verzeichnis auf Ihrem Server.
Erstellen Sie eine Diffie-Hellman-Gruppe Zertifikat.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Erstellen Sie ein herausforderndes Webroot-Verzeichnis für die automatische Verlängerung von Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Erstellen Sie einen Cron-Job, um das SSL zu erneuern. Es wird jeden Tag ausgeführt, um das Zertifikat zu überprüfen und bei Bedarf zu erneuern. Erstellen Sie dazu zunächst die Datei /etc/cron.daily/certbot-renew
und zum Bearbeiten öffnen.
$ sudo nano /etc/cron.daily/certbot-renew
Fügen Sie den folgenden Code ein.
#!/bin/sh certbot renew --cert-name etherpad.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden.
Ändern Sie die Berechtigungen für die Aufgabendatei, um sie ausführbar zu machen.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Schritt 9 – Nginx installieren und konfigurieren
Rocky Linux wird mit einer älteren Version von Nginx ausgeliefert. Um die neueste Version zu installieren, müssen Sie das Nginx-Repository hinzufügen.
Erstellen und öffnen Sie die Datei /etc/yum.repos.d/nginx.repo
zum Bearbeiten.
$ sudo nano /etc/yum.repos.d/nginx.repo
Fügen Sie den folgenden Code 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
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden, sobald Sie fertig sind.
Nginx installieren.
$ sudo dnf install nginx
Aktivieren Sie den Nginx-Dienst.
$ sudo systemctl enable nginx
Als nächstes erstellen und öffnen Sie die Datei /etc/nginx/conf.d/etherpad.conf
zum Bearbeiten.
$ sudo nano /etc/nginx/conf.d/etherpad.conf
Fügen Sie den folgenden Code ein.
server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name etherpad.example.com; access_log /var/log/nginx/etherpad.access.log; error_log /var/log/nginx/etherpad.error.log; ssl_certificate /etc/letsencrypt/live/etherpad.example.com/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/etherpad.example.com/privkey.pem; ssl_trusted_certificate /etc/letsencrypt/live/etherpad.example.com/chain.pem; ssl_session_timeout 5m; ssl_session_cache shared:MozSSL:10m; # about 40000 sessions ssl_session_tickets off; ssl_protocols TLSv1.2 TLSv1.3; ssl_prefer_server_ciphers on; ssl_ciphers ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384; ssl_ecdh_curve X25519:prime256v1:secp384r1:secp521r1; ssl_stapling on; ssl_stapling_verify on; ssl_dhparam /etc/ssl/certs/dhparam.pem; location / { rewrite ^/$ / break; rewrite ^/locales/(.*) /locales/$1 break; rewrite ^/locales.json /locales.json break; rewrite ^/admin(.*) /admin/$1 break; rewrite ^/p/(.*) /p/$1 break; rewrite ^/static/(.*) /static/$1 break; rewrite ^/pluginfw/(.*) /pluginfw/$1 break; rewrite ^/javascripts/(.*) /javascripts/$1 break; rewrite ^/socket.io/(.*) /socket.io/$1 break; rewrite ^/ep/(.*) /ep/$1 break; rewrite ^/minified/(.*) /minified/$1 break; rewrite ^/api/(.*) /api/$1 break; rewrite ^/ro/(.*) /ro/$1 break; rewrite ^/error/(.*) /error/$1 break; rewrite ^/jserror(.*) /jserror$1 break; rewrite ^/redirect(.*) /redirect$1 break; rewrite /favicon.ico /favicon.ico break; rewrite /robots.txt /robots.txt break; rewrite /(.*) /p/$1; proxy_pass http://127.0.0.1:9001; proxy_buffering off; proxy_set_header Host $host; proxy_pass_header Server; # proxy headers proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $remote_addr; proxy_set_header X-Forwarded-Proto $scheme; proxy_http_version 1.1; # websocket proxying proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } } # we're in the http context here map $http_upgrade $connection_upgrade { default upgrade; '' close; } # enforce HTTPS server { listen 80; listen [::]:80; server_name etherpad.example.com; return 301 https://$host$request_uri; }zurück
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden, sobald Sie fertig sind.
Überprüfen Sie die Syntax der Nginx-Konfigurationsdatei.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Wenn Sie die folgende Fehlermeldung erhalten, müssen Sie die Datei /etc/nginx/nginx.conf
bearbeiten um die Größe der Variable server_names_hash_bucket_size
hinzuzufügen/anzupassen .
nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size
Öffnen Sie die Datei /etc/nginx/nginx.conf
zum Bearbeiten.
$ sudo nano /etc/nginx/nginx.conf
Fügen Sie die folgende Zeile vor der Zeile include /etc/nginx/conf.d/*.conf;
hinzu .
server_names_hash_bucket_size 64;
Speichern Sie die Datei, indem Sie Strg + X drücken und geben Sie Y ein wenn Sie dazu aufgefordert werden. Validieren Sie Nginx erneut.
Starten Sie abschließend den Nginx-Dienst, um die neue Konfiguration zu aktivieren.
$ sudo systemctl start nginx
Starten Sie die URL https://etherpad.example.com
in Ihrem Browser und die Etherpad-Startseite wird geöffnet. Sie können es jetzt verwenden, um Dokumente zu bearbeiten und Mitarbeiter einzuladen.
Aktualisiere Etherpad
Das Aktualisieren von Etherpad ist einfach. Der erste Schritt besteht darin, zur Etherpad-Benutzeroberfläche zu wechseln.
$ sudo -u etherpad bash
Wechseln Sie zu /opt/etherpad/etherpad-lite
Verzeichnis.
[[email protected] user] cd /opt/etherpad/etherpad-lite
Ziehen Sie das neueste Etherpad-Repository in /opt/etherpad/etherpad-lite
Verzeichnis.
[[email protected] ~]$ git pull origin
Führen Sie die run.sh
des Etherpads aus Skript, um die neueste Version von Etherpad einzurichten.
[[email protected] etherpad-lite]$ src/bin/run.sh
Schlussfolgerung
In diesem Tutorial haben wir Etherpad Collaborative Editor mit Nginx-Server eingerichtet und mit Let’s Encrypt SSL-Zertifikaten gesichert. Ihre Etherpad-Installation ist einsatzbereit, die Sie mit weiteren Funktionen erweitern können, darunter authentifizierte Benutzer, Plugins und Anpassungen der Benutzeroberfläche.
Wenn Sie Fragen haben, posten Sie diese in den Kommentaren unten.