Nginx、MariaDB、PHP-FPM環境でのNextcloud構築手順をステップバイステップで紹介
Nextcloudはオープンソースのファイル共有・コラボレーションプラットフォームです。Google DriveやDropboxの代替として自社サーバーで運用可能で、高いセキュリティ要件を満たすファイル共有システムを構築できます。本記事ではUbuntuサーバー環境でのNextcloudインストール手順を詳細に解説します。
Nextcloudを正常に動作させるためには以下の4つの要素が必要です:
PHPモジュールやNginx設定の詳細については公式ドキュメントを参照してください。
NextcloudをNginxとMariaDB環境で動作させるために必要な主要なPHP拡張モジュールは以下の通りです:
ここからは実際にNextcloudを構築していきます。主な作業内容は以下の通りです:
Nextcloudのファイル操作権限を適切に設定するため、専用の「nginx」ユーザーを作成します。
sudo adduser --system --no-create-home --group --disabled-login nginx
以下のコマンドで必要なパッケージを一括インストールします。
※注: bzip2はNextcloudのアーカイブ解凍に使用しますが、必須ではありません
apt install nginx -y
apt install bzip2
apt install php8.3-mysql
apt install php-fpm php-gd php-mysql php-curl php-mbstring php-intl php-gmp php-xml php-imagick php-zip
apt install mariadb-server mariadb-client
Nextcloudを使用するには専用のデータベースとユーザーを作成する必要があります。MariaDBで以下の設定を行います。
※重要: 以下の例ではテスト用に「nextcloud」ユーザーと「password」パスワードを使用していますが、本番環境では必ず変更してください
データベースユーザー名 (nextcloud),データベースパスワード (password)の変更を推奨
mysql
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'password';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
quit;
/etc/php/8.3/fpm/pool.d/www.conf を編集し、Nginxユーザーが操作できるように権限を設定します。
listen.owner = nginx
listen.group = nginx
user = nginx
group = nginx
HTTPS接続を有効にするため自己証明書を生成します。詳細な手順は別記事を参照してください。
openssl genrsa -out server.key 2048
openssl req -new -key server.key > server.csr
openssl x509 -in server.csr -days 36500 -req -signkey server.key > server.crt
生成したファイルを次の場所に移動します。
mv server.key /etc/ssl/nginx/server.key;
mv server.crt /etc/ssl/nginx/server.crt;
Nextcloudの公式ドキュメントを参考にNginx設定を行い、環境に合わせてカスタマイズします。
Nginxの設定ファイルはnextcloudとファイル名にしています。
nextcloudファイルを作成し公式ドキュメントの設定をコピぺします。/etc/nginx/sites-enabled/nextcloud
Nextcloud用の設定ファイルに以下の変更を適用します:
nextcloudファイルはでは以下3つの設定を行います。
upstream php-handler {
server 127.0.0.1:9000;
#server unix:/run/php/php8.2-fpm.sock;
}
server_name cloud.example.com;
ssl_certificate /etc/ssl/nginx/cloud.example.com.crt;
ssl_certificate_key /etc/ssl/nginx/cloud.example.com.key;
upstream php-handler {
server unix:/run/php/php8.3-fpm.sock;
}
server_name _;
ssl_certificate /etc/ssl/nginx/server.crt;
ssl_certificate_key /etc/ssl/nginx/server.key;
nginx.confの設定ではuserをnginx設定。
Nginxのメイン設定ファイルに以下の1行を追加します:
user nginx;
IPアドレス直接接続を有効にするため、Nginxのデフォルト設定を削除します:
rm /etc/nginx/sites-enabled/default
設定完了後、Nginxを起動します:
systemctl start nginx
systemctl enable nginx
PHP-FPMの実行ユーザー/グループを変更します。php8.3環境ではデフォルトはwww-dataとなっていますが、これをnginxユーザーに変更します。
user = nginx
group = nginx
listen.owner = nginx
listen.group = nginx
listen.mode = 0660
設定変更後、PHP-FPMを再起動します:
systemctl restart php8.3-fpm
以下の手順で最新のNextcloudをダウンロードし展開します:
apt install bzip2
wget https://download.nextcloud.com/server/releases/latest.tar.bz2
wget https://download.nextcloud.com/server/releases/latest.tar.bz2.md5
tar -xjvf latest.tar.bz2
展開したファイルを /var/www/nextcloud に移動します。
Nginxユーザーが適切にファイル操作できるよう、所有者と権限を設定します:
sudo adduser --system --no-create-home --group --disabled-login nginx
sudo chown -R nginx:nginx nextcloud/
sudo find nextcloud/ -type d -exec chmod 750 {} \;
sudo find nextcloud/ -type f -exec chmod 640 {} \;
ウェブが正常に表示されない場合はchmod 777でテストしてください。 問題解決後は適切な権限に戻すことを推奨します。
本記事ではUbuntuサーバーへのNextcloudインストール方法を解説しました。インストール後はサーバーアドレスにアクセスし初期設定を行ってください。
セキュリティ強化のため、以下の対策を推奨します:
nextcloudのログは、/var/www/nextcloud/data/nextcloud.logに出力されます。問題発生時はまずログ内容を確認してください。