Der folgende Artikel geht davon aus, dass Sie bereits mit Etherpad vertraut sind. Wenn das
nicht der Fall ist, dann sollte der Wikipedia-Artikel für einen schnellen Einstieg genügen.
Obwohl das Etherpad-Projekt gut dokumentiert ist, ist es nicht immer einfach
nur aus Dokumentation sinnvoll. Dieser Artikel zielt darauf ab, einige davon zu verdichten
Tutorials, die auf leicht verständliche Weise im Projekt-Wiki verfügbar sind.
Wir behandeln Folgendes:
- Etherpad als Dienst installieren
- Aktivieren von TLS mit selbstsignierten Zertifikaten
- Mit
mysql
Datenbank - Nginx mit Etherpad verwenden
Etherpad installieren
Ab sofort bietet Debian 11 kein etherpad
Pakete. Also müssen wir
Installieren Sie es manuell von GitHub. Zum Glück sind die Schritte wirklich einfach (die
#
bezeichnet Wurzel):
- Erstellen Sie ein Benutzer-
etherpad
und weise es demetherpad
zu Gruppe:
# useradd --comment "Etherpad Service User"
--create-home --home-dir /usr/local/etherpad --user-group etherpad
- Laden Sie das Setup-Skript herunter und führen Sie es aus:
# curl -sL https://deb.nodesource.com/setup_14.x
|bash -
- Installieren Sie
nodejs
. Außerdem benötigen wirgit
.
# apt install -y nodejs git
- Wechsle zum
etherpad
Benutzer und klonen Sie das Projekt-Repository.
# su - etherpad
etherpad$ git clone --depth 1 --branch masterhttps://github.com/ether/etherpad-lite.git/usr/local/etherpad/src
- Installieren Sie die erforderlichen Abhängigkeiten:
etherpad$ /usr/local/etherpad/src/bin/installDeps.sh
- Erstellen Sie eine systemd-Unit-Datei in
/etc/systemd/system/
Verzeichnis.
/etc/systemd/system/etherpad.service
:
[Unit]
Description=Etherpad Service
After=syslog.target network.target
[Service]
Type=simple
User=etherpad
Group=etherpad
WorkingDirectory=/usr/local/etherpad/src
Environment=NODE_ENV=production
ExecStart=/usr/bin/node --experimental-worker /usr/local/etherpad/src/node_modules/ep_etherpad-lite/node/server.js
[Install]
WantedBy=multi-user.target
- Firewalls etc. erlauben, den Port
9001
zu öffnen .Dann kann es endlich losgehen
dasetherpad
Service:
# systemctl start etherpad
Wir müssen noch viele Konfigurationen vornehmen. Allerdings können wir jetzt die Etherpad-Instanz in unserem Browser anzeigen.
Aktivieren von TLS mit selbstsignierten Zertifikaten
Wenn Sie Ihre Zertifikate von einer Zertifizierungsstelle (CA) signieren lassen möchten, können Sie dies tun. Hier unterschreibe ich jedoch nur alles selbst. Ich beziehe mich auf den Wiki-Artikel, der hier zu finden ist.
Öffnen Sie settings.json
im etherpad
Verzeichnis und suchen Sie den SSL-Abschnitt
(sollte etwa Zeile 174 sein) und entsprechend ändern:
"ssl" : {
"key" : "https://1118798822.rsc.cdn77.org/usr/local/etherpad/ssl/epl-server.key",
"cert" : "https://1118798822.rsc.cdn77.org/usr/local/etherpad/ssl/epl-server.crt"
}
Erstellen Sie ein Verzeichnis /usr/local/etherpad/ssl
als etherpad
Benutzer, cd
in dieses Verzeichnis und führen Sie die folgenden Befehle aus.
Generieren Sie den Serverschlüssel mit der erforderlichen Passphrase:
openssl genrsa -des3 -out epl-server.key 4096
Generieren Sie nun die Zertifikate:
openssl req -new -key epl-server.key -out epl-server.csr
openssl x509 -req -days 9000 -in epl-server.csr -signkey epl-server.key -out epl-server.crt
Jetzt werden wir diese Datei verwenden, um einen weiteren Schlüssel zu erstellen. Auf diese Weise müssen wir nicht jedes Mal, wenn unser Server startet, eine Passphrase angeben.
Schlüssel umbenennen:
mv epl-server.key epl-server.key.secure
Dann generieren Sie unseren zweiten Schlüssel:
openssl rsa -in epl-server.key.secure -out epl-server.key
Jetzt müssen wir unsere Zertifikate selbst signieren. Dazu müssen wir einen weiteren Schlüssel generieren, der unsere signiert
epl-server.key
. Die Schritte sind ähnlich wie oben.
openssl genrsa -des3 -out own-ca.key 4096
Erstellen Sie ein Signaturzertifikat:
openssl req -new -x509 -days 9000 -key own-ca.key -out own-ca.crt
Dies wird uns nach einigen Informationen fragen. Sie können als Standard belassen werden, aber der Common Name (CN) muss sich von dem CN unseres eigenen Schlüssels unterscheiden. Wir können also einfach „(CA)“ an den CN anhängen.
Lassen Sie uns abschließend unseren epl-server.key
signieren mit dem Zertifikat unserer CA.
openssl x509 -req -days 9000 -in epl-server.csr -CA own-ca.crt -CAkey own-ca.key -set_serial 001 -out epl-server.crt
Dies führt zu einer selbstsignierten epl-server.crt
Datei.
Stellen Sie nun sicher, dass die Dateien sichere Berechtigungen haben:
chmod 400 epl-server.key
chown etherpad epl-server.key
chmod 400 epl-server.crt
chown etherpad epl-server.crt
Andere Dateien können an einen anderen Ort verschoben oder einfach gelöscht werden. Ich lasse sie erstmal so wie sie sind. Trotzdem können wir das etherpad
neu starten Dienst jetzt und wir erhalten https
funktioniert, obwohl Browser Warnungen ausgeben und sogar die Verbindung verweigern, da unsere Zertifikate nicht mit den richtigen Informationen geliefert wurden.
Verwendung von MySQL mit Etherpad
Bisher hat unsere Etherpad-Instanz die dirtyDB
verwendet Datenbank, die nicht nur für Test-/Entwicklungszwecke geeignet ist. Um unsere Instanz voll produktionstauglich zu machen, wechseln wir jetzt zu mysql
. Auch hier gehen alle Credits für die Installationsanleitung an das Projekt-Wiki. Ich habe mich nur entschieden – um alles an einem Ort zusammenzufassen – Sie nicht zu verschiedenen Links springen zu lassen.
Lassen Sie uns also die erforderlichen Pakete installieren (ich verwende mariadb
aber die Dinge sind im Grunde gleich):
# apt install -y mariadb-server
Führen Sie nun mysql_secure_installation
aus als root die erforderlichen Parameter angeben.
Danach können wir mit der Einrichtung der Datenbank fortfahren:
1. Verbinden Sie sich mit mysql mit dem folgenden Befehl:
# mysql -u root -p
2. Sobald Sie drinnen sind, erstellen Sie eine Datenbank:
CREATE DATABASE `etherpad_lite_db`;
Ja, das sind Backticks um den DB-Namen. Und vergiss das Semikolon nicht 😉
3. Erstellen Sie einen Datenbankbenutzer, indem Sie Ihren eigenen Benutzernamen und Ihr Passwort angeben:
CREATE USER '<username>'@'localhost' identified by '<pass>';
4. Berechtigungen für den neuen Benutzer ändern:
GRANT CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `etherpad_lite_db`.* to 'etherpad'@'localhost';
Hier, etherpad
war der Benutzer, den ich zuvor erstellt habe.
Unsere Datenbank ist erstellt, also können wir jetzt exit
aus der Eingabeaufforderung und fahren Sie mit dem etherpad
fort Service wissen über die Errungenschaften, die wir erzielt haben, z. B. durch Ändern der settings.json
Datei.
Suchen Sie nach dbtype
mit Ihrem Texteditor sollte es etwa Zeile 196 sein und ändern Sie es so, dass es ungefähr so aussieht:
"dbType": "mysql",
"dbSettings": {
"user" : "etherpad",
"port" : "https://1118798822.rsc.cdn77.org/var/run/mysqld/mysqld.sock",
"password": "<pass>",
"database": "etherpad_lite_db",
"charset" : "utf8mb4"
}
Das Passwort werde ich hier natürlich nicht preisgeben. Das wäre gefährlich, da ich für alle meine Konten dasselbe verwende (nein, nicht wirklich; Passwörter nicht wiederverwenden).
Wir können die Dienste jetzt neu starten:
# systemctl restart mysqld etherpad
Nginx mit Etherpad verwenden
Lassen Sie uns nun nginx
konfigurieren um den Standard-http/s-Verkehr an das etherpad
weiterzuleiten Service.
Stellen wir sicher, dass wir nginx
haben Eingerichtet:
# apt install nginx
Erstellen Sie eine Datei in /etc/nginx/sites-available/etherpad
und hat folgenden Inhalt:
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name localhost; # CHANGE THIS!
access_log /var/log/nginx/eplite.access.log;
error_log /var/log/nginx/eplite.error.log;
ssl on;
ssl_certificate /etc/nginx/ssl/epl-server.crt;
ssl_certificate_key /etc/nginx/ssl/epl-server.key;
location / {
proxy_pass https://127.0.0.1:9001;
proxy_buffering off;
proxy_set_header Host $host;
proxy_pass_header Server;
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; # apparently 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;
}
}
map $http_upgrade $connection_upgrade {
default upgrade;
'' close;
}
# enforce HTTPS
server {
listen 80;
listen [::]:80;
server_name localhost; # CHANGE THIS!
return 301 https://127.0.0.1:9001/;
}
Führen Sie nun die folgenden Befehle aus:
doas mkdir /etc/nginx/ssl
doas cp /usr/local/etherpad/ssl/epl-server.crt /etc/nginx/ssl/
doas cp /usr/local/etherpad/ssl/epl-server.key /etc/nginx/ssl/
Wie Sie sehen können, kopieren wir nur die SSL-Zertifikate und -Schlüssel nach nginx.
Nginx wird mit einer standardmäßigen Konfigurationsdatei geliefert, die aktiviert ist. Lassen Sie uns das beheben.
# rm /etc/nginx/sites-enabled/default
Und aktivieren wir unser etherpad
Konfigurationsdatei für nginx.
# ln -s /etc/nginx/sites-available/etherpad /etc/nginx/sites-enabled/etherpad
Stellen Sie sicher, dass Sie keine Fehler in der Konfiguration gemacht haben:
# nginx -t
Lassen Sie uns nun unsere Dienste ein letztes Mal neu starten:
# systemctl restart etherpad mysqld nginx
Unser Setup ist im Grunde fertig. Natürlich können wir mehr tun, aber ich denke, wir haben genug getan (abgesehen von der Änderung offensichtlicher Dinge wie der Tatsache, dass wir unsere eigene Zertifizierungsstelle eingerichtet haben), damit dies brauchbar ist. Ich überlasse es dem Leser, weiter zu forschen
die verschiedenen Ressourcen, die ich im gesamten Artikel verlinkt habe. Das war es fürs Erste. Vielen Dank für das Lesen bis zum Ende. Vergessen Sie nicht, meine anderen Artikel auf unixcop.com zu lesen.