Как установить Etherpad Collaborative Web Editor на Rocky Linux 8
На этой странице
- Предпосылки
- Шаг 1. Настройка брандмауэра
- Шаг 2. Установите Git
- Шаг 3. Установите MariaDB
- Шаг 4. Настройка MariaDB
- Шаг 5. Загрузите и установите Etherpad
- Шаг 6. Настройка Etherpad
- Шаг 7. Создание службы Etherpad
- Шаг 8. Установите SSL с помощью Lets Encrypt
- Шаг 9. Установка и настройка Nginx
- Обновление Etherpad
- Заключение
Etherpad — это онлайн-редактор с открытым исходным кодом, обеспечивающий совместное редактирование в режиме реального времени в браузере. Он написан на Node.js и может быть размещен самостоятельно для работы с различными платформами, такими как WordPress, Drupal, Odoo, Discourse, Joomla и т. д.
В этом руководстве мы установим Etherpad на сервер Rocky Linux 8, используя базу данных MariaDB для хранения наших данных. Мы также будем использовать Nginx в качестве обратного прокси-сервера для приложения и установим SSL-сертификат с помощью Lets Encrypt, чтобы включить HTTPS-подключения к нашему экземпляру Etherpad.
Предпосылки
-
A system running Rocky Linux 8.
-
A non-root user with sudo privileges.
-
A domain name pointed to the server.
-
Nodejs installed. Follow our guide on installing Nodejs on Rocky Linux 8 server. Use any of the two methods specified.
-
Make sure everything is updated.
$ sudo dnf update
Шаг 1. Настройте брандмауэр
Rocky Linux использует Firewalld Firewall. Проверьте состояние брандмауэров.
$ sudo firewall-cmd --state
running
Это указывает на то, что он успешно запущен.
Брандмауэр работает с разными зонами, и общедоступная зона является зоной по умолчанию, которую мы будем использовать. Перечислите все службы и порты, активные на брандмауэре.
$ sudo firewall-cmd --permanent --list-services
Он должен показать следующий вывод.
cockpit dhcpv6-client ssh
Разрешить порты HTTP и HTTPS.
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
Откройте порт 9001
, используемый приложением Etherpad.
$ sudo firewall-cmd --permanent --add-port=9001/tcp
Перепроверьте состояние брандмауэра.
$ sudo firewall-cmd --permanent --list-services
Вы должны увидеть аналогичный вывод.
cockpit dhcpv6-client http https ssh
Перезагрузите брандмауэр, чтобы изменения вступили в силу.
$ sudo firewall-cmd --reload
Шаг 2 — Установите Git
Перед установкой Etherpad нам нужно установить Git. Выполните следующую команду, чтобы установить Git.
$ sudo dnf install git
Проверьте установку.
$ git --version
git version 2.27.0
Добавьте первоначальную конфигурацию.
$ git config --global user.name "YourName"
$ git config --global user.email ""
Перечислите конфигурацию, которую вы только что установили.
$ git config --list
user.name=YourName
Шаг 3 — Установите MariaDB
Поскольку мы будем использовать базу данных MariaDB для хранения данных Etherpads, нам необходимо сначала установить и настроить ее.
Репозиторий Rocky Linux AppStream поставляется с MariaDB. Чтобы вывести список всех доступных установленных версий MariaDB, выполните следующую команду.
$ 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
Версия по умолчанию установлена на 10.3. Однако вы можете установить последнюю версию, используя следующую команду.
$ sudo dnf module enable mariadb:10.5
Установите МариаБД.
$ sudo dnf install mariadb-server
Включите и запустите службу MariaDB.
$ sudo systemctl enable mariadb --now
Проверить статус услуги.
$ sudo systemctl status mariadb
Защитите сервер MariaDB.
$ sudo mysql_secure_installation
Вы столкнетесь с различными подсказками. Ответьте на них следующим образом.
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
Теперь вы можете подключиться к серверу MariaDB, используя следующую команду.
$ sudo mysql
Шаг 4 — Настройте MariaDB
Войдите в оболочку MariaDB.
$ sudo mysql
Создайте новую базу данных для Etherpad.
$ create database `etherpad_lite_db`;
Создайте нового пользователя базы данных.
$ CREATE USER 'etherpaduser'@'localhost' identified by 'password';
Используйте надежный пароль.
Предоставьте пользователю права доступа к базе данных.
$ grant CREATE,ALTER,SELECT,INSERT,UPDATE,DELETE on `etherpad_lite_db`.* to '<etherpaduser>'@'localhost';
Выйдите из оболочки MySQL.
$ exit
Шаг 5 — Скачайте и установите Etherpad
Чтобы установить Etherpad, мы загрузим его исходный код и соберем его.
Первый шаг — создать нового пользователя etherpad
с помощью следующей команды.
$ sudo adduser --system --home /opt/etherpad --create-home --user-group etherpad
Эта команда создает пользователя --system
, что означает, что он не может войти в систему и не имеет пароля. Мы также даем ему домашнюю директорию /opt/etherpad
, откуда можно скачать Etherpad. Флаг --create-home
создает домашний каталог с правильными разрешениями. Флаг --user-group
создает группу с тем же именем, что и имя пользователя.
Переключитесь на пользователя etherpad
, чтобы загрузить и установить приложение.
$ sudo -u etherpad bash
Перейдите в каталог /opt/etherpad
.
[ user] cd /opt/etherpad
Скопируйте репозиторий Etherpad в каталог /opt/etherpad
.
[ ~]$ git clone --branch master git://github.com/ether/etherpad-lite.git
Переключитесь на только что загруженный каталог.
[ ~]$ cd etherpad-lite
Запустите скрипт Etherpads run.sh
, чтобы настроить и установить зависимости.
[ etherpad-lite]$ src/bin/run.sh
Вы можете запустить URL-адрес http://YOURSERVERIP:9001
в браузере, чтобы запустить Etherpad. Вы получите следующий экран.
Возникла проблема с вышеуказанной установкой. Это требует, чтобы вы держали текущую оболочку открытой, а Node работал на переднем плане. Чтобы сделать постоянную установку, нам нужно запустить Etherpad как службу. Нажмите Ctrl + C на своем терминале, чтобы остановить запуск Etherpad.
Шаг 6 — Настройте Etherpad
Прежде чем продолжить, нам нужно установить некоторые параметры и настроить нашу установку в соответствии с нашими потребностями. Etherpad сохраняет свои настройки в файле settings.json
в каталоге установки.
Откройте файл для редактирования.
[ etherpad-lite]$ nano settings.json
Файл настроек имеет формат JSON. Первое, что вам нужно настроить, это параметры базы данных.
Найдите следующий код и закомментируйте его, поставив перед ним //
.
// "dbType": "dirty",
// "dbSettings": {
// "filename": "var/dirty.db"
// },
Затем найдите следующий код и измените его значения следующим образом. Обязательно удалите /*
и */
в начале и в конце.
"dbType" : "mysql",
"dbSettings" : {
"user": "etherpaduser",
"host": "localhost",
"port": 3306,
"password": "password",
"database": "etherpad_lite_db",
"charset": "utf8mb4"
},
Наконец, прокрутите немного вниз, чтобы найти параметр trustProxy
и измените его значение с false
на true
.
"trustProxy": true,
Этот параметр необходим для того, чтобы Etherpad работал вместе с Nginx.
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса после завершения.
Выйдите из пользовательской оболочки Etherpad.
[ etherpad-lite]$ exit
Шаг 7 — Создайте службу Etherpad
Чтобы запустить Etherpad при загрузке и управлять процессом с помощью systemctl
, нам нужно создать служебный файл.
Создайте и откройте файл службы.
$ sudo nano /etc/systemd/system/etherpad.service
Вставьте в него следующий код.
[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
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса после завершения.
Перезагрузите демон службы, чтобы получить новую конфигурацию.
$ sudo systemctl daemon-reload
Включите Запуск службы Etherpad.
$ sudo systemctl enable etherpad --now
Проверить статус услуги.
$ 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
.......
Шаг 8. Установите SSL с помощью Lets Encrypt
Чтобы установить SSL-сертификат с помощью Lets Encrypt, нам нужно установить инструмент Certbot.
Во-первых, вам нужно скачать и установить репозиторий EPEL.
$ sudo dnf install epel-release
Выполните следующие команды, чтобы установить Certbot.
$ sudo dnf install certbot
Создайте SSL-сертификат.
$ sudo certbot certonly --standalone --agree-tos --preferred-challenges http -m -d example.com
Приведенная выше команда загрузит сертификат в каталог /etc/letsencrypt/live/etherpad.example.com
на вашем сервере.
Создайте групповой сертификат Диффи-Хеллмана.
$ sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048
Создайте корневой каталог вызова для автоматического обновления Lets Encrypt.
$ sudo mkdir -p /var/lib/letsencrypt
Создайте задание Cron для обновления SSL. Он будет запускаться каждый день для проверки сертификата и его обновления при необходимости. Для этого сначала создайте файл /etc/cron.daily/certbot-renew
и откройте его для редактирования.
$ sudo nano /etc/cron.daily/certbot-renew
Вставьте следующий код.
#!/bin/sh
certbot renew --cert-name etherpad.example.com --webroot -w /var/lib/letsencrypt/ --post-hook "systemctl reload nginx"
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Измените права доступа к файлу задачи, чтобы сделать его исполняемым.
$ sudo chmod +x /etc/cron.daily/certbot-renew
Шаг 9 — Установите и настройте Nginx
Rocky Linux поставляется со старой версией Nginx. Чтобы установить последнюю версию, вам нужно добавить репозиторий Nginx.
Создайте и откройте файл /etc/yum.repos.d/nginx.repo
для редактирования.
$ sudo nano /etc/yum.repos.d/nginx.repo
Вставьте в него следующий код.
[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
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса после завершения.
Установите Нгинкс.
$ sudo dnf install nginx
Включите службу Nginx.
$ sudo systemctl enable nginx
Затем создайте и откройте файл /etc/nginx/conf.d/etherpad.conf
для редактирования.
$ sudo nano /etc/nginx/conf.d/etherpad.conf
Вставьте в него следующий код.
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;
}
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса после завершения.
Проверьте синтаксис файла конфигурации 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
Если вы получите следующую ошибку, вам нужно будет отредактировать файл /etc/nginx/nginx.conf
, чтобы добавить/настроить размер переменной server_names_hash_bucket_size
.
nginx: [emerg] could not build the server_names_hash, you should increase server_names_hash_bucket_size
Откройте файл /etc/nginx/nginx.conf
для редактирования.
$ sudo nano /etc/nginx/nginx.conf
Добавьте следующую строку перед строкой include /etc/nginx/conf.d/*.conf;
.
server_names_hash_bucket_size 64;
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса. Проверьте Nginx еще раз.
Наконец, запустите службу Nginx, чтобы активировать новую конфигурацию.
$ sudo systemctl start nginx
Запустите URL-адрес https://etherpad.example.com
в своем браузере, и откроется домашняя страница Etherpad. Теперь вы можете использовать его для редактирования документов и приглашения соавторов.
Обновление Etherpad
Обновить Etherpad очень просто. Первый шаг — переключиться на пользовательскую оболочку Etherpad.
$ sudo -u etherpad bash
Перейдите в каталог /opt/etherpad/etherpad-lite
.
[ user] cd /opt/etherpad/etherpad-lite
Загрузите последний репозиторий Etherpad в каталог /opt/etherpad/etherpad-lite
.
[ ~]$ git pull origin
Запустите скрипт Etherpads run.sh
, чтобы установить последнюю версию Etherpad.
[ etherpad-lite]$ src/bin/run.sh
Заключение
В этом руководстве мы настроим Etherpad Collaborative Editor с сервером Nginx и защитим его с помощью SSL-сертификатов Lets Encrypt. Ваша установка Etherpad готова к использованию, которую вы можете расширить с помощью дополнительных функций, включая аутентифицированных пользователей, плагины и настройки пользовательского интерфейса.
Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.