ONLYOFFICE DocsをCentOSにインストールする方法

## はじめに

**コミュニティ版**では、**ONLYOFFICE Docs**をローカルサーバーにインストールし、オンラインエディターを[ONLYOFFICEコラボレーションプラットフォーム](https://helpcenter.onlyoffice.com/installation/groups-index.aspx)や[他の一般的なシステム](https://helpcenter.onlyoffice.com/integration.aspx)と統合することができます。

**ONLYOFFICE Docs**は、テキスト、スプレッドシート、プレゼンテーションのビューアとエディタからなるオンラインオフィススイートで、Office Open XMLフォーマットと完全な互換性があります。.DOCX、.XLSX、.PPTXに完全対応し、リアルタイムでの共同編集を可能にします。

### 機能概要
* ドキュメントエディタ
* 表計算エディタ
* プレゼンテーションエディタ
* モバイルWebビューアー
* 共同編集機能
* ヒエログリフのサポート
* すべての一般的な形式をサポート：DOC, DOCX, TXT, ODT, RTF, ODP, EPUB, ODS, XLS, XLSX, CSV, PPTX, HTML

ONLYOFFICE Docs コミュニティ版で利用できる機能の詳細は[こちら](https://github.com/ONLYOFFICE/DocumentServer#onlyoffice-document-server-editions)をご覧ください。

ONLYOFFICE Groupsと連携することで、以下のようなことが可能になります。

* ファイルの共有
* ドキュメントへのアクセス権管理
* Webサイトにドキュメントを埋め込む
* ONLYOFFICEに接続されたDrive、Box、Dropbox、OneDrive、OwnCloudに保存されたファイルの閲覧、編集

:::note warn
ONLYOFFICE DocsとONLYOFFICE Groupsを併用する場合、2つのマシンにインストールする必要があります。
:::

本ガイドでは、 Linux用ONLYOFFICE Docs コミュニティ版をお使いのマシンにインストールする方法をご紹介します。

## システム必要条件

* CPU：デュアルコア 2GHz以上
* RAM：2GB以上
* HDD：40GB以上の空き容量
* 追加要件：4GB以上
* OS：RHEL 7 または CentOS 7
* その他の要件：
* * PostgreSQL: バージョン 12.9 以降
* * NGINX: バージョン 1.3.13 以降
* * RabbitMQ

## 依存関係のインストール

### 最新バージョンのNGINXパッケージのインストール

RHEL/CentOS 用の yum リポジトリを設定するには、`/etc/yum.repos.d/nginx.repo`というファイルを作成し、以下の内容で作成します。

```<!--linenumber-->
[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

[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
```

[公式ガイド](http://nginx.org/en/linux_packages.html#stable)

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

```
sudo yum install nginx
```

その後、`/etc/nginx/nginx.conf` NGINX設定ファイルを編集し、以下のようにします。

```
user                  nginx;
worker_processes      1;
error_log             /var/log/nginx/error.log warn;
pid                   /var/run/nginx.pid;
events {
  worker_connections  1024;
}
http {
  include             /etc/nginx/mime.types;
  default_type        application/octet-stream;
  log_format          main  '$remote_addr - $remote_user [$time_local] "$request" '
                            '$status $body_bytes_sent "$http_referer" '
                            '"$http_user_agent" "$http_x_forwarded_for"';
  access_log          /var/log/nginx/access.log  main;
  sendfile            on;
  #tcp_nopush         on;
  keepalive_timeout   65;
  #gzip               on;
  include             /etc/nginx/conf.d/*.conf;
}
```

### EPELリポジトリのインストール

```
sudo yum install epel-release
```

### PostgreSQLのインストールと設定

お使いのCentOSのバージョンに含まれるPostgreSQLのバージョンをインストールします。

```
sudo yum install postgresql postgresql-server
```

:::note warn
PostgreSQLリポジトリから他のバージョンのPostgreSQLをインストールしたい場合は、PostgreSQLの[公式ドキュメント](https://www.postgresql.org/download/linux/redhat/)をご参照ください。
:::

**PostgreSQLデータベースの初期化**

```
sudo service postgresql initdb 
sudo chkconfig postgresql on
```

IPv4とIPv6のローカルホスト認証方式を`trust`にします。

テキストエディタで`/var/lib/pgsql/data/pg_hba.conf`ファイルを開いてください。

`host all 127.0.0.1/32 ident`文字列を探し、以下の文字列に置き換えます。

```
host    all             all             127.0.0.1/32            trust
```

次に、`host all all ::1/128 ident`文字列を探し、以下の文字列に置き換えます。

```
host    all             all             ::1/128                 trust
```

変更を保存します。

**PostgreSQLサービスを再起動します。**

```
sudo service postgresql restart
```

**PostgreSQLのデータベースとユーザーを作成します。**

:::note warn
ユーザー名とパスワードは任意で指定できます。
:::

まず、以下のコマンドを実行します。

```
cd /tmp
```

このコマンドは`could not change directory to "/root"`という警告が出るのを防ぐためです。その後、データベースとユーザーを作成する必要があります。

```
sudo -u postgres psql -c "CREATE DATABASE onlyoffice;"
sudo -u postgres psql -c "CREATE USER onlyoffice WITH password 'onlyoffice';"
sudo -u postgres psql -c "GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;"
```

#### RabbitMQのインストール

```
sudo yum install rabbitmq-server
```

CentOS 8にRabbitMQをインストールには、[公式ガイド](https://www.rabbitmq.com/install-rpm.html)をご参照ください。

rabbitmqサービスを起動し、ブート時に起動するようにします。

```
sudo service rabbitmq-server start
sudo systemctl enable rabbitmq-server
```

#### mscorefontsのインストール

`cabextract`と`xorg-x11-font-utils`のパッケージをインストールします。

```
sudo yum install cabextract xorg-x11-font-utils
```

CentOS 7.8(2003)の場合は、`fontconfig`が必要になります。

```
sudo yum install fontconfig
```

msttcoreフォントパッケージをインストールします。

```
sudo rpm -i https://deac-ams.dl.sourceforge.net/project/mscorefonts2/rpms/msttcore-fonts-installer-2.6-1.noarch.rpm
```

## ONLYOFFICE Docsのインストール

### ONLYOFFICE Docsリポジトリーの追加

以下のコマンドで、yum ONLYOFFICE Docsのリポジトリを追加します。

```
sudo yum install https://download.onlyoffice.com/repo/centos/main/noarch/onlyoffice-repo.noarch.rpm
```

### ONLYOFFICE Docsのインストール

下記のコマンドを実行してください。

```
sudo yum install onlyoffice-documentserver
```

依存するサービスを実行し、ブート時に起動できるようにします。

```
sudo service supervisord start
sudo systemctl enable supervisord
sudo service nginx start
sudo systemctl enable nginx
```

その後、ONLYOFFICE Docsはプロセスとして実行されます。パッケージは他のrpmパッケージと同じように更新されます。

## ONLYOFFICE Docsのデフォルトポートを変更する

ONLYOFFICE Docsは、デフォルトで80番ポートを使用して着信接続をリッスンしています。バージョン4.3以降、デフォルトのポートの代わりにONLYOFFICE Docsを使用する予定であれば、ポートを変更することができます。

:::note warn
デフォルトのポートを変更する場合、そのポートが着信/発信接続のために開いていることを確認してください。ONLYOFFICE Docsで使用されるすべてのポートの[リスト](https://helpcenter.onlyoffice.com/server/docker/document/open-ports.aspx)をご参照ください。
:::

これを行うには、コマンドを実行している**DS_PORT**環境変数を編集する必要があります。

```
export DS_PORT=<PORT_NUMBER>
```

上記のコマンドには、<PORT_NUMBER>の代わりにポート番号を書いてください。

:::note warn
ONLYOFFICE DocsのプロトコルをHTTPSに変更したい場合は、ポートを443に変更せず、[こちら](https://helpcenter.onlyoffice.com/server/linux/document/switch-to-https.aspx)の指示で変更します。
:::

その後、ONLYOFFICE Docsの設定を続けることができます。

### ONLYOFFICE Docsの設定

#### 設定スクリプトの実行

`documentserver-configure.sh`スクリプトを実行します。

```
bash documentserver-configure.sh
```

PostgreSQLとRabbitMQの接続パラメータを指定するように指示されます。以下のデータを使用します。

**PostgreSQL**の場合は、

* **ホスト**：localhost
* **データベース**: onlyoffice
* **ユーザー**：onlyoffice
* **パスワード**：onlyoffice

**RabbitMQ**の場合は、

* **ホスト**：localhost
* **ユーザー**：guest
* **パスワード**：guest

#### ファイアウォール例外を追加する

```
sudo firewall-cmd --zone=public --add-port=80/tcp --permanent
sudo firewall-cmd --reload
```

#### SELinux を無効にする （v.5.0以降は非推奨）

テキストエディタで`/etc/selinux/config`ファイルを開き、`SELINUX=enforcing`または `SELINUX=permissive`の文字列を`SELINUX=disabled`に置き換えて、変更を保存してください。

変更を有効にするために、サーバーを再起動してください。

### ONLYOFFICE Docsをブラウザで起動する

設定が完了したら、ブラウザのアドレスバーに[http://localhost](http://localhost/)を入力すると、ONLYOFFICE Docs のウェルカムページが開きます。[ここ](http://api.onlyoffice.com/editors/basic)には、提供されている API を使って、ドキュメント例を有効にしたり、オンラインエディタをウェブアプリケーションに統合する方法について、さらに詳しい説明が記載されています。

ONLYOFFICE DocsをONLYOFFICE Groupsに接続するには、[この手順](https://helpcenter.onlyoffice.com/server/linux/document/connect-document-server.aspx)を参照してください。