ウェブサイト検索

Rocky Linux 8にEtherpadコラボレーティブウェブエディタをインストールする方法


Rocky Linux 8にEtherpadコラボレーティブウェブエディタをインストールする方法

このページで

  1. 前提条件
  2. ステップ1 - ファイアウォールを設定する
  3. ステップ2 - Gitをインストールする
  4. ステップ3 - MariaDBをインストールする
  5. ステップ4 - MariaDBの設定
  6. ステップ5 - Etherpadをダウンロードしてインストールする
  7. ステップ6 - Etherpadを設定する
  8. ステップ7 - Etherpadサービスを作成する
  9. ステップ8 - Let's Encryptを使用してSSLをインストールする
  10. ステップ9 - Nginxをインストールして構成する
  11. Etherpadを更新中
  12. 結論

Etherpadは、ブラウザでリアルタイムの共同編集を提供するオープンソースのオンラインエディタです。Node.jsで書かれており、WordPress、Drupal、Odoo、Discourse、Joomlaなどのさまざまなプラットフォームで自己ホストして動作させることができます。

このチュートリアルでは、Rocky Linux 8サーバーにEtherpadをインストールし、データを保存するためにMariaDBデータベースを使用します。また、アプリケーションのリバースプロキシとしてNginxを使用し、Let's Encryptを使用してSSL証明書をインストールし、EtherpadインスタンスへのHTTPS接続を有効にします。

前提条件

    Rocky Linux 8を実行しているシステム。

    sudo権限を持つ非ルートユーザー。

    サーバーにポイントされたドメイン名。

    Nodejsがインストールされました。Rocky Linux 8サーバーにNodejsをインストールするためのガイドに従ってください。指定された2つの方法のいずれかを使用してください。

    すべてが最新であることを確認してください。

    sudo dnf update
    

ステップ1 - ファイアウォールを設定する

Rocky LinuxはFirewalldファイアウォールを使用しています。ファイアウォールのステータスを確認してください。

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

Etherpadアプリケーションで使用される9001ポートを開いてください。

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 "[email "

あなたが設定した構成をリストしてください。

git config --list
user.name=YourName
[email 

ステップ3 - MariaDBをインストールする

Etherpadのデータを保存するためにMariaDBデータベースを使用するので、最初にインストールして設定する必要があります。

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

MariaDBをインストールします。

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 ユーザーを作成します。これは、ログインできず、パスワードも持たないことを意味します。また、Etherpadをダウンロードする場所であるホームディレクトリ /opt/etherpad を設定します。--create-home フラグは、正しい権限を持つホームディレクトリを作成します。--user-group フラグは、ユーザー名と同じ名前のグループを作成します。

etherpadユーザーに切り替えて、アプリケーションをダウンロードしてインストールします。

sudo -u etherpad bash

/opt/etherpadディレクトリに切り替えます。

[etherpad@etherpad user] cd /opt/etherpad

Etherpadリポジトリを/opt/etherpadディレクトリにクローンします。

[etherpad@etherpad ~]$ git clone --branch master git://github.com/ether/etherpad-lite.git

新しくダウンロードしたディレクトリに切り替えてください。

[etherpad@etherpad ~]$ cd etherpad-lite

Etherpadのrun.shスクリプトを実行して、セットアップと依存関係のインストールを行います。

[etherpad@etherpad etherpad-lite]$ src/bin/run.sh

ブラウザでURL http://YOURSERVERIP:9001 を起動すると、Etherpadが起動します。次の画面が表示されます。

上記のインストールに問題があります。現在のシェルを開いたままにして、Nodeを前景で実行する必要があります。永続的なインストールをするには、Etherpadをサービスとして実行する必要があります。Etherpadの実行を停止するには、ターミナルでCtrl + Cを押してください。

ステップ6 - Etherpadを設定する

進む前に、いくつかの設定を行い、ニーズに応じてインストールを構成する必要があります。Etherpadは、インストールディレクトリ内のsettings.jsonファイルに設定を保存します。

ファイルを編集のために開いてください。

[etherpad@etherpad 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,

この設定は、Nginxと一緒にEtherpadを動作させるために必要です。

作業が完了したら、Ctrl + Xを押してファイルを保存し、求められたときにYを入力してください。

Etherpadユーザーシェルを終了します。

[etherpad@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 - Let's Encryptを使用してSSLをインストールする

Let's Encryptを使用してSSL証明書をインストールするには、Certbotツールをインストールする必要があります。

まず、EPELリポジトリをダウンロードしてインストールする必要があります。

sudo dnf install epel-release

次のコマンドを実行してCertbotをインストールします。

sudo dnf install certbot

SSL証明書を生成する。

sudo certbot certonly --standalone --agree-tos --preferred-challenges http -m [email  -d example.com

上記のコマンドは、サーバーの/etc/letsencrypt/live/etherpad.example.comディレクトリに証明書をダウンロードします。

ディフィー・ヘルマン群証明書を生成します。

sudo openssl dhparam -out /etc/ssl/certs/dhparam.pem 2048

Let's Encryptの自動更新のために、チャレンジ用のwebrootディレクトリを作成してください。

sudo mkdir -p /var/lib/letsencrypt

SSLを更新するためにCronジョブを作成します。これは毎日実行されて証明書を確認し、必要であれば更新します。それに先立って、まずはファイル/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を入力してください。

Nginxをインストールします。

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 ディレクトリに切り替えてください。

[etherpad@etherpad user] cd /opt/etherpad/etherpad-lite

/opt/etherpad/etherpad-liteディレクトリに最新のEtherpadリポジトリをプルします。

[etherpad@etherpad ~]$ git pull origin

Etherpadの最新バージョンをセットアップするには、Etherpadのrun.shスクリプトを実行してください。

[etherpad@etherpad etherpad-lite]$ src/bin/run.sh

結論

このチュートリアルでは、NginxサーバーでEtherpadコラボレーティブエディタをセットアップし、Let's Encrypt SSL証明書を使用してセキュリティを確保しました。あなたのEtherpadインストールは使用可能で、認証されたユーザー、プラグイン、ユーザーインターフェースのカスタマイズなど、さらなる機能を追加することができます。

質問がある場合は、下のコメントに投稿してください。

関連記事: