So installierst du Etherpad mit Nginx und SSL unter Debian 11
Etherpad ist eine kostenlose und Open-Source-Alternative zu Diensten wie Google Docs und Zoho Writer. Etherpad ist ein kollaborativer Echtzeit-Texteditor für dein Team, auf den du jederzeit und von überall aus zugreifen kannst, denn Etherpad ist ein webbasierter Texteditor.
Alle Änderungen in Etherpad erfolgen in Echtzeit, außerdem unterstützt Etherpad die Versionierung und die integrierte Formatierung für Teams. Etherpad ist ein hochgradig anpassbarer Editor mit der Unterstützung verschiedener Plugins. Außerdem unterstützt er moderne Dokumentenformate wie doc, pdf, odt, markdown, etc.
In diesem Tutorial wirst du den Etherpad Real-time Collaborative Editor auf Debian 11 Bullseye installieren und konfigurieren. Dieses Tutorial verwendet MariaDB als Datenbank-Backend und Nginx als Reverse Proxy mit aktiviertem sicheren HTTPS. Am Ende hast du Etherpad installiert und durch sichere HTTPS-Verschlüsselung gesichert.
Voraussetzungen
Um diesen Lehrgang durchzuführen, brauchst du zunächst die folgenden Voraussetzungen:
- Einen Debian 11 Server, für den Test kannst du 1 GB RAM verwenden. Für die Produktion kannst du mehr Ressourcen verwenden, je nach Umgebung und Nutzung.
- Einen Nicht-Root-Benutzer mit Root-Rechten. Optional kannst du auch den Root-Benutzer verwenden.
- Einen Domainnamen für die Installation und stelle sicher, dass er auf die IP-Adresse des Servers zeigt. In diesem Beispiel verwenden wir die Domain„etherpad.example.io„.
Wenn du alle diese Voraussetzungen erfüllt hast, fahre mit dem ersten Abschnitt fort, um die Installation zu starten.
Installieren der Pakete Abhängigkeiten
Etherpad ist eine Webanwendung, die auf Node.js aufbaut. Zum Zeitpunkt der Erstellung dieses Artikels ist die neueste Version von Etherpad xxx und benötigt mindestens Node.js Version 14.x. In diesem Abschnitt installierst du einige Paketabhängigkeiten, einschließlich Node.js auf dem Debian 11 Server.
1. Aktualisiere zunächst deine Paketindexliste und installiere dann die Build-Abhängigkeiten, indem du den folgenden Befehl ausführst.
sudo apt update sudo apt install gzip git curl python libssl-dev pkg-config gcc g++ make build-essential -y
2. In diesem Lernprogramm installierst du Node.js aus dem Nodesource-Repository, das mehrere Versionen von Node.js bereitstellt. In diesem Lernprogramm wird die Node.js-Version 16.x für die Etherpad-Installation verwendet.
Führe nun den folgenden Befehl aus, um das Node.js-Repository zu deinem System hinzuzufügen. Mit diesem Befehl wird das Nodesource-Repository automatisch hinzugefügt, um deinen Paketindex zu aktualisieren.
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
3. Als Nächstes installierst du Node.js 16.x aus dem Nodesource-Repository, indem du den folgenden Befehl ausführst.
sudo apt install nodejs -y
4. Nachdem die Installation abgeschlossen ist, überprüfe deine Node.js-Version mit dem folgenden Befehl.
node --version
Du wirst eine Ausgabe wie „blah blah“ erhalten.
In diesem Abschnitt hast du die Paketabhängigkeiten für Etherpad und die Node.js-Version 16.x aus dem Nodesource-Repository installiert. Als Nächstes wirst du die MariaDB-Datenbank installieren und konfigurieren.
MariaDB-Datenbank installieren und konfigurieren
In diesem Abschnitt installierst du die MariaDB-Datenbank auf dem Debian 11-Server. Dann richtest du das Root-Passwort für MariaDB ein und schließlich legst du eine neue Datenbank und einen neuen Benutzer für Etherpad an.
1. Standardmäßig sind MariaDB-Pakete im Repository von Debian 11 verfügbar. Führe den folgenden Befehl aus, um sie zu installieren.
sudo apt install mariadb-server -y
2. Wenn die MariaDB-Installation abgeschlossen ist, wird sie automatisch ausgeführt und aktiviert.
MariaDB stellt ein Kommandozeilen-Tool zur Verfügung, das dir hilft, MariaDB sicher einzusetzen und das Root-Passwort für MariaDB einzurichten. Führe den Befehl„mysql_secure_installation“ wie unten beschrieben aus.
mysql_secure_installation
Nun werden dir einige Fragen zum Einsatz von MariaDB gestellt und du wirst aufgefordert, das Root-Passwort einzurichten.
3. Der Standard-Root-Benutzer für mariaDB hat kein Passwort, drücke ENTER.
Enter current password for root (enter for none): OK, successfully used password, moving on...
4. Jetzt wirst du gefragt, ob du die Authentifizierungsmethode auf„unix_socket“ umstellen möchtest. Gib„Y“ ein, um zuzustimmen.
Switch to unix_socket authentication [Y/n] Y Enabled successfully! Reloading privilege tables.. ... Success!
5. Gib„Y“ ein, um ein neues Root-Passwort für MariaDB einzurichten. Gib dann dein sicheres Passwort ein und wiederhole den Vorgang.
Change the root password? [Y/n] Y New password: Re-enter new password: Password updated successfully! Reloading privilege tables.. ... Success!
6. Bei der Standardinstallation von MariaDB ist ein anonymer Benutzer vorhanden. Gib „Y“ ein, um ihn zu entfernen.
Remove anonymous users? [Y/n] Y ... Success!
7. Deaktiviere jetzt die Fernanmeldung für den MariaDB-Root-Benutzer. Gib„Y“ ein, um zuzustimmen.
Disallow root login remotely? [Y/n] Y ... Success!
8. Gib„Y“ ein, um zuzustimmen und die Standarddatenbank„test“ und alle Berechtigungen auf ihr zu entfernen.
Remove test database and access to it? [Y/n] Y - Dropping test database... ... Success! - Removing privileges on test database... ... Success!
9. Zum Schluss lädst du die Tabellenberechtigungen neu, um eine neue Konfiguration anzuwenden. Gib„Y“ ein, um zuzustimmen und drücke ENTER.
Reload privilege tables now? [Y/n] Y ... Success!
Wenn die Konfiguration abgeschlossen ist, erhältst du die Meldung„Alles erledigt!‚ wie unten.
All done! If you've completed all of the above steps, your MariaDB installation should now be secure.
Thanks for using MariaDB!
10. Als Nächstes führst du den folgenden Befehl aus, um dich an der MariaDB-Shell anzumelden. Du wirst aufgefordert, das MariaDB Root-Passwort einzugeben. Gib dein Passwort ein.
mysql -u root -p
11. Erstelle nun eine neue Datenbank und einen neuen Benutzer für das Etherpad, indem du die folgenden Abfragen ausführst. In diesem Beispiel wird eine neue Datenbank„etherpad_lite_db“ mit dem Benutzer„etherpaduser“ und dem Passwort„StrongPasswordEtherpadDB“ erstellt. Achte darauf, dass du das Passwort änderst.
CREATE DATABASE etherpad_lite_db; CREATE USER etherpaduser@localhost IDENTIFIED BY 'StrongPasswordEtherpadDB'; GRANT CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on etherpad_lite_db.* to etherpaduser@localhost;
12. Danach lädst du alle Tabellenrechte neu, um die neue Konfiguration anzuwenden, und führst dann die Abfrage „exit“ aus, um dich aus der mariaDB-Shell abzumelden.
FLUSH PRIVILEGES; EXIT
In diesem Abschnitt hast du die Installation und Konfiguration der MariaDB-Datenbank unter Debian 11 abgeschlossen. Außerdem hast du die Datenbank und den Benutzer für das Etherpad erstellt. Als Nächstes lädst du den Quellcode von Etherpad herunter und installierst ihn.
Installieren und Konfigurieren von Etherpad
In diesem Abschnitt installierst du das Etherpad aus dem Quellcode, konfigurierst es mit MariaDB als Datenbank und erstellst eine neue systemd-Datei für das Etherpad. Am Ende wird das Etherpad als systemd-Dienst laufen.
1. Bevor du den Etherpad-Quellcode herunterlädst, musst du einen neuen Benutzer„etherpad“ auf deinem System anlegen. Dieser Benutzer wird verwendet, um das Etherpad-Installationsskript auszuführen und den Etherpad-Dienst zu starten.
Führe den Befehl„adduser“ aus, um einen neuen Benutzer„etherpad“ zu erstellen. Lege außerdem das Heimatverzeichnis „/opt/etherpad-lite“ fest. In diesem Verzeichnis werden alle Etherpad-Quellen gespeichert.
sudo adduser --system --no-create-home --home=/opt/etherpad-lite --group etherpad
2. Gehe nun in das Verzeichnis„/opt“ und klone den Etherpad-Quellcode mit dem Befehl git.
cd /opt/ git clone --branch master https://github.com/ether/etherpad-lite.git
3. Danach änderst du die Eigentümerschaft des Verzeichnisses „etherpad-lite“ auf den Benutzer„etherpad“ und die Gruppe„etherpad„.
sudo chown -R etherpad:etherpad etherpad-lite
4. Navigiere nun zum Verzeichnis„etherpad-lite/“ und installiere alle Node.js-Abhängigkeiten mit dem Installer-Skript„installDeps.sh“ (siehe unten). Das Installer-Skript „installDeps.sh“ wird als Nicht-Root-Benutzer „etherpad“ ausgeführt.
cd /opt/etherpad-lite sudo su -s /bin/bash -c "./bin/installDeps.sh" etherpad
Warte, bis die Installation aller abhängigen Pakete abgeschlossen ist.
Als Nächstes musst du die Datei„settings.json“ ändern, um deine Etherpad-Installation einzurichten. Du kannst die Datei mit einem nano-Editor bearbeiten oder deinen bevorzugten Editor verwenden.
nano settings.json
Ersetze oben in der Zeile den Titel durch deinen eigenen Titel. In diesem Beispiel wird der Titel„Entherpad Johndoe“ verwendet.
"title": "Etherpad Johndoe",
In diesem Lehrgang wird das Etherpad unter dem Nginx Reverse Proxy laufen. Aus Sicherheitsgründen sollte das Etherpad auf dem localhost laufen. Ändere nun die„ip:“-Konfiguration in„127.0.0.1“. Mit dieser Konfiguration wird das Etherpad nur auf dem localhost laufen.
"ip": "127.0.0.1", "port": 9001,
Standardmäßig verwendet das Etherpad SQLite als Datenbank. Kommentiere alle diese Zeilen aus, um sie zu deaktivieren.
/* *"dbType": "dirty", *"dbSettings": { * "filename": "var/dirty.db" *}, */
Gib nun die Konfiguration der MariaDB-Datenbank unten ein. Achte darauf, dass du den Datenbanknamen, den Benutzer und das Passwort änderst.
"dbType" : "mysql", "dbSettings" : { "user": "etherpaduser", "host": "localhost", "port": 3306, "password": "StrongPasswordEtherpadDB", "database": "etherpad_lite_db", "charset": "utf8mb4" },
Speichere und beende die Datei.
Als nächstes erstellst du eine neue systemd-Dienstdatei„etherpad.service“ im Verzeichnis„/etc/systemd/system„. Diese Datei enthält alle Konfigurationsdetails, die Etherpad braucht, um auf dem Server richtig zu laufen. Erstelle sie mit einem nano-Editor.
sudo nano /etc/systemd/system/etherpad.service Füge die folgende Konfiguration in die Datei ein.
[Unit] Description=Etherpad-lite, the collaborative editor. After=syslog.target network.target
[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/opt/etherpad-lite
Environment=NODE_ENV=production
ExecStart=/usr/bin/node –experimental-worker /opt/etherpad-lite/node_modules/ep_etherpad-lite/node/server.js
# use mysql plus a complete settings.json to avoid Service hold-off time over, scheduling restart.
Restart=always
[Install]
WantedBy=multi-user.target
Diese Dienstdatei wird als Benutzer und Gruppe „etherpad“ ausgeführt. Du siehst auch die Option„Environment=NODE_ENV=production„, was bedeutet, dass die Etherpad-Anwendung in der Produktionsumgebung läuft. Die Option„ExecStart=…“ ist der Standardbefehl zum Ausführen der Etherpad-Anwendung.
Speichere und schließe die Datei.
Lade nun den systemd Manager neu, um eine neue Servicedatei anzuwenden.
sudo systemctl daemon-reload
Starte und aktiviere danach den Etherpad-Dienst und überprüfe seinen Status, indem du den folgenden Befehl ausführst.
sudo systemctl enable --now etherpad sudo systemctl status etherpad
Du erhältst eine ähnliche Ausgabe wie im Screenshot unten. Der etherpad-Dienst ist jetzt„aktiv (läuft)„, er wird automatisch beim Systemstart gestartet und läuft auf dem localhost mit dem Standardport„9001„.
Damit hast du die Installation von Etherpad abgeschlossen. Als Nächstes installierst du Nginx, um es als Reverse-Proxy für die Etherpad-Anwendung einzurichten.
Installieren und Konfigurieren von Nginx
In der Produktionsumgebung ist es immer empfehlenswert, einen Reverse Proxy vor deine Anwendung zu setzen. Das erhöht die Leistung und Sicherheit deiner Anwendung. In diesem Abschnitt installierst und konfigurierst du den Webserver Nginx als Reverse Proxy. Am Ende wird das Etherpad mit deinem Domainnamen laufen und mit dem HTTPS-Protokoll gesichert sein.
1. Installiere zunächst die Nginx-Pakete, indem du den unten stehenden Befehl ausführst.
sudo apt install nginx -y
2. Wenn du die UFW-Firewall auf deinem Debian-System installiert hast. Erlaube den öffentlichen Zugriff auf die HTTP- und HTTPS-Ports (80 und 443), indem du den unten stehenden Befehl„ufw“ ausführst.
sudo ufw allow "Nginx Full"
Du erhältst dann die folgende Ausgabe.
Rule added Rule added (v6)
3. Als Nächstes erstellst du eine neue Nginx Virtual Host Datei„etherpad“ im Verzeichnis„/etc/nginx/sites-available/„. Erstelle sie mit einem nano-Editor oder deinem bevorzugten Editor.
sudo nano /etc/nginx/sites-available/etherpad
Kopiere die folgende Konfiguration und füge sie in die Datei ein. Ersetze außerdem deinen Domainnamen und den Pfad für das SSL-Zertifikat durch deine eigenen Angaben. Für SSL-Zertifikate kannst du mit Letsencrypt kostenlos SSL-Zertifikate generieren.
# enforce HTTPS server { listen 80; listen [::]:80; server_name etherpad.example.io; return 301 https://$host$request_uri; } # we're in the http context here map $http_upgrade $connection_upgrade { default upgrade; '' close; } server { listen 443 ssl http2; listen [::]:443 ssl http2; server_name etherpad.example.io; access_log /var/log/nginx/eplite.access.log; error_log /var/log/nginx/eplite.error.log; ssl_certificate /etc/letsencrypt/live/etherpad.example.io/fullchain.pem; ssl_certificate_key /etc/letsencrypt/live/etherpad.example.io/privkey.pem; ssl_session_timeout 5m; ssl_protocols TLSv1.2; ssl_prefer_server_ciphers on; ssl_ciphers "EECDH+ECDSA+AESGCM EECDH+aRSA+AESGCM EECDH+ECDSA+SHA384 \ EECDH+ECDSA+SHA256 EECDH+aRSA+SHA384 EECDH+aRSA+SHA256 EECDH+aRSA+RC4 \ EECDH EDH+aRSA RC4 !aNULL !eNULL !LOW !3DES !MD5 !EXP !PSK !SRP !DSS"; location / { proxy_pass http://127.0.0.1:9001; proxy_buffering off; # be careful, this line doesn't override any proxy_buffering on set in a conf.d/file.conf proxy_set_header Host $host; proxy_pass_header Server; # Note you might want to pass these headers etc too. proxy_set_header X-Real-IP $remote_addr; # https://nginx.org/en/docs/http/ngx_http_proxy_module.html proxy_set_header X-Forwarded-For $remote_addr; # EP logs to show the actual remote IP proxy_set_header X-Forwarded-Proto $scheme; # for EP to set secure cookie flag when https is used proxy_http_version 1.1; # recommended with keepalive connections # WebSocket proxying - from https://nginx.org/en/docs/http/websocket.html proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection $connection_upgrade; } }
Diese Nginx-Datei für virtuelle Hosts leitet jeden Datenverkehr automatisch von HTTP auf das sichere HTTPS-Protokoll um. Zur Fehlersuche im Falle eines Fehlers kannst du die Protokolldatei „/var/log/nginx/eplite.error.log“ einsehen. Alle Client-Anfragen werden an das Backend‚proxy_pass‚ der Etherpad-Anwendung gesendet, die auf localhost port 9001 läuft.
4. Speichere und schließe die Datei und aktiviere dann die Konfiguration des virtuellen Hosts, indem du einen symbolischen Link von der Datei„etherpad“ zum Verzeichnis „/etc/nginx/sites-enabled“ erstellst.
sudo ln -s /etc/nginx/sites-available/etherpad /etc/nginx/sites-enabled/
5. Als Nächstes führst du den Befehl„nginx -t“ aus, um die nginx-Konfiguration zu überprüfen. Dieser Befehl prüft, ob die Konfiguration Syntaxfehler enthält.
sudo nginx -t
Du erhältst die unten stehende Ausgabe. Die Ausgabe„syntax is ok“ bedeutet, dass du keine Fehler hast.
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful.
6. Starte abschließend den Nginx-Dienst neu, um eine neue Nginx Virtual Host-Datei anzuwenden.
sudo systemctl restart nginx
In diesem Abschnitt hast du die Installation und Konfiguration von Nginx als Reverse-Proxy für die Etherpad-Anwendung abgeschlossen. Dein Etherpad ist jetzt auf http://etherpad.example.io verfügbar .
Überprüfe die Etherpad-Installation
1. Öffne deinen Webbrowser und gib den Domainnamen„http://etherpad.example.io/“ in die Adresse ein. Du wirst automatisch auf die sichere HTTPS-Verbindung umgeleitet (siehe unten).
2. Um ein neues Pad zu erstellen, gib den Namen des Pads in die Spalte ein und klicke auf die Schaltfläche„OK„.
Jetzt siehst du den Etherpad-Editor für die Echtzeit-Zusammenarbeit (siehe unten).
Fazit
In diesem Lernprogramm hast du den Etherpad Real-time Collaborative Editor auf dem Debian 11 Server installiert und konfiguriert. Außerdem hast du Nginx als Reverse-Proxy für die Etherpad-Anwendung installiert und konfiguriert.
Jetzt bist du bereit, Etherpad als Editor für die Zusammenarbeit in deinem Team zu nutzen. Weitere Informationen über Etherpad findest du in der offiziellen Etherpad-Dokumentation.