Následující článek předpokládá, že již víte, co je Etherpad. Pokud to
není tomu tak, pak by měl pro rychlý úvod stačit článek na wikipedii.
I když je projekt Etherpad dobře zdokumentován, není to vždy snadné
dává smysl jen z dokumentace. Tento článek si klade za cíl shrnout některé z
návody dostupné na wiki projektu snadno sledovatelným způsobem.
Budeme se zabývat následujícím:
- Instalace Etherpadu jako služby
- Povolení TLS s certifikáty s vlastním podpisem
- Pomocí
mysql
databáze - Používání Nginx s Etherpadem
Instalace Etherpadu
V současné době Debian 11 neposkytuje žádný etherpad
balíčky. Takže budeme muset
nainstalujte jej ručně z GitHubu. Naštěstí jsou kroky opravdu snadné (
#
označuje kořen):
- Vytvořte
etherpad
uživatele a přiřaďte jej ketherpad
skupina:
# useradd --comment "Etherpad Service User"
--create-home --home-dir /usr/local/etherpad --user-group etherpad
- Stáhněte si a spusťte instalační skript:
# curl -sL https://deb.nodesource.com/setup_14.x
|bash -
- Nainstalujte
nodejs
. Budeme také potřebovatgit
.
# apt install -y nodejs git
- Přepněte na
etherpad
uživatele a naklonujte úložiště projektu.
# su - etherpad
etherpad$ git clone --depth 1 --branch masterhttps://github.com/ether/etherpad-lite.git/usr/local/etherpad/src
- Nainstalujte požadované závislosti:
etherpad$ /usr/local/etherpad/src/bin/installDeps.sh
- Vytvořte soubor systemd unit v
/etc/systemd/system/
adresář.
/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
- Povolit firewallům atd. otevření portu
9001
.Tak konečně můžeme začít
etherpad
servis:
# systemctl start etherpad

Čeká nás ještě spousta konfigurací. Nyní však můžeme zobrazit instanci etherpadu v našem prohlížeči.

Povolení TLS s certifikáty s vlastním podpisem
Pokud si chcete nechat podepsat certifikáty certifikační autoritou (CA), můžete tak učinit. Zde však vše podepisuji sám. Odkazuji na článek na wiki, který lze nalézt zde.
Otevřete soubor settings.json
v etherpad
adresář a najděte sekci ssl
(měl by být kolem řádku 174) a podle toho upravit:
"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"
}
Vytvořte adresář /usr/local/etherpad/ssl
jako etherpad
uživatel, cd
do tohoto adresáře a spusťte následující příkazy.
Vygenerujte klíč serveru poskytující požadovanou přístupovou frázi:
openssl genrsa -des3 -out epl-server.key 4096
Nyní vygenerujte certifikáty:
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

Nyní tento soubor použijeme k vytvoření dalšího klíče. Nebudeme tak muset při každém spuštění našeho serveru zadávat přístupové heslo.
Přejmenujte klíč:
mv epl-server.key epl-server.key.secure
Poté vygenerujte náš druhý klíč:
openssl rsa -in epl-server.key.secure -out epl-server.key
Nyní musíme své certifikáty podepsat sami. K tomu musíme vygenerovat další klíč, který podepíše náš
epl-server.key
. Kroky jsou podobné jako výše.
openssl genrsa -des3 -out own-ca.key 4096
Vytvořte podpisový certifikát:
openssl req -new -x509 -days 9000 -key own-ca.key -out own-ca.crt
To nás požádá o nějaké informace. Mohou být ponechány jako výchozí, ale Common Name (CN) se musí lišit od CN našeho vlastního klíče. Můžeme tedy ke CN pouze připojit „(CA)“.

Nakonec podepišme náš epl-server.key
s certifikátem naší 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
Výsledkem bude epl-server.crt
s vlastním podpisem soubor.
Nyní se ujistěte, že soubory mají zabezpečená oprávnění:
chmod 400 epl-server.key
chown etherpad epl-server.key
chmod 400 epl-server.crt
chown etherpad epl-server.crt

Jiné soubory lze přesunout na jiné místo nebo jednoduše smazat. Zatím je nechám tak, jak jsou. Nicméně můžeme restartovat etherpad
a my získáme https
funguje, i když prohlížeče zobrazí varování a dokonce se odmítnou připojit, protože naše certifikáty nebyly dodány se správnými informacemi.

Používání MySQL s Etherpadem
Až dosud naše instance Etherpad používala dirtyDB
databáze, která není vhodná pouze pro účely testování/vývoje. Aby byla naše instance plně vhodná pro produkci, přejdeme nyní na mysql
. Ještě jednou, všechny kredity za pokyny k instalaci jdou na wiki projektu. Právě jsem se rozhodl – abych vše shrnul na jednom místě – nenutit vás přeskakovat na různé odkazy.
Pojďme tedy nainstalovat požadované balíčky (používám mariadb
ale věci jsou v podstatě stejné):
# apt install -y mariadb-server
Nyní spusťte mysql_secure_installation
jako root poskytující požadované parametry.
Poté, co je hotovo, můžeme přistoupit k nastavení databáze:
1. Připojte se k mysql pomocí následujícího příkazu:
# mysql -u root -p
2. Jakmile jste uvnitř, vytvořte databázi:
CREATE DATABASE `etherpad_lite_db`;
Ano, to jsou zpětné zaškrtnutí kolem názvu db. A nezapomeňte na středník 😉
3. Vytvořte uživatele databáze a zadejte své vlastní uživatelské jméno a heslo:
CREATE USER '<username>'@'localhost' identified by '<pass>';
4. Změňte oprávnění pro nového uživatele:
GRANT CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `etherpad_lite_db`.* to 'etherpad'@'localhost';
Zde etherpad
byl uživatel, kterého jsem dříve vytvořil.
Naše databáze je vytvořena, takže nyní můžeme exit
z výzvy a pokračujte k etherpad
služba vědět o úspěších, kterých jsme dosáhli, tj. úpravou souboru settings.json
soubor.
Vyhledejte dbtype
ve vašem textovém editoru by to mělo být kolem řádku 196 a změňte jej tak, aby vypadal asi takto:
"dbType": "mysql",
"dbSettings": {
"user" : "etherpad",
"port" : "https://1118798822.rsc.cdn77.org/var/run/mysqld/mysqld.sock",
"password": "<pass>",
"database": "etherpad_lite_db",
"charset" : "utf8mb4"
}
Heslo zde samozřejmě neprozradím. To by bylo nebezpečné, protože používám stejný pro všechny své účty (ne, opravdu ne; nepoužívejte hesla znovu).
Nyní můžeme restartovat služby:
# systemctl restart mysqld etherpad
Používání Nginx s Etherpadem
Nyní nakonfigurujeme nginx
pro předání standardního http/s provozu na etherpad
servis.
Ujistěte se, že máme nginx
nainstalováno:
# apt install nginx
Vytvořte soubor v /etc/nginx/sites-available/etherpad
a mít jeho obsah:
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/;
}
Nyní spusťte následující příkazy:
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/
Jak můžete vidět, právě kopírujeme certifikáty a klíče ssl do nginx.
Nginx je dodáván s výchozím konfiguračním souborem, který je povolen. Pojďme to opravit.
# rm /etc/nginx/sites-enabled/default
A povolme náš etherpad
konfigurační soubor pro nginx.
# ln -s /etc/nginx/sites-available/etherpad /etc/nginx/sites-enabled/etherpad
Ujistěte se, že jste v konfiguraci neudělali žádné chyby:
# nginx -t
Nyní naposledy restartujeme naše služby:
# systemctl restart etherpad mysqld nginx
Naše nastavení je v podstatě hotové. Samozřejmě můžeme udělat více, ale myslím, že jsme udělali dost (kromě změn zjevných věcí, jako je skutečnost, že jsme nastavili vlastní CA), aby to bylo použitelné. Nechám čtenáře, aby prozkoumal dále
různé zdroje, které jsem propojil v celém článku. To je pro tuto chvíli vše. Děkuji za přečtení až do konce. Nezapomeňte se podívat na mé další články na unixcop.com.