Как установить 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 готова к использованию, которую вы можете расширить с помощью дополнительных функций, включая аутентифицированных пользователей, плагины и настройки пользовательского интерфейса.
Если у вас есть какие-либо вопросы, задайте их в комментариях ниже.