このチュートリアルでは、NginxWebサーバーを使用してUbuntu20.04LTSにNextCloudをインストールする方法を紹介します。
NextCloudとは?
NextCloudは、無料のオープンソースのセルフホストクラウドストレージソリューションです。機能的にはDropboxに似ています。独自のクラウドストレージソリューション(Dropbox、Googleドライブなど)は便利ですが、代償があります。ファイルがコンピューターに保存されているため、個人データの収集に使用できます。プライバシーが心配な場合は、NextCloudに切り替えることができます。NextCloudは、プライベートホームサーバーまたは仮想プライベートサーバー(VPS)にインストールできます。 NextCloudを介してファイルをサーバーにアップロードしてから、それらのファイルをデスクトップコンピューター、ラップトップ、またはスマートフォンに同期できます。このようにして、データを完全に制御できます。
NextCloudの機能
- 無料でオープンソース
- エンドツーエンド暗号化。つまり、サーバーにアップロードする前にクライアントデバイスでファイルを暗号化できるため、誰かがサーバーを盗んだとしても、ファイルを読み取ることはできません。
- オンラインオフィススイート(Collobora Online、OnlyOffice)と統合できるため、NextCloudから直接ドキュメント、ppt、xlsファイルを作成および編集できます。
- アプリストアには、機能を拡張するための何百ものアプリ(カレンダーアプリ、連絡先アプリ、メモ取りアプリ、ビデオ会議アプリなど)が含まれています。
- 同期クライアントは、Linux、macOS、Windows、iOS、Androidで利用できます。
前提条件
NextCloudはPHPプログラミング言語で書かれています。 このチュートリアルに従うには、最初にLEMPスタックをUbuntu20.04にインストールする必要があります 。まだ行っていない場合は、次のチュートリアルを確認してください。
- Ubuntu 20.04にLEMPスタック(Nginx、MariaDB、PHP7.4-FPM)をインストールする方法
NextCloudはホームサーバーまたはVPS(仮想プライベートサーバー)にインストールできます。ドメイン名も必要なので、後でHTTPSを有効にしてHTTPトラフィックを暗号化できるようになります。私はNameCheapからドメイン名を登録しました。これは、価格が低く、whoisのプライバシー保護が一生無料になるためです。 Nextcloudはドメイン名なしでインストールできますが、スヌーピングを防ぐためにHTTP接続を暗号化しないと、実際には意味がありません。サーバーソフトウェアをいじくり回して最大限に活用したい場合は、ドメイン名を購入することをお勧めします。
それでは、NextCloudをインストールしましょう。
ステップ1:Ubuntu20.04にNextCloudをダウンロード
Ubuntu20.04サーバーにログインします。次に、NextCloudzipアーカイブをサーバーにダウンロードします。この記事の執筆時点では、最新の安定バージョンは21.0.1です。バージョン番号の変更が必要になる場合があります。 https://nextcloud.com/installにアクセスし、download for server
をクリックします ボタンをクリックして最新バージョンを表示します。
次のコマンドを実行して、サーバーにダウンロードできます。
wget https://download.nextcloud.com/server/releases/nextcloud-21.0.1.zip
NextCloudをダウンロードするためにいつでも上記のURLフォーマットを使用することができます。新しいバージョンがリリースされた場合は、21.0.1
を置き換えるだけです。 新しいバージョン番号で。
ダウンロードしたら、unzip
でアーカイブを抽出します 。
sudo apt install unzip sudo unzip nextcloud-21.0.1.zip -d /usr/share/nginx/
-d
オプションは、ターゲットディレクトリを指定します。 NextCloudWebファイルは/usr/share/nginx/nextcloud/
に抽出されます 。次に、このディレクトリの所有者をwww-data
に変更する必要があります Webサーバー(Nginx)がこのディレクトリに書き込めるようにします。
sudo chown www-data:www-data /usr/share/nginx/nextcloud/ -R
ステップ2:MariaDBデータベースサーバーでNextcloudのデータベースとユーザーを作成する
次のコマンドを使用して、MariaDBデータベースサーバーにログインします。 MariaDBは現在unix_socket
を使用しているため ユーザーログインを認証するプラグイン。MariaDBのrootパスワードを入力する必要はありません。 mysql
のプレフィックスを付ける必要があります sudo
を使用したコマンド 。
sudo mysql
次に、Nextcloudのデータベースを作成します。このチュートリアルでは、データベースにnextcloudという名前を付けます。好きな名前を使用できます。
create database nextcloud;
データベースユーザーを作成します。この場合も、このユーザーの好みの名前を使用できます。 your-password
を置き換えます ご希望のパスワードを使用してください。
create user nextclouduser@localhost identified by 'your-password';
このユーザーにnextcloud
に対するすべての権限を付与します データベース。
grant all privileges on nextcloud.* to nextclouduser@localhost identified by 'your-password';
特権をフラッシュして終了します。
flush privileges; exit;
ステップ3:Nextcloud用のNginx構成ファイルを作成する
nextcloud.conf
を作成します /etc/nginx/conf.d/
のファイル Nanoのようなコマンドラインテキストエディタを備えたディレクトリ。
sudo nano /etc/nginx/conf.d/nextcloud.conf
次のテキストをコピーしてファイルに貼り付けます。 nextcloud.example.com
を置き換えます 自分の好みのサブドメインで。 DNSゾーンエディタでこのサブドメインのDNSAレコードを作成することを忘れないでください。実際のドメイン名をお持ちでない場合は、NameCheapにアクセスして購入することをお勧めします。価格は安く、whoisのプライバシー保護は一生無料です。
server { listen 80; listen [::]:80; server_name nextcloud.example.com; # 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; } 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)(/.*)$; try_files $fastcgi_script_name =404; 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.4-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; } }
ファイルを保存して閉じます。 (Nanoテキストエディタでファイルを保存するには、Ctrl+O
を押します。 、次にEnter
を押します 確認するために。終了するには、Ctrl+X
を押します 。)
次に、Nginx構成をテストします。
sudo nginx -t
テストが成功した場合は、変更を有効にするためにNginxをリロードします。
sudo systemctl reload nginx
ステップ4:PHPモジュールをインストールして有効にする
次のコマンドを実行して、NextCloudが必要または推奨するPHPモジュールをインストールします。
sudo apt install imagemagick php-imagick php7.4-common php7.4-mysql php7.4-fpm php7.4-gd php7.4-json php7.4-curl php7.4-zip php7.4-xml php7.4-mbstring php7.4-bz2 php7.4-intl php7.4-bcmath php7.4-gmp
ステップ5:HTTPSを有効にする
これで、Nextcloudインストールのドメイン名を入力して、WebブラウザでNextcloudWebインストールウィザードにアクセスできます。
nextcloud.example.com
ウェブページを読み込めない場合は、ファイアウォールでポート80を開く必要があります。
sudo iptables -I INPUT -p tcp --dport 80 -j ACCEPT
また、ポート443もあります。
sudo iptables -I INPUT -p tcp --dport 443 -j ACCEPT
機密情報を入力する前に、Nextcloudで安全なHTTPS接続を有効にする必要があります。 Let’sEncryptから無料のTLS証明書を取得できます。 Ubuntu 20.04リポジトリからLet’s Encryptクライアント(certbot)をインストールします。
sudo apt install certbot python3-certbot-nginx
Python3-certbot-nginx
Nginxプラグインです。次に、次のコマンドを実行して、Nginxプラグインを使用して無料のTLS証明書を取得します。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d nextcloud.example.com
場所:
- –nginx :Nginxオーセンティケーターとインストーラーを使用する
- –同意する :Let'sEncryptの利用規約に同意する
- –リダイレクト :301リダイレクトを追加してHTTPSを適用します。
- –hsts :HTTP StrictTransportSecurityを有効にします。これにより、SSL/TLSストリッピング攻撃を防ぎます。
- –staple-ocsp :OCSPステープルを有効にします。
- –メール :登録と復旧の連絡に使用されるメール。
- -d フラグの後には、コンマで区切られたドメイン名のリストが続きます。最大100個のドメイン名を追加できます。
EFF(Electronic Frontier Foundation)からのメールを受信するかどうかを尋ねられます。 YまたはNを選択すると、TLS証明書が自動的に取得および構成されます。これは、以下のメッセージで示されます。
CertbotがNextcloudのNginx構成ファイルにHSTSヘッダーを追加できない可能性があることがわかりました。 HSTS(HTTP Strict Transport Security)を有効にする場合は、ファイルを編集します。
sudo nano /etc/nginx/conf.d/nextcloud.conf
次に、SSLサーバーブロックに次の行を追加して、HSTSヘッダーを有効にします。 (すでに存在する場合は、構成に問題はありません。)
add_header Strict-Transport-Security "max-age=31536000" always;
また、オプションhttp2
を追加することで、HTTP2プロトコルを有効にすることができます。 、これによりWebページの読み込みが高速化されます。
listen 443 ssl http2; # managed by Certbot
以下のように。
ファイルを保存して閉じます。次に、Nginx構成にテキストを送信します。
sudo nginx -t
テストが成功した場合は、変更を有効にするためにNginxをリロードします。
sudo systemctl reload nginx
上記の構成では、SSLテストでA+スコアが取得されます。
ステップ6:Webブラウザでのインストールを完了します
これで、HTTPS接続を使用してNextcloudWebインストールウィザードにアクセスできます。
https://nextcloud.example.com
インストールを完了するには、管理者アカウントを作成し、Nextcloudデータフォルダーのパスを入力し、手順2で作成したデータベースの詳細を入力する必要があります。デフォルトのlocalhost
を使用できます ホストアドレスとして、またはlocalhost:3306
と入力できます 、MariaDBがポート3306でリッスンしているため。
データフォルダは、ユーザーのファイルが保存される場所です。セキュリティ上の理由から、データディレクトリをNextcloudwebrootディレクトリの外に配置することをお勧めします。したがって、ユーザーのファイルを/usr/share/nginx/nextcloud/data/
に保存する代わりに 、 / usr / share / nginx / nextcloud-dataに変更できます 。次のコマンドで作成できます:
sudo mkdir /usr/share/nginx/nextcloud-data
次に、Nginxユーザー(www-data
)データディレクトリへの書き込み権限があります。
sudo chown www-data:www-data /usr/share/nginx/nextcloud-data -R
Finish Setup
をクリックします ボタンをクリックすると、NextcloudのWebインターフェースが表示されます。おめでとうございます!プライベートクラウドストレージとして使用を開始できます。
NextCloudメール通知を設定する方法
NextCloudインスタンスが複数の人によって使用される場合は、NextCloudサーバーがパスワードリセットメールなどのトランザクションメールを送信できることが重要です。まず、自分のアカウントのメールアドレスを設定する必要があります。 Settings
に移動します ->Personal Info
アカウントのメールアドレスを設定します。
次に、設定に移動します ->基本設定 。メールサーバーの設定が表示されます。 2つの送信モードがあります:sendmail
およびsmtp
。 sendmail
を選択できます NextCloudホストでSMTPサーバーが実行されている場合はモード。
別のホストで実行されているSMTPサーバーを使用する場合は、smtp
を選択します。 モードにして、以下のようにSMTPサーバーアドレスとログインクレデンシャルを入力します。暗号化にはSTARTTLSを選択してください。
メールサーバーの設定方法については、次のチュートリアルをご覧ください。 注 新しいクリーンなOSでiRedMailメールサーバーを実行することを強くお勧めします。他のWebアプリケーションがあるOSにiRedMailをインストールすると、失敗し、既存のアプリケーションが破損する可能性があります。
- iRedMailを使用してUbuntu20.04でフル機能のメールサーバーを簡単にセットアップする方法
コマンドラインからNextcloudユーザーパスワードをリセットする方法
管理者アカウントのパスワードを紛失し、Nextcloudでメール配信を設定しなかった場合は、サーバーで次のコマンドを実行してパスワードをリセットする必要があります。 nextcloud_username
を置き換えます 実際のユーザー名で。
sudo -u www-data php /usr/share/nginx/nextcloud/occ user:resetpassword nextcloud_username
役立つと思われる他のコマンドもあります。使用可能なコマンドを次のように一覧表示します:
sudo -u www-data php /usr/share/nginx/nextcloud/occ
または
sudo -u www-data php /usr/share/nginx/nextcloud/console.php
データディレクトリを移動する方法
NextCloudデータディレクトリを移動する必要がある場合、これを達成するための4つのステップがあります。まず、cp
を使用する必要があります データディレクトリを新しいディレクトリにコピーするコマンド。たとえば、外付けハードドライブのマウントポイントは/media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731
です。 。外付けハードドライブに新しいデータディレクトリを作成します。
sudo mkdir /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/
次に、元のデータディレクトリを新しいデータディレクトリにコピーします。 -R
フラグは、コピー操作が再帰的であることを意味します。
sudo cp /usr/share/nginx/nextcloud-data/* /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/ -R
.ocdata
もコピーする必要があります ファイル。
sudo cp /usr/share/nginx/nextcloud-data/.ocdata /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/
次に、www-data
を設定する必要があります (Nginxユーザー)所有者として。
sudo chown www-data:www-data /media/linuxbabe/b43e4eea-9796-4ac6-9c48-2bcaa46353731/nextcloud-data/ -R
最後に、config.php
を編集する必要があります ファイル。
sudo nano /usr/share/nginx/nextcloud/config/config.php
次の行を見つけて、datadirectory
の値を変更します 。
'datadirectory' => '/usr/share/nginx/nextcloud-data',
ファイルを保存して閉じます。 NextCloudのウェブページをリロードすれば完了です。
ステップ7:PHPのメモリ制限を増やす
デフォルトのPHPメモリ制限は128MBです。 NextCloudはより良いパフォーマンスのために512MBをお勧めします。 PHPのメモリ制限を変更するには、 php.iniを編集します ファイル。
sudo nano /etc/php/7.4/fpm/php.ini
次の行を見つけます。 (409行目)
memory_limit = 128M
値を変更します。
memory_limit = 512M
ファイルを保存して閉じます。または、次のコマンドを実行して、ファイルを手動で開かずに値を変更することもできます。
sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.4/fpm/php.ini
次に、 PHP-FPMをリロードします 変更を有効にするためのサービス。
sudo systemctl reload php7.4-fpm
ステップ8:システム環境変数を適切にクエリするようにPHPを設定する
www.confを編集します ファイル。
sudo nano /etc/php/7.4/fpm/pool.d/www.conf
次の行を見つけます(396行目)。
;clear_env = no
この行のコメントを解除するには、セミコロンを削除します。
clear_env = no
ファイルを保存して閉じます。または、次のコマンドを実行して、ファイルを手動で開かずにこの行のコメントを解除することもできます。
sudo sed -i 's/;clear_env = no/clear_env = no/g' /etc/php/7.4/fpm/pool.d/www.conf
次に、 PHP-FPMをリロードします 変更を有効にするためのサービス。
sudo systemctl reload php7.4-fpm
ステップ9:アップロードファイルのサイズ制限を増やす
Nginxによって設定されるデフォルトの最大アップロードファイルサイズ制限は1MBです。大きなファイルをNextCloudサーバーにアップロードできるようにするには、NextCloudのNginx構成ファイルを編集します。
sudo nano /etc/nginx/conf.d/nextcloud.conf
で示されているように、このファイルにはすでに最大ファイルサイズが設定されています。
client_max_body_size 512M;
1Gのように、必要に応じて変更できます。
client_max_body_size 1024M;
ファイルを保存して閉じます。次に、変更を有効にするためにNginxをリロードします。
sudo systemctl reload nginx
PHPは、アップロードファイルサイズの制限も設定します。アップロードのデフォルトの最大ファイルサイズは2MBです。アップロードサイズの制限を増やすには、PHP構成ファイルを編集します。
sudo nano /etc/php/7.4/fpm/php.ini
次の行を見つけます(行846)。
upload_max_filesize = 2M
次のように値を変更します:
upload_max_filesize = 1024M
ファイルを保存して閉じます。または、次のコマンドを実行して、ファイルを手動で開かずに値を変更することもできます。
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/7.4/fpm/php.ini
次に、PHP-FPMを再起動します。
sudo systemctl restart php7.4-fpm
ステップ10:NextCloud用にRedisキャッシュを構成する
NextCloudの設定に移動した場合 ->概要 ページに、次の警告が表示される場合があります:
No memory cache has been configured. To enhance your performance please configure a memcache if available.
Redisを使用してnextCloudのメモリキャッシュを有効にします。次のコマンドを実行して、UbuntuリポジトリからRedisサーバーをインストールします。
sudo apt install redis-server
次のコマンドでバージョンを確認できます:
redis-server -v
サンプル出力:
Redis server v=5.0.7 sha=00000000:0 malloc=jemalloc-5.2.1 bits=64 build=636cde3b5c7a3923
これで、redisサーバーが実行されているかどうかを確認できます。
systemctl status redis
ヒント:上記のコマンドがすぐに終了しなかった場合は、Qキーを押して端末の制御を取り戻すことができます。
上のスクリーンショットから、実行中であり、自動起動が有効になっていることがわかります。何らかの理由で実行されていない場合は、次のコマンドを実行します。
sudo systemctl start redis-server
また、起動時の自動起動が有効になっていない場合は、次のコマンドを使用して有効にすることができます。
sudo systemctl enable redis-server
RedisをnextCloudのキャッシュとして構成するには、Redisとのインターフェース用にPHP拡張機能をインストールする必要があります。
sudo apt install php-redis
拡張機能が有効になっているかどうかを確認してください。
php --ri redis
Redis拡張機能が有効になっていることがわかります。有効になっていない場合は、次のコマンドを実行します。
sudo phpenmod redis
次に、nextCloud構成ファイルを編集します。
sudo nano /usr/share/nginx/nextcloud/config/config.php
末尾の);
の上に次の行を追加します 行。
'memcache.distributed' => '\OC\Memcache\Redis', 'memcache.local' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, ),
ファイルを保存して閉じます。次に、NginxとPHP-FPMを再起動します。
sudo systemctl restart nginx php7.4-fpm
次に、NextCloudの設定に移動します ->概要 ページを再度表示してWebページを更新すると、メモリキャッシュに関する警告が表示されなくなります。
欠落しているインデックスの追加
NextCloudの設定に次のメッセージが表示された場合 ->概要 ページ、
The database is missing some indexes. Due to the fact that adding indexes on big tables could take some time they were not added automatically.
次に、これらのインデックスを手動で追加する必要があります。 Nextcloudwebrootディレクトリに移動します。
cd /usr/share/nginx/nextcloud/
次のコマンドを実行して、Nextcloudデータベースにインデックスを追加します。
sudo -u www-data php occ db:add-missing-indices
NextCloudの設定を更新すると ->概要 ページでは、欠落しているインデックスに関する警告は消えるはずです。
BigIntへの変換
NextCloudの設定に次のメッセージが表示された場合 ->概要 ページ、
Some columns in the database are missing a conversion to big int. Due to the fact that changing column types on big tables could take some time they were not changed automatically.
次に、列タイプを手動で変更する必要があります。 Nextcloudwebrootディレクトリに移動します。
cd /usr/share/nginx/nextcloud/
Nextcloudをメンテナンスモードに変更して、ユーザーがログインして変更を加えられないようにします。
sudo -u www-data php occ maintenance:mode --on
次に、次のコマンドを実行して列タイプを変更します。
sudo -u www-data php occ db:convert-filecache-bigint
完了したら、メンテナンスモードをオフにします。
sudo -u www-data php occ maintenance:mode --off
NextCloudの設定を更新すると ->概要 ページでは、bigintに関する警告は消えるはずです。
Ubuntu20.04デスクトップにNextCloudクライアントをインストールする方法
Ubuntu 20.04デスクトップで次のコマンドを実行して、デフォルトのリポジトリからクライアントをインストールします。
sudo apt install nextcloud-client
Ubuntu20.04上のNextCloudクライアント
macOS、Windows、Android、iOS用のクライアントソフトウェアはNextcloudダウンロードページにあります。
OnlyOffice /CollaboraOnlineを有効にする方法
デフォルトでは、NextcloudにはOnlyOfficeのサポートが付属しています。これは、NextCloudから直接ドキュメント、ppt、xlsファイルを編集できるオンラインオフィススイートです。この機能を使用するには、アプリをインストールするだけです。 NextcloudApps
に移動します ->Office & Text
。 community document server
を見つけて有効にします アプリ。
これで、Nextcloudの追加ボタン(+)をクリックすると、Nextcloudサーバーから直接Word、スプレッドシート、プレゼンテーションドキュメントを作成できるようになります。
ただし、このアプリの信頼性はあまり高くありません。また、コミュニティエディションでは、最大20人のユーザーしか使用できません。 20人を超えるユーザーがいる場合は、EnterpriseEditionを購入する必要があります。 Collabora Onlineと呼ばれる別のオープンソースのLibreOfficeベースのオンラインオフィススイートがあります。これは同じ機能を備えていますが、ユーザー数に制限はありません。次の記事を読んで、Nextcloudと統合することができます。
- Dockerを使用してUbuntuでNextcloudとCollaboraOnlineを統合する
ローカルDNSエントリの追加
/etc/hosts
を編集することをお勧めします Nextcloudサーバーにファイルを追加し、次のエントリを追加して、Nextcloud自体がパブリックDNSにクエリを実行する必要がないようにします。これにより、全体的な安定性が向上します。 Nextcloudサーバーがnextcloud.example.com
を解決できない場合 ホスト名の場合、504ゲートウェイのタイムアウトが発生する可能性があります エラー。
127.0.0.1 localhost nextcloud.example.com
/etc/hosts
のIPアドレス ファイルには複数のホスト名を含めることができるため、同じボックスに他のアプリケーションをインストールしている場合は、次のように同じ行に他のホスト名またはサブドメインを追加することもできます。
127.0.0.1 localhost focal ubuntu nextcloud.example.com collabora.example.com
Cronを使用したバックグラウンドジョブの実行
デフォルトでは、NextcloudはAJAXを使用して、ページが読み込まれるたびに1つのタスクを実行します。より効率的なシステムcronサービスを使用して、バックグラウンドジョブを実行できます。 Nextcloudの設定に移動します ->基本設定 cronを選択します 。
次に、www-data
を編集します ユーザーのcrontabファイル。
sudo -u www-data crontab -e
このファイルに次の行を追加して、cronジョブが5分ごとに実行されるようにします。
*/5 * * * * php7.4 -f /usr/share/nginx/nextcloud/cron.php
ファイルを保存して閉じます。
(オプション)悪意のあるログイン試行の防止
コンピューターに静的パブリックIPアドレスがある場合は、Nginx構成ファイルにIPホワイトリストを作成できます。
sudo nano /etc/nginx/conf.d/nextcloud.conf
/login
へのアクセスを制限するには、SSLサーバーブロックに次の行を追加します URLなので、あなたのIPアドレスだけがこのURLにアクセスできます。 78.56.34.12を自分のIPアドレスに置き換えます。
location ~* ^/login{ try_files $uri /index.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.4-fpm.sock; fastcgi_intercept_errors on; fastcgi_request_buffering off; allow 78.56.34.12; deny all; }
ファイルを保存して閉じます。次に、Nginx構成をテストします。
sudo nginx -t
テストが成功した場合は、変更を有効にするためにNginxをリロードします。
sudo systemctl reload nginx
ホームネットワークに静的IPアドレスがない場合は、データセンターにVPNサーバーを設定できます。
トラブルシューティングのヒント
エラーが発生した場合は、次のいずれかのログファイルをチェックして、何が問題になっているのかを確認できます。
- Nginxエラーログ:
/var/log/nginx/error.log
- Nextcloud仮想ホストのNginxエラーログ:
/var/log/nginx/nextcloud.error
- Nextcloudアプリケーションログ:
/usr/share/nginx/nextcloud/data/nextcloud.log
たとえば、「Internal Server Error
」が発生したことがあります。 Nextcloudインスタンスと/var/log/nginx/nextcloud.error
の「」 ファイルは私にそれを教えてくれました
FastCGI sent in stderr: "PHP message: PHP Fatal error: Uncaught OC\HintException: [0]: Memcache \OC\Memcache\Redis not available for local cache (Is the matching PHP module installed and enabled?)
Ubuntuサーバーでppa:ondrej / php PPAを使用したため、php7.4-redis
もインストールする必要があることがわかりました。 php-redis
に加えて パッケージ。
Nextcloudのアップグレード
Nextcloudサーバーを最新のセキュリティとバグ修正で最新の状態に保つことが重要です。 Nextcloudをアップグレードする方法については、以下のチュートリアルをお読みください。
- Nextcloudをアップグレードする2つの方法[コマンドラインとGUI]