Etherpad je open-source online editor poskytující společné úpravy v reálném čase v prohlížeči. Je napsán v Node.js a může být hostován pro práci s různými platformami, jako je WordPress, Drupal, Odoo, Discourse, Joomla atd.
V tomto tutoriálu nainstalujeme Etherpad na server Rocky Linux 8 pomocí databáze MariaDB k ukládání našich dat. Také použijeme Nginx jako reverzní proxy pro aplikaci a nainstalujeme SSL certifikát pomocí Let's Encrypt, abychom umožnili připojení HTTPS k naší instanci Etherpad.
Předpoklady
-
Systém se systémem Rocky Linux 8.
-
Uživatel bez oprávnění root s právy sudo.
-
Název domény směřující na server.
-
Nodejs nainstalován. Postupujte podle našeho průvodce instalací Nodejs na server Rocky Linux 8. Použijte kteroukoli ze dvou uvedených metod.
-
Ujistěte se, že je vše aktualizováno.
$ sudo dnf update
Krok 1 – Konfigurace brány firewall
Rocky Linux používá Firewalld Firewall. Zkontrolujte stav brány firewall.
$ sudo firewall-cmd --state running
To znamená, že je úspěšně spuštěn.
Firewall pracuje s různými zónami a veřejná zóna je výchozí, kterou použijeme. Seznam všech služeb a portů aktivních na bráně firewall.
$ sudo firewall-cmd --permanent --list-services
Měl by ukazovat následující výstup.
cockpit dhcpv6-client ssh
Povolit porty HTTP a HTTPS.
$ sudo firewall-cmd --permanent --add-service=http $ sudo firewall-cmd --permanent --add-service=https
Otevřete 9001
port používaný aplikací Etherpad.
$ sudo firewall-cmd --permanent --add-port=9001/tcp
Znovu zkontrolujte stav brány firewall.
$ sudo firewall-cmd --permanent --list-services
Měli byste vidět podobný výstup.
cockpit dhcpv6-client http https ssh
Chcete-li změny povolit, znovu načtěte bránu firewall.
$ sudo firewall-cmd --reload
Krok 2 – Instalace Git
Před instalací Etherpadu musíme nainstalovat Git. Spusťte následující příkaz a nainstalujte Git.
$ sudo dnf install git
Ověřte instalaci.
$ git --version git version 2.27.0
Přidejte počáteční konfiguraci.
$ git config --global user.name "YourName" $ git config --global user.email "[email protected]"
Vypište konfiguraci, kterou jste právě nastavili.
$ git config --list user.name=YourName [email protected]
Krok 3 – Instalace MariaDB
Protože k ukládání dat Etherpadu budeme používat databázi MariaDB, musíme ji nejprve nainstalovat a nakonfigurovat.
Rocky Linux AppStream úložiště přichází s MariaDB. Chcete-li zobrazit všechny dostupné verze nainstalované MariaDB, spusťte následující příkaz.
$ 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
Výchozí verze je nastavena na 10.3. Nejnovější verzi však můžete nainstalovat pomocí následujícího příkazu.
$ sudo dnf module enable mariadb:10.5
Nainstalujte MariaDB.
$ sudo dnf install mariadb-server
Povolte a spusťte službu MariaDB.
$ sudo systemctl enable mariadb --now
Zkontrolujte stav služby.
$ sudo systemctl status mariadb
Zabezpečte server MariaDB.
$ sudo mysql_secure_installation
Budete čelit různým výzvám. Odpovězte na ně následovně.
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 y
Nyní se můžete připojit k serveru MariaDB pomocí následujícího příkazu.
$ sudo mysql
Krok 4 – Konfigurace MariaDB
Přihlaste se do prostředí MariaDB.
$ sudo mysql
Vytvořte novou databázi pro Etherpad.
$ create database `etherpad_lite_db`;
Vytvořte nového uživatele databáze.
$ CREATE USER 'etherpaduser'@'localhost' identified by 'password';
Použijte silné heslo.
Udělte uživateli oprávnění k databázi.
$ grant CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `etherpad_lite_db`.* to '<etherpaduser>'@'localhost';
Ukončete prostředí MySQL.
$ exit
Krok 5 – Stáhnout a nainstalovat Etherpad
Chcete-li nainstalovat Etherpad, stáhneme si jeho zdrojový kód a sestavíme jej.
Prvním krokem je vytvoření nového etherpad
pomocí následujícího příkazu.
$ sudo adduser --system --home /opt/etherpad --create-home --user-group etherpad
Tento příkaz vytvoří --system
uživatel, což znamená, že se nemůže přihlásit a nemá žádné heslo. Dáme mu také domovský adresář /opt/etherpad
kde si stáhneme Etherpad. --create-home
flag vytvoří domovský adresář se správnými oprávněními. --user-group
flag vytvoří skupinu se stejným názvem jako uživatelské jméno.
Přepněte na etherpad
uživateli stáhnout a nainstalovat aplikaci.
$ sudo -u etherpad bash
Přepněte na /opt/etherpad
adresář.
[[email protected] user] cd /opt/etherpad
Naklonujte úložiště Etherpad do /opt/etherpad
adresář.
[[email protected] ~]$ git clone --branch master git://github.com/ether/etherpad-lite.git
Přepněte do nově staženého adresáře.
[[email protected] ~]$ cd etherpad-lite
Spusťte na Etherpadu run.sh
skript pro nastavení a instalaci závislostí.
[[email protected] etherpad-lite]$ src/bin/run.sh
Můžete spustit URL http://YOURSERVERIP:9001
v prohlížeči pro spuštění Etherpadu. Zobrazí se následující obrazovka.
Vyskytl se problém s výše uvedenou instalací. Vyžaduje, abyste ponechali aktuální shell otevřený s Node spuštěným v popředí. Aby to byla trvalá instalace, musíme spustit Etherpad jako službu. Stisknutím Ctrl + C na terminálu zastavíte spuštění Etherpadu.
Krok 6 – Konfigurace Etherpad
Než budeme pokračovat, musíme provést některá nastavení a nakonfigurovat naši instalaci podle našich potřeb. Etherpad ukládá svá nastavení do settings.json
soubor v instalačním adresáři.
Otevřete soubor pro úpravy.
[[email protected] etherpad-lite]$ nano settings.json
Soubor nastavení je naformátován jako JSON. První věc, kterou musíte nakonfigurovat, je nastavení databáze.
Najděte následující kód a okomentujte jej vložením //
před ním.
// "dbType": "dirty", // "dbSettings": { // "filename": "var/dirty.db" // },
Poté najděte následující kód a změňte jeho hodnoty následovně. Ujistěte se, že jste odstranili /*
a */
na začátku a na konci.
"dbType" : "mysql", "dbSettings" : { "user": "etherpaduser", "host": "localhost", "port": 3306, "password": "password", "database": "etherpad_lite_db", "charset": "utf8mb4" },
Nakonec přejděte trochu dolů a najděte trustProxy
nastavení a změňte jeho hodnotu z false
true
.
"trustProxy": true,
Toto nastavení je potřeba, aby Etherpad fungoval společně s Nginx.
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni po dokončení.
Ukončete uživatelské prostředí Etherpadu.
[[email protected] etherpad-lite]$ exit
Krok 7 – Vytvoření služby Etherpad
Ke spuštění Etherpadu při bootování a ke správě procesu pomocí systemctl
, musíme vytvořit soubor služby.
Vytvořte a otevřete soubor služby.
$ sudo nano /etc/systemd/system/etherpad.service
Vložte do něj následující kód.
[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
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni po dokončení.
Znovu načtěte servisního démona a zaveďte novou konfiguraci.
$ sudo systemctl daemon-reload
Povolte Spustit službu Etherpad.
$ sudo systemctl enable etherpad --now
Zkontrolujte stav služby.
$ 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 .......
Krok 8 – Instalace SSL pomocí Let's Encrypt
Chcete-li nainstalovat certifikát SSL pomocí Let's Encrypt, musíme nainstalovat nástroj Certbot.
Nejprve si musíte stáhnout a nainstalovat úložiště EPEL.
$ sudo dnf install epel-release
Spuštěním následujících příkazů nainstalujte Certbot.
$ sudo dnf install certbot
Vygenerujte certifikát SSL.
$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -m [email protected] -d example.com
Výše uvedený příkaz stáhne certifikát do /etc/letsencrypt/live/etherpad.example.com
adresář na vašem serveru.
Vytvořte skupinu Diffie-Hellman certifikát.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Vytvořte adresář webroot s výzvou pro automatické obnovení Let's Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Vytvořte úlohu Cron pro obnovení SSL. Poběží každý den, aby se zkontroloval certifikát a v případě potřeby se obnoví. Nejprve vytvořte soubor /etc/cron.daily/certbot-renew
a otevřete jej pro úpravy.
$ sudo nano /etc/cron.daily/certbot-renew
Vložte následující kód.
#!/bin/sh certbot renew --cert-name etherpad.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni.
Změňte oprávnění k souboru úlohy, aby byl spustitelný.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Krok 9 – Instalace a konfigurace Nginx
Rocky Linux se dodává se starší verzí Nginx. Chcete-li nainstalovat nejnovější verzi, musíte přidat úložiště Nginx.
Vytvořte a otevřete soubor /etc/yum.repos.d/nginx.repo
pro úpravy.
$ sudo nano /etc/yum.repos.d/nginx.repo
Vložte do něj následující kód.
[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
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni po dokončení.
Nainstalujte Nginx.
$ sudo dnf install nginx
Povolte službu Nginx.
$ sudo systemctl enable nginx
Dále vytvořte a otevřete /etc/nginx/conf.d/etherpad.conf
pro úpravy.
$ sudo nano /etc/nginx/conf.d/etherpad.conf
Vložte do něj následující kód.
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; }
Uložte soubor stisknutím Ctrl + X a zadáním Y až budete vyzváni po dokončení.
Ověřte syntaxi konfiguračního souboru Nginx.
$ sudo nginx -t nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
Pokud se zobrazí následující chyba, budete muset upravit soubor /etc/nginx/nginx.conf
přidat/upravit velikost proměnné server_names_hash_bucket_size
.
nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size
Otevřete soubor /etc/nginx/nginx.conf
pro úpravy.
$ sudo nano /etc/nginx/nginx.conf
Přidejte následující řádek před řádek include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Uložte soubor stisknutím Ctrl + X a zadáním Y po výzvě. Znovu ověřte Nginx.
Nakonec spusťte službu Nginx a povolte novou konfiguraci.
$ sudo systemctl start nginx
Spusťte adresu URL https://etherpad.example.com
ve vašem prohlížeči a otevře se domovská stránka Etherpadu. Nyní jej můžete použít k úpravě dokumentů a zvát spolupracovníky.
Aktualizace Etherpadu
Aktualizace Etherpadu je snadná. Prvním krokem je přepnutí do uživatelského prostředí Etherpad.
$ sudo -u etherpad bash
Přepněte na /opt/etherpad/etherpad-lite
adresář.
[[email protected] user] cd /opt/etherpad/etherpad-lite
Stáhněte si nejnovější úložiště Etherpad do /opt/etherpad/etherpad-lite
adresář.
[[email protected] ~]$ git pull origin
Spusťte na Etherpadu run.sh
skript pro nastavení nejnovější verze Etherpadu.
[[email protected] etherpad-lite]$ src/bin/run.sh
Závěr
V tomto tutoriálu jsme nastavili Etherpad Collaborative Editor se serverem Nginx a zajistili jej pomocí Let's Encrypt SSL certifikátů. Vaše instalace Etherpadu je připravena k použití, kterou můžete rozšířit o další funkce včetně ověřených uživatelů, zásuvných modulů a přizpůsobení uživatelského rozhraní.
Pokud máte nějaké dotazy, napište je do komentářů níže.