ご存知かもしれませんが、Nextcloudは自己ホスト型のクラウドストレージソリューションであり、OnlyOfficeは自己ホスト型のオンラインオフィスドキュメントサーバーです。このチュートリアルでは、OnlyOfficeをNextcloudと統合する方法を紹介します。 、したがって、NextCloud Webインターフェースから直接オフィスドキュメント(DOCX、XLSX、PPTXなど)を編集できるようになります。
NextcloudOnlyOffice統合アプリの機能
- デスクトップエディタのすべての機能を備えたフル機能のテキストエディタをオンラインで利用できます。
- 100%の表示、変換、印刷、ページ付けの忠実度。
- リンク、表、グラフの追加、画像の挿入、自動図形、数式、テキストオブジェクトの操作、箇条書きまたは番号付きリストの作成が可能です。
- チームメートとのリアルタイムの共同編集:変更を即座に、または保存後にのみ表示します。コメントと組み込みのチャットを使用して、変更を確認および追跡します。
- DOCX、XLSX、PPTX、TXTファイルの編集と保存をサポートします。ファイルをODT、ODS、ODP、DOC、XLS、PPT、PPS、EPUB、RTF、HTML、HTMなどの他の形式で保存することもできます。
- Office Open XML形式と完全に互換性があります:.docx、.xlsx、.pptx
- ファイルを自動保存するので、作業内容が失われることはありません。
- ラテン語、CJK(中国語、日本語、韓国語)の文字をサポートします。
前提条件
OnlyOfficeドキュメントサーバーには、少なくとも2コアのCPUと2GBのRAMが必要です。 Nextcloudでスムーズに動作させるために、4コアCPUと4GBRAMを搭載したサーバーを使用することをお勧めします。 Contaboから強力なVPSを非常に少ないコストで購入できます。ユーザーが多い場合は、サーバーの仕様をアップグレードすることを検討する必要があります。
Contaboはドイツにのみデータセンターを持っています。米国でホストされているVPSが必要な場合は、4コアCPU、8 GBRAMVPSを月額9.99米ドルで提供するTurnkeyInternetをお勧めします。
このガイドを完了するには、Nextcloudサーバーが機能している必要があります。まだ行っていない場合は、次の記事を読んで、最初にNextcloudサーバーをセットアップしてください。
- Nginx(LEMPスタック)を使用してUbuntu18.04にNextCloudをインストールする
次に、次の手順を読んで、OnlyOfficeとNextcloudを統合します。 OnlyOfficeドキュメントサーバーとNextcloudサーバーは2つの異なるホストにインストールできます。始めましょう。
ステップ1:UbuntuにONLYOFFICEドキュメントサーバーをインストールする
OnlyOfficeドキュメントサーバーは、PostgreSQL、Node.js、Redisサーバー、RabbitMQサーバー、およびNginxに依存しています。次の手順は、Ubuntu18.04サーバーでテストされています ただし、DebianファミリのLinuxディストリビューションにも適用できるはずです。
UbuntuリポジトリからPostgreSQLをインストールする
sudo apt install postgresql
次に、onlyofficeを作成します データベース。
sudo -i -u postgres psql -c "CREATE DATABASE onlyoffice;"
onlyofficeを作成します ユーザー。
sudo -i -u postgres psql -c "CREATE USER onlyoffice WITH password 'onlyoffice';"
許可を与えます。
sudo -i -u postgres psql -c "GRANT ALL privileges ON DATABASE onlyoffice TO onlyoffice;"
注 :ユーザー名とパスワードの両方がonlyofficeである必要があります 。
公式リポジトリからNodeJSをインストールする
OnlyOfficeドキュメントサーバーにはnodejsバージョン8.12.0以降が必要ですが、Ubuntuリポジトリのバージョンが古くなっているため、アップストリームリポジトリから最新のLTSバージョン(12.13.1)のNode.jsをインストールする必要があります。
Node.jsの再投稿を追加します。
curl -sL https://deb.nodesource.com/setup_12.x | sudo -E bash -
Node.jsをインストールします。
sudo apt install nodejs -y
Node.jsのバージョンを確認してください。
node -v
サンプル出力:
v12.13.1
RedisサーバーとRabbitmqをインストールします
sudo apt install redis-server rabbitmq-server
ステータスを確認してください。
systemctl status redis-server systemctl status rabbitmq-server
アクティブ(実行中)であることがわかります。 。 rabbitmq-serverの場合 起動に失敗しました。これは主に、マシンのメモリが不足しているか、ホスト名が無効であることが原因です。 Redisサーバーは127.0.0.1:6379でリッスンします 。 RabbitMQは0.0.0.0:25672でリッスンします および0.0.0.0:4369
OnlyOfficeドキュメントサーバーをインストールする
次のコマンドを使用してOnlyOfficeリポジトリを追加します。
echo "deb http://download.onlyoffice.com/repo/debian squeeze main" | sudo tee /etc/apt/sources.list.d/onlyoffice.list
OnlyOffice公開鍵をインポートします。
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv-keys CB2DE8E5
ローカルパッケージインデックスを更新し、OnlyOfficeドキュメントサーバーをインストールします。 onlyoffice-documentserverに注意してください パッケージはnginx-extrasをインストールします 依存関係として、Apache Webサーバーが実行されている場合は、最初に停止する必要があります。
sudo apt update sudo apt install onlyoffice-documentserver
インストールプロセス中に、onlyofficeのPostgreSQLパスワードを入力するように求められます。 「onlyoffice」と入力します(二重引用符は含みません)。
また、MicrosoftからTrueTypeコアフォントをインストールするには、Microsoftライセンス条項に同意する必要があります。
Nginxサーバーブロックは/etc/nginx/conf.d/ds.confとしてインストールされます 。 (実際には、/etc/onlyoffice/documentserver/nginx/ds.confへのシンボリックリンクです。 。)OnlyOfficeドキュメントサーバーはnodejs Webアプリケーションであり、Nginxはリバースプロキシとして機能します。 /var/www/onlyoffice/documentserver/ Webルートディレクトリです。
インストールが完了したら、サーバーのパブリックIPアドレスをWebブラウザに入力すると、「ドキュメントサーバーが実行中です」と表示されます
。
ドキュメントサーバーのバージョン番号を確認するには、次のコマンドを使用できます。
apt search onlyoffice-documentserver
サンプル出力。
onlyoffice-documentserver/squeeze,now 5.4.1-39 amd64 [installed] online viewers and editors for text, spreadsheet and presentation files.
ステップ2:ドキュメントサーバーのHTTPSを有効にする
NextCloudをOnlyOfficeドキュメントサーバーに接続するには、後者がHTTPSモードで実行されている必要があります(Nextcloudサーバーとユーザーブラウザーの両方がドキュメントサーバーと接続する必要があります)。次の手順は、Let’sEncryptTLS証明書を取得してインストールする方法を示しています。
まず、OnlyOfficeNginxサーバーブロックファイルを編集する必要があります。
sudo nano /etc/nginx/conf.d/ds.conf
以下のようにserver_nameディレクティブを追加します。 onlyoffice.your-domain.comのDNSAレコードを設定することを忘れないでください 。
include /etc/nginx/includes/http-common.conf;
server {
listen 0.0.0.0:80;
listen [::]:80 default_server;
server_tokens off;
server_name onlyoffice.your-domain.com;
include /etc/nginx/includes/ds-*.conf;
}
ファイルを保存して閉じます。変更を有効にするためにNginxをリロードします。
sudo systemctl reload nginx
次に、certbot(Let’s Encrypt)クライアントとNginxプラグインをインストールします。
sudo apt install certbot python3-certbot-nginx
次に、次のコマンドを実行して、Nginxプラグインを使用して無料のTLS証明書を取得します。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d onlyoffice.your-domain.com
場所:
-
--nginx:nginxプラグインを使用します。 -
--agree-tos:利用規約に同意します。 --redirect:301リダイレクトでHTTPSを強制します。-
--hsts:すべてのHTTP応答にStrict-Transport-Securityヘッダーを追加します。ドメインに常にTLSを使用するようにブラウザを強制します。 SSL/TLSストリッピングから防御します。 -
--staple-ocsp:OCSPステープリングを有効にします。有効なOCSP応答は、TLS中にサーバーが提供する証明書にホチキス止めされます。
数秒以内に、以下のようなメッセージが表示されます。これは、TLS証明書が正常に取得されたことを意味します。
https://onlyoffice.your-domain.comにアクセスします WebブラウザでOnlyOfficeドキュメントサーバーがHTTPSモードで正しく実行されていることを確認します。
ステップ3:NextcloudOnlyOffice統合アプリをインストールする
管理者としてNextcloudWebインターフェースにログインし、Nextcloud Appsページに移動して、Office & Textをクリックします。 左ペインのタブ。 OnlyOfficeアプリがあります。ダウンロードして有効にします。
その後、Nextcloud設定ページに移動し、ONLYOFFICEを選択します 左側のペインのタブで、[ドキュメント編集サービスのアドレス]フィールドにOnlyOfficeのドメイン名を入力します。
上記の設定を保存した後、プラス(+)ボタンをクリックすると、Nextcloud内でドキュメント、スプリードシート、プレゼンテーションファイルを作成できるようになります。別のタブが開いて編集できます。
また、オフィスドキュメントのコンテキストメニューに「OpeninOnlyOffice」という新しいアイテムが表示されます。
同じホストにOnlyOfficeDocumentServerとNextcloudをインストールする
OnlyOfficeDocumentサーバーはNginxをWebサーバーとして使用します。
Nginxで実行されている既存のNextcloudサーバーがある場合、同じマシンにOnlyOfficeをインストールしても、Nextcloudサーバーに損傷はありません。 nginx-coreを削除します nginx-extrasをインストールします パッケージなので、少しダウンタイムが発生しますが、構成はそのまま残ります。
Apache Webサーバーで実行されている既存のNextcloudサーバーがあり、同じマシンにOnlyOfficeをインストールする場合は、次の2つの選択肢があります。
- Apacheを停止/削除し、NextcloudとOnlyOfficeの両方のWebサーバーとしてNginxを使用します。このチュートリアルでは、NextcloudNginx構成を使用できます。
- NginxをApacheのリバースプロキシとして構成します。
ApacheのリバースプロキシとしてのNginxの構成
2番目のルートを選択する場合は、OnlyOfficeドキュメントサーバーをインストールする前に、まずApacheのポート番号を変更する必要があります。
ports.confを編集します ファイル。
sudo nano /etc/apache2/ports.conf
行を見つける:
Listen 80
8180などの別のポート番号に変更します。OnlyOfficeドキュメントサーバーはdocserviceを開始するためにポート8080を必要とするため、ここでは8080を使用しないでください。
Listen 8180
後でNginxがSSLターミネーションを行うため、SSLポート番号も変更する必要があります。行を見つける:
Listen 443
ポート番号を4433のようなものに変更します。
Listen 4433
ファイルを保存して閉じます。次に、Nextcloudの仮想ホストファイルを編集します。
sudo nano /etc/apache2/sites-enabled/nextcloud.conf
最初の行は次のようになります:
<VirtualHost *:80>
ポート番号を8180に変更します。
<VirtualHost *:8180>
また、次の行の前にコメント文字を追加して、HTTPからHTTPSへのリダイレクトを無効にする必要があります。 (NextcloudサーバーはHTTPS接続を使用していますよね?)
#RewriteEngine on
#RewriteCond %{SERVER_NAME} =nextcloud.your-domain.com
#RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent] そして、SSLリスニングポートを変更します。
<VirtualHost *:443>
上記のポートを4433に変更します。ファイルを保存して閉じます。 Apache構成をリロードします。
sudo systemctl reload apache2
これで、Apacheはポート8180と4433でリッスンします。次に、上記の手順に従ってOnlyOfficeドキュメントサーバーをインストールします。これにより、プロセスにNginxがインストールされます。
OnlyOfficeドキュメントサーバーとNginxをインストールしたら、リクエストをApacheにプロキシするためのNginxサーバーブロックファイルを作成します。
sudo nano /etc/nginx/conf.d/nextcloud-proxy.conf
次の行をファイルに追加します。ドメイン名を独自のものに置き換えます。 ssl_certificateのパス およびssl_certificate_key Let’sEncryptが発行した証明書用です。別のCAによって発行された証明書を使用する場合は、独自のパスを入力する必要があります。
server {
listen 80;
server_name nextcloud.your-domain.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
server_name nextcloud.your-domain.com;
ssl_certificate /etc/letsencrypt/live/nextcloud.your-domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/nextcloud.your-domain.com/privkey.pem;
ssl_session_timeout 1d;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off;
ssl_protocols TLSv1.1 TLSv1.2;
add_header Strict-Transport-Security max-age=15768000;
ssl_ciphers 'ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS';
ssl_prefer_server_ciphers on;
location / {
proxy_pass http://127.0.0.1:8180;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
location / {...} セクションは、すべてのリクエストをポート8180でリッスンしているApacheWebサーバーにリダイレクトします。ファイルを保存して閉じます。次に、Nginx構成をテストします。
sudo nginx -t
構文に問題がない場合は、Nginxをリロードします。
sudo systemctl reload nginx
これで、URLにポート番号を追加しなくても、通常どおりNextcloudサーバーにアクセスできるようになります。次のcURLコマンドを使用してHTTPヘッダーをフェッチすると、フロントエンドサーバーがNginxであることがわかります。
curl -I https://nextcloud.your-domain.com
サンプル出力:
HTTP/1.1 302 Found Server: nginx/1.11.9 Date: Tue, 14 Mar 2017 08:55:30 GMT Content-Type: text/html; charset=UTF-8
DNSとHTTPSのオーバーヘッドの削減
NextcloudとOnlyOfficeが同じホストにインストールされている場合、NextcloudとOnlyOfficeは、パブリックDNS名を照会してHTTPS接続を確立しなくても、ローカルで相互に通信できます。
まず、ローカルホストでNextcloudとOnlyOfficeをリッスンするNginxサーバーブロックを作成する必要があります。 OnlyOfficeの場合、/etc/nginx/conf.d/ds.confを編集できます ファイル
sudo nano /etc/nginx/conf.d/ds.conf
そして、次のサーバーブロックを追加します。このサーバーブロックは127.0.0.1:80をリッスンすることに注意してください onlyoffice-document-serverを使用します server_nameとして。
#HTTP host for internal services
server {
listen 127.0.0.1:80;
listen [::1]:80;
server_name onlyoffice-document-server;
server_tokens off;
include /etc/nginx/includes/ds-*.conf;
}
ファイルを保存して閉じます。次に、NextcloudNginx構成ファイルを編集できます。
sudo nano /etc/nginx/conf.d/nextcloud.conf
そして、次のサーバーブロックを追加します。 127.0.0.1:80もリッスンします nextcloudを使用します server_nameとして。
server {
listen 127.0.0.1:80;
server_name nextcloud;
# Add headers to serve security related headers
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
add_header Referrer-Policy no-referrer;
#I found this header is needed on Ubuntu, but not on Arch Linux.
add_header X-Frame-Options "SAMEORIGIN";
# Path to the root of your installation
root /usr/share/nginx/nextcloud/;
access_log /var/log/nginx/nextcloud.access;
error_log /var/log/nginx/nextcloud.error;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
# The following 2 rules are only needed for the user_webfinger app.
# Uncomment it if you're planning to use this app.
#rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
#rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json
# last;
location = /.well-known/carddav {
return 301 $scheme://$host/remote.php/dav;
}
location = /.well-known/caldav {
return 301 $scheme://$host/remote.php/dav;
}
location ~ /.well-known/acme-challenge {
allow all;
}
# set max upload size
client_max_body_size 512M;
fastcgi_buffers 64 4K;
# Disable gzip to avoid the removal of the ETag header
gzip off;
# Uncomment if your server is build with the ngx_pagespeed module
# This module is currently not supported.
#pagespeed off;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location / {
rewrite ^ /index.php$uri;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}
location ~ ^/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
location ~ ^/(?:index|remote|public|cron|core/ajax/update|status|ocs/v[12]|updater/.+|ocs-provider/.+|core/templates/40[34])\.php(?:$|/) {
include fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
#Avoid sending the security headers twice
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass unix:/run/php/php7.2-fpm.sock;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
location ~ ^/(?:updater|ocs-provider)(?:$|/) {
try_files $uri/ =404;
index index.php;
}
# Adding the cache control header for js and css files
# Make sure it is BELOW the PHP block
location ~* \.(?:css|js)$ {
try_files $uri /index.php$uri$is_args$args;
add_header Cache-Control "public, max-age=7200";
# Add headers to serve security related headers (It is intended to
# have those duplicated to the ones above)
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";
add_header X-Robots-Tag none;
add_header X-Download-Options noopen;
add_header X-Permitted-Cross-Domain-Policies none;
add_header Referrer-Policy no-referrer;
# Optional: Don't log access to assets
access_log off;
}
location ~* \.(?:svg|gif|png|html|ttf|woff|ico|jpg|jpeg)$ {
try_files $uri /index.php$uri$is_args$args;
# Optional: Don't log access to other assets
access_log off;
}
}
ファイルを保存して閉じます。 Nginx構成をテストしてから、変更を有効にするためにNginxをリロードします。
sudo nginx -t sudo systemctl reload nginx
次に、/etc/hostsにローカルDNSレコードを追加する必要があります 以下のようなファイルで、サーバーはonlyoffice-document-serverのアドレスを見つけることができます およびnextcloud 。
127.0.0.1 localhost onlyoffice-document-server nextcloud
ファイルを保存して閉じます。
Nextcloud config.phpも編集する必要があります ファイル。
sudo nano /usr/share/nginx/nextcloud/config/config.php
nextcloudを追加します 以下のような信頼済みドメインリストにあります。
'trusted_domains' =>
array (
0 => 'nextcloud.linuxbabe.com',
1 => 'nextcloud',
),
ファイルを保存して閉じます。
次に、Nextcloud Webインターフェース設定ページに戻り、advanced server settingsをクリックします。 、OnlyOfficeドキュメントサーバーとNextcloudの内部アドレスを入力します。
- http:// onlyoffice-document-server /
- http:// nextcloud /
保存をクリックします ボタンをクリックすれば完了です。
OnlyOfficeDocumentServerをアップグレードする方法
OnlyOfficeドキュメントサーバーの新しいバージョンがリリースされたら、aptパッケージマネージャーを使用して新しいバージョンにアップグレードするだけです。
sudo apt update;sudo apt upgrade
新しいバージョンは、/etc/nginx/conf.d/ds.confのカスタマイズを上書きすることに注意してください ファイル。カスタム構成を簡単に復元できるように、次のコマンドを使用してこのファイルをバックアップすることをお勧めします。
cat /etc/nginx/conf.d/ds.conf | sudo tee /etc/nginx/conf.d/ds.conf.backup