このチュートリアルでは、NginxWebサーバーを使用してUbuntu18.04LTSにNextCloudをインストールする方法を紹介します。
注 :Ubuntu 20.04ユーザーは、代わりにこのガイドに従う必要があります:Nginx(LEMPスタック)を使用してUbuntu20.04にNextCloudをインストールします
NextCloudとは?
NextCloudは、無料のオープンソースのセルフホストクラウドストレージソリューションです。機能的にはDropboxに似ています。独自のクラウドストレージソリューション(Dropbox、Googleドライブなど)は便利ですが、代償があります。ファイルがコンピューターに保存されているため、個人データの収集に使用できます。プライバシーが心配な場合は、NextCloudに切り替えることができます。NextCloudは、プライベートホームサーバーまたは仮想プライベートサーバー(VPS)にインストールできます。 NextCloudを介してファイルをサーバーにアップロードしてから、それらのファイルをデスクトップコンピューター、ラップトップ、またはスマートフォンに同期できます。このようにして、データを完全に制御できます。
NextCloudの機能
- 無料でオープンソース
- エンドツーエンド暗号化。つまり、サーバーにアップロードする前にクライアントデバイスでファイルを暗号化できるため、誰かがサーバーを盗んだとしても、ファイルを見ることができません。
- オンラインオフィススイート(Collobora、OnlyOffice)と統合できるため、NextCloudから直接ドキュメント、ppt、xlsファイルを作成および編集できます。
- アプリストアには、機能を拡張するための何百ものアプリが含まれています(カレンダーアプリ、メモを取るアプリ、ビデオ会議アプリなど)。
- 同期クライアントは、Linux、macOS、Windows、iOS、およびandroidで使用できます。
前提条件
NextCloudはPHPプログラミング言語で書かれています。 このチュートリアルに従うには、最初にLEMPスタックをUbuntu18.04にインストールする必要があります 。まだ行っていない場合は、次のチュートリアルを確認してください。
- Ubuntu 18.04にLEMPスタック(Nginx、MariaDB、PHP7.2-FPM)をインストールする方法
NextCloudはホームサーバーまたはVPS(仮想プライベートサーバー)にインストールできます。ドメイン名も必要です。ドメイン名をNameCheapから登録しました。これは、価格が低く、whoisのプライバシー保護が一生無料になるためです。
それでは、NextCloudをインストールしましょう。
ステップ1:Ubuntu18.04にNextCloudをダウンロード
Ubuntu18.04サーバーにログインします。次に、NextCloudzipアーカイブをサーバーにダウンロードします。この記事の執筆時点では、最新の安定バージョンは13.0.2です。バージョン番号の変更が必要になる場合があります。 https://nextcloud.com/installにアクセスし、ダウンロードボタンをクリックして、最新バージョンを確認してください。
次のコマンドを実行して、サーバーにダウンロードできます。
wget https://download.nextcloud.com/server/releases/nextcloud-13.0.2.zip
NextCloudをダウンロードするためにいつでも上記のURLフォーマットを使用することができます。新しいバージョンがリリースされた場合は、13.0.2
を置き換えるだけです。 新しいバージョン番号で。
ダウンロードしたら、unzip
でアーカイブを抽出します 。
sudo apt install unzip sudo unzip nextcloud-13.0.2.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でデータベースとユーザーを作成する
次のコマンドを使用して、MariaDBデータベースサーバーにログインします。 MariaDBは現在unix_socket
を使用しているため ユーザーログインを認証するプラグイン。MariaDBのrootパスワードを入力する必要はありません。 mysql
のプレフィックスを付ける必要があります sudo
を使用したコマンド 。
sudo mysql
または、このコマンドを使用してログインすることもできます。
sudo mariadb
次に、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/
のファイル ディレクトリ。
sudo nano /etc/nginx/conf.d/nextcloud.conf
次のテキストをファイルに入れます。 nextcloud.example.com
を置き換えます 自分の好みのサブドメインで。 DNSゾーンエディタでこのサブドメインのDNSAレコードを作成することを忘れないでください。実際のドメイン名をお持ちでない場合は、NameCheapにアクセスして購入することをお勧めします。価格は安く、whoisのプライバシー保護は一生無料です。
server { listen 80; listen [::]:80; server_name nextcloud.your-domain.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.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
ステップ4:PHPモジュールをインストールして有効にする
次のコマンドを実行して、NextCloudが必要または推奨するPHPモジュールをインストールします。
sudo apt install php-imagick php7.2-common php7.2-mysql php7.2-fpm php7.2-gd php7.2-json php7.2-curl php7.2-zip php7.2-xml php7.2-mbstring php7.2-bz2 php7.2-intl php7.2-bcmath
ステップ5:HTTPSを有効にする
これで、Nextcloudインストールのドメイン名を入力して、ブラウザでNextcloudWebインストールウィザードにアクセスできます。
nextcloud.your-domain.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 18.04リポジトリからLet’s Encryptクライアント(certbot)をインストールします。
sudo apt install certbot python3-certbot-nginx
Python-certbot-nginx
Nginxプラグインです。次に、次のコマンドを実行して、Nginxプラグインを使用して無料のTLS証明書を取得します。
sudo certbot --nginx --agree-tos --redirect --staple-ocsp --email your-email-address -d nextcloud.your-domain.com
説明:
- –nginx :Nginxオーセンティケーターとインストーラーを使用する
- –同意する :Let'sEncryptの利用規約に同意する
- –リダイレクト :301リダイレクトを追加します。
- –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プロトコルを有効にすることができます。 。
listen 443 ssl http2; # managed by Certbot
以下のように。
ファイルを保存して閉じます。次に、Nginx構成にテキストを送信します。
sudo nginx -t
テストが成功した場合は、変更を有効にするためにNginxをリロードします。
sudo systemctl reload nginx
上記の構成では、SSLテストでA+スコアが取得されます。
Webブラウザへのインストールを完了します
これで、HTTPS接続を使用してNextcloudWebインストールウィザードにアクセスできます。インストールを完了するには、管理者アカウントを作成し、Nextcloudデータフォルダーのパスを入力し、前に作成したデータベースの詳細を入力する必要があります。デフォルトのlocalhost
を使用できます ホストアドレスとして、またはlocalhost:3306
と入力できます 、MariaDBがポート3306でリッスンしているため。
データフォルダは、ユーザーのファイルが保存される場所です。セキュリティのために、データディレクトリをNextcloudウェブルートの外に配置するのが最善です。したがって、ユーザーのファイルを/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
完了すると、NextcloudのWebインターフェースが表示されます。おめでとうございます!プライベートクラウドストレージとして使用を開始できます。
NextCloudメール通知を設定する方法
NextCloudインスタンスが複数の人によって使用される場合は、NextCloudサーバーがパスワードリセットメールなどのトランザクションメールを送信できることが重要です。まず、自分のアカウントのメールアドレスを設定する必要があります。 Settings
に移動します ->Personal Info
アカウントのメールアドレスを設定します。
次に、設定に移動します ->基本設定 。メールサーバーの設定が表示されます。 2つの送信モードがあります:sendmail
およびsmtp
。 sendmail
を選択できます NextCloudホストでSMTPサーバーが実行されている場合はモード。
別のホストで実行されているSMTPサーバーを使用する場合は、smtp
を選択します。 モードにして、以下のようにSMTPサーバーアドレスとログインクレデンシャルを入力します。暗号化にはSTARTTLSを選択してください。
メールサーバーの設定方法については、次のチュートリアルをご覧ください。
- iRedMailを使用してUbuntu18.04でフル機能のメールサーバーを簡単にセットアップする方法
データディレクトリを移動する方法
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のウェブページをリロードすれば完了です。
PHPのメモリ制限を増やす
デフォルトのPHPメモリ制限は128MBです。 NextCloudはより良いパフォーマンスのために512MBをお勧めします。 PHPのメモリ制限を変更するには、 php.iniを編集します ファイル。
sudo nano /etc/php/7.2/fpm/php.ini
次の行を見つけます。 (406行目)
memory_limit = 128M
値を変更します。
memory_limit = 512M
ファイルを保存して閉じます。または、次のコマンドを実行して、ファイルを手動で開かずに値を変更することもできます。
sudo sed -i 's/memory_limit = 128M/memory_limit = 512M/g' /etc/php/7.2/fpm/php.ini
次に、 PHP-FPMをリロードします 変更を有効にするためのサービス。
sudo systemctl reload php7.2-fpm
システム環境変数を適切にクエリするようにPHPを設定する
www.confを編集します ファイル。
sudo nano /etc/php/7.2/fpm/pool.d/www.conf
次の行を見つけます(381行目)。
;clear_env = no
この行のコメントを解除するには、セミコロンを削除します。
clear_env = no
ファイルを保存して閉じます。または、次のコマンドを実行して、ファイルを手動で開かずにこの行のコメントを解除することもできます。
sudo sed -i 's/;clear_env = no/clear_env = no/g' /etc/php/7.2/fpm/pool.d/www.conf
次に、 PHP-FPMをリロードします 変更を有効にするためのサービス。
sudo systemctl reload php7.2-fpm
アップロードファイルのサイズ制限を増やす
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.2/fpm/php.ini
次の行を見つけます(行827)。
upload_max_filesize = 2M
次のように値を変更します:
upload_max_filesize = 1024M
ファイルを保存して閉じます。または、次のコマンドを実行して、ファイルを手動で開かずに値を変更することもできます。
sudo sed -i 's/upload_max_filesize = 2M/upload_max_filesize = 1024M/g' /etc/php/7.2/fpm/php.ini
次に、PHP-FPMを再起動します。
sudo systemctl restart php7.2-fpm
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=4.0.9 sha=00000000:0 malloc=jemalloc-3.6.0 bits=64 build=9435c3c2879311f3
これで、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.2-fpm
もう一度nextCloud管理ページに移動します。メモリキャッシュに関する警告は消えるはずです。
MariaDBで4バイト文字を有効にして絵文字を表示する方法
NextCloudの設定に次のメッセージが表示された場合 ->概要 ページの場合、MariaDBで4バイト文字を有効にする必要があります。
MySQL is used as database but does not support 4-byte characters. To be able to handle 4-byte characters (like emojis) without issues in filenames or comments for example it is recommended to enable the 4-byte support in MySQL.
まず、次のコマンドを実行して、MariaDBサーバーを最新の安定バージョンにアップグレードすることをお勧めします。
sudo apt-get install software-properties-common sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8 sudo add-apt-repository 'deb [arch=amd64,arm64,ppc64el] http://mirror.lstn.net/mariadb/repo/10.4/ubuntu bionic main' sudo apt update sudo apt install mariadb-server
次に、MariaDBコンソールにログインします。
sudo mysql -u root
nextcloud
の文字セットと照合を変更します データベース。
ALTER DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
MariaDBを終了します。
exit;
NextCloudインストールディレクトリに移動します。
cd /usr/share/nginx/nextcloud/
mysql.utf8mb4を有効にします config.php
で ファイル。
sudo -u www-data php occ config:system:set mysql.utf8mb4 --type boolean --value="true"
次に、MariaDB照合を修復します。
sudo -u www-data php occ maintenance:repair
これで、NextCloudの設定で警告が消えるはずです ->概要 ページを開くと、ファイル名、カレンダーイベント、コメントに絵文字を使用できます。
Ubuntu18.04デスクトップにNextCloudクライアントをインストールする方法
NextCloudチームは公式PPAを提供します。 Ubuntu 18.04デスクトップで次のコマンドを実行して、クライアントを無効にします。
sudo add-apt-repository ppa:nextcloud-devs/client sudo apt install nextcloud-client
sudo apt update
を実行する必要はないことに注意してください PPAを追加するときのUbuntu18.04ではもうありません。自動的に実行されます🙂
Ubuntu18.04上のNextCloudクライアント
トラブルシューティングのヒント
エラーが発生した場合は、次のいずれかのログファイルをチェックして、何が問題になっているのかを確認できます。
- 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.2-redis
もインストールする必要があることがわかりました。 php-redis
に加えて パッケージ。
Nextcloudのアップグレード
Nextcloudサーバーを最新のセキュリティとバグ修正で最新の状態に保つことが重要です。 Nextcloudをアップグレードする方法については、以下のチュートリアルをお読みください。
- Nextcloudをアップグレードする2つの方法[コマンドラインとGUI]