◆はじめに
前回の「phpMyAdmin導入」に続いて、Rocky Linux 9 サーバ構築手順次のステップは、「Nextcloud導入編」についてセットアップを行います。

Nextcloudは、自分でホストするプライベートなクラウドストレージです。
Webブラウザを使用してファイルをアップロード・ダウンロード・共有できます。
本記事では、Nextcloudのインストールからセットアップ完了までの手順を解説します。
免責事項:
本記事の内容は筆者の環境で動作確認したものですが、すべての環境での動作を保証するものではありません。本記事の手順を実施する際は、以下の点にご注意ください。
◆環境情報
当ブログサイトを運用しているサーバは、「KAGOYA JAPAN」で提供されている「KAGOYA CLOUD VPS」を利用しています。
- OS: Rocky Linux 9
- Webサーバ: Nginx
- データベース: MariaDB
- PHPバージョン: 8.3以上
- Nextcloudバージョン: 最新版
◆Nextcloudについて
・概要
Nextcloudは、自分でホストするプライベートなクラウドストレージプラットフォームです。
個人のファイル保管、グループでのファイル共有、カレンダー・連絡先管理など、様々な機能を提供します。
・公式ドキュメント
Nextcloudの詳細な情報やトラブルシューティングについては、以下の公式ドキュメントを参照してください。
・主な機能
ファイル管理
- ファイルのアップロード・ダウンロード
- フォルダ構成の管理
- ファイル検索機能
- バージョン管理(ファイルの履歴保持)
ファイル共有
- ユーザ間でのファイル共有
- 公開リンク生成(パスワード保護可能)
- 有効期限設定
- 権限管理(読み取り・書き込み・削除)
ユーザ・グループ管理
- ユーザアカウント作成・管理
- グループの作成・管理
- クォータ設定
拡張機能
- カレンダー機能
- 連絡先管理
- プラグインによる機能拡張
セキュリティ
- エンドツーエンド暗号化
- 2要素認証対応
- アクティビティログ記録
◆Nextcloud導入・セットアップ
・データベースの設定
MariaDBへのログイン
sudo mysql -u root -p
Enter password:
Nextcloud用データベースとユーザの作成
CREATE DATABASE nextcloud;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'secure_password_here';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;
コマンド説明:
CREATE DATABASE nextcloud: Nextcloud用のデータベースを作成CREATE USER: Nextcloud用のMariaDBユーザを作成IDENTIFIED BY: ユーザのパスワード設定(安全な複雑なパスワードを使用してください)GRANT ALL PRIVILEGES: すべての権限をnextcloudユーザに付与FLUSH PRIVILEGES: 権限情報をメモリに読み込む
セキュリティ上の注意:
パスワードは十分に複雑なものを設定してください。
例:最低16文字以上、大文字・小文字・数字・記号を混在
・PHP必要パッケージのインストール
必要なPHPパッケージのインストール
Nextcloud実行に必要なPHPパッケージをインストールします。
sudo dnf install -y php-bcmath php-gmp php-pecl-imagick php-pecl-apcu
各パッケージの説明:
php-bcmath: 任意精度演算ライブラリphp-gmp: GMP(GNU Multiple Precision)ライブラリphp-pecl-imagick: 画像処理ライブラリphp-pecl-apcu: APCu(Alternative PHP Cache)メモリキャッシュ
注意:
phpMyAdmin導入時に既にインストール済みのパッケージがある場合は、スキップされます。
PHP-FPM設定ファイルの確認
PHP-FPMの設定ファイルでNginxプロセスの所有者が正しく設定されているか確認します。
sudo vi /etc/php-fpm.d/www.conf
以下の行が正しく設定されていることを確認します:
listen.owner = nginx
listen.group = nginx
正しく設定されていない場合は編集して保存します。
サービスの再起動
sudo systemctl restart php-fpm
sudo systemctl restart nginx
・Nextcloudのインストール
Nextcloudのダウンロードと展開
cd /tmp
sudo wget https://download.nextcloud.com/server/releases/latest.tar.bz2
sudo tar -jxvf latest.tar.bz2
sudo mv nextcloud/ /var/www/html/
Nextcloudディレクトリの設定
Nextcloudのデータディレクトリを独立して作成し、適切な権限を設定します。
sudo mkdir -p /var/www/nextcloud/data
sudo mkdir -p /var/www/html/nextcloud/config
sudo chown -R nginx:nginx /var/www/html/nextcloud/
sudo chown -R nginx:nginx /var/nextcloud_data/
sudo chmod -R 755 /var/www/html/nextcloud/
sudo chmod -R 750 /var/nextcloud_data/
ディレクトリ構成の説明:
/var/www/html/nextcloud: Nextcloudのアプリケーションファイル(プログラムコード)/var/nextcloud_data: ユーザのアップロードファイルを保存するデータディレクトリ(Webroot外に配置)/var/www/html/nextcloud/config: Nextcloud設定ファイル(config.php等)
重要:
データディレクトリを/var/nextcloud_dataとしてWebroot外に配置することで、セキュリティとパフォーマンスが向上します。
詳細は「ディレクトリ構成のセキュリティ上の利点」を参照してください。
・Nginxの設定
Nextcloud用ロケーション設定の追加
サイト設定ファイル(www.example.com.conf)にNextcloud用のロケーションブロックを追加します。
sudo vi /etc/nginx/conf.d/www.example.com.conf
Nextcloud設定(抜粋):
以下の設定を既存のserverブロック内に追加します。
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name www.example.com;
include /etc/nginx/ssl.conf;
root /var/www/html/wp;
'~ 既存の設定 ~'
# Nextcloud設定
location ^~ /nextcloud {
alias /var/www/html/nextcloud;
index index.php index.html index.htm;
# アップロードサイズの上限を無制限に設定
client_max_body_size 0;
fastcgi_buffers 64 4K;
# 静的ファイル(CSS、JavaScript等)のキャッシュ設定
location ~* ^/nextcloud/.*\.(?:css|js|woff2?|svg|gif|map)$ {
try_files $uri /nextcloud/index.php$request_uri;
add_header Cache-Control "public, max-age=15778463";
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;
access_log off;
}
# その他の静的ファイルのキャッシュ設定
location ~* ^/nextcloud/.*\.(?:png|html|ttf|ico|jpg|jpeg|bcmap|mp4|webm)$ {
try_files $uri /nextcloud/index.php$request_uri;
add_header Cache-Control "public, max-age=7200";
access_log off;
}
# PHPファイルの処理
location ~ ^/nextcloud/(.+?\.php)(/.*)?$ {
alias /var/www/nextcloud;
fastcgi_split_path_info ^/nextcloud/(.+?\.php)(/.*|)?$;
set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $request_filename;
fastcgi_param PATH_INFO $path_info;
fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass unix:/run/php-fpm/www.sock;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
fastcgi_read_timeout 300;
}
# 隠しファイルやアクセス制御ファイルへのアクセス禁止
location ~ ^/nextcloud/(?:\.|autoconfig|occ|issue|indie|db_|console) {
deny all;
}
# 保護が必要なディレクトリへのアクセス禁止
location ~ ^/nextcloud/(?:build|tests|config|lib|3rdparty|templates|data)\/ {
deny all;
}
# その他のリクエストをindex.phpにリダイレクト
try_files $uri $uri/ /nextcloud/index.php$request_uri;
}
}
設定のポイント:
client_max_body_size 0: アップロードサイズを無制限に設定fastcgi_read_timeout 300: 大容量ファイルアップロード時のタイムアウト対策- セキュリティヘッダー: XSS対策、キャッシュ制御、パーミッションポリシーの設定
- アクセス制限: 隠しファイル、設定ファイル、保護ディレクトリへのアクセスを拒否
Nginx設定の構文確認と再起動
sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
sudo systemctl reload nginx
・セットアップウィザード
管理者アカウントの設定
Webブラウザで以下のURLにアクセスすると、初回セットアップウィザードが表示されます。
https://www.example.com/nextcloud/

1. 管理者アカウントの設定
以下の情報を入力します。
- 新しい管理者アカウント名: Nextcloud管理者のユーザ名(例:
admin) - 新しい管理者パスワード: 管理者パスワード(安全なパスワードを設定してください)
ストレージとデータベースの設定
2. ストレージとデータベースの設定
以下の情報を入力します。
ストレージ設定:
- データフォルダー: 前述で設定したデータディレクトリ
/var/nextcloud_data
データベース設定:
- データベースを設定: MariaDBを選択
- データベースアカウント:
nextcloud - データベースのパスワード: 前述で設定したNextcloudユーザのパスワード
- データベース名:
nextcloud - データベースのホスト名:
localhost
セットアップの完了
3. セットアップの完了
すべての情報を入力後、「インストール」をクリックします。
注意:
初期セットアップには時間がかかる場合があります。
中断せずに完了をお待ちください。
ダッシュボード画面の確認
セットアップが完了すると、Nextcloudのダッシュボードが表示されます。

確認項目:
- ユーザメニュー(右上)の表示
- ファイルアプリへのアクセス可能性
- システム情報の表示
Nextcloud設定ファイルの修正
初期セットアップウィザード完了後、Nextcloud設定ファイルをデータディレクトリを指すように修正します。
sudo vi /var/www/html/nextcloud/config/config.php
以下の行を探して、データディレクトリのパスを修正します。
編集前(セットアップ直後):
'datadirectory' => '/var/www/html/nextcloud/data',
編集後(分離型ディレクトリ構成に変更):
'datadirectory' => '/var/nextcloud_data',
修正後、Nginxを再起動してください。
sudo systemctl reload nginx
その後、Webブラウザで再度ダッシュボードにアクセスし、ファイルアップロード機能が正常に動作することを確認します。
◆Nextcloudの基本操作
・ユーザアカウント管理
ユーザアカウントの追加
Nextcloud管理者は、Webインターフェースから新規ユーザを追加できます。
ユーザ追加手順:
- 右上のユーザメニューから「アカウント」をクリック

- 左メニューの「新規アカウント」をクリック

- 「新規アカウント」ウィンドウで以下の情報を入力:

必須入力項目:
- アカウント名: ユーザのログイン名(例:
user01) - パスワード: 初期パスワード(ユーザは初回ログイン時に変更可能)
- Eメール: ユーザのメールアドレス(パスワードまたはEメールのいずれかが必要)
- 「新しいアカウントを追加する」ボタンをクリック
オプション設定:
新規ユーザは以下を設定できます:
- 表示名: ユーザの表示名設定
- グループメンバーシップ: ユーザが属するグループの管理
- クォータ設定: ユーザが使用可能なストレージ容量を制限
・デスクトップ・モバイルアプリ連携
Windowsデスクトップアプリのインストール
Nextcloudは、WindowsおよびmacOS、Linuxなど複数のプラットフォーム向けデスクトップアプリを提供しています。

Windowsデスクトップアプリのダウンロード:
- Nextcloud公式ダウンロードページにアクセス
- Windows向けのデスクトップアプリケーションをダウンロード
- インストーラーを実行してアプリケーションをインストール





セットアップ手順:
- Nextcloudデスクトップアプリを起動
- 「ログイン」をクリック

- サーバアドレスにURL「
https://www.example.com/nextcloud」を入力し、「次へ」をクリック

- ブラウザーに切り替えてアカウントに接続します

- アカウントに接続するための警告が表示されます。よければ「ログイン」をクリック

- アカウントによるアクセス許可で「アクセスを許可」をクリック

- アカウントに接続されるので、ブラウザーは閉じます。

同期設定:
- 選択したローカルフォルダとNextcloudサーバが自動同期されます
- フォルダ内のファイル変更は、自動的にサーバにアップロードされます
- サーバ上のファイル変更は、自動的にローカルフォルダにダウンロードされます

- 同期をするために「接続」をクリック
- 同期が開始されます

その他のアプリ:
- iOS/Android: App StoreまたはGoogle Playから「Nextcloud」アプリをダウンロード
- Mac: Macアプリストアから「Nextcloud」デスクトップアプリをダウンロード
- Linux: Linuxディストリビューション付属のパッケージマネージャーからインストール
◆トラブルシューティング
・セットアップ時のエラー対処
データベース接続エラーが表示される場合
確認事項:
# MariaDBの接続確認
sudo mysql -u nextcloud -p nextcloud
パスワードが正しいか確認し、接続できることを確認してください。
対処方法:
- MariaDBが正常に起動しているか確認:
sudo systemctl status mariadb
- Nextcloudユーザの権限確認:
sudo mysql -u root -p
SHOW GRANTS FOR 'nextcloud'@'localhost';
EXIT;
- 必要に応じて権限を再設定:
sudo mysql -u root -p
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;
PHPエラーが表示される場合
PHPエラーログの確認:
sudo tail -f /var/log/php-fpm/www-error.log
よくあるエラーと対処:
| エラー内容 | 原因 | 対処方法 |
|---|---|---|
| Module not found | PHPモジュール未インストール | 必要なPHPパッケージをインストール |
| Permission denied | ディレクトリ権限不足 | chown -R nginx:nginx で権限を再設定 |
| Out of memory | メモリ不足 | PHPのメモリ上限を増加 |
・ログイン後のセッションエラー
症状:
Webブラウザからログインできない場合があります。
原因:
/var/lib/php/session/ディレクトリの所有者がapacheになっている場合。
PHP更新時やApacheインストール時に権限が変更される場合があります。
対処方法:
# 現在の所有者確認
sudo ls -ld /var/lib/php/session/
# 所有者をnginxに変更
sudo chown -R nginx:nginx /var/lib/php/session/
# 権限確認
sudo ls -ld /var/lib/php/session/
その後、PHP-FPMとNginxを再起動します。
sudo systemctl restart php-fpm nginx
ブラウザキャッシュをクリアして再度ログインしてみてください。
◆セキュリティに関する推奨事項
・ディレクトリ構成のセキュリティ上の利点
本記事で採用した、アプリケーションコードとデータを分離するディレクトリ構成には、複数のセキュリティ上の利点があります。
構成の比較:
| 項目 | 統合型(/var/www/nextcloud) | 分離型(推奨) |
|---|---|---|
| アプリコード | /var/www/nextcloud | /var/www/html/nextcloud |
| ユーザデータ | /var/www/nextcloud/data | /var/nextcloud_data |
| Webroot外配置 | ✗ | ✓ |
| 権限管理 | 一括 | 細分化可能 |
| バックアップ効率 | 低 | 高 |
| アップグレード安全性 | 低 | 高 |
セキュリティ上のメリット:
1. Webroot外へのファイル配置
データディレクトリ(/var/nextcloud_data)がWebroot外に配置されているため、万が一Nginxの設定ミスやセキュリティ脆弱性が存在しても、ユーザのアップロードファイルに直接Webでアクセスされるリスクが低減されます。
2. 権限管理の細分化
- アプリケーションコード(
/var/www/html/nextcloud):所有者(nginx)が読み書き実行、グループとその他は読み取り実行のみ(755) - データディレクトリ(
/var/nextcloud_data):所有者(nginx)が読み書き実行、グループは読み取り実行のみ、その他はアクセス不可(750)
権限を最小限に保つことで、攻撃面を削減できます。
3. バージョンアップグレードの安全性向上
Nextcloudをアップグレードする際、アプリケーションコードのみを更新します。
ユーザデータは別ディレクトリにあるため、アップグレード失敗時のデータ損失リスクが低減されます。
4. パフォーマンス最適化
ユーザデータを別のストレージに配置することで、高速なSSDにはアプリケーションコードを、大容量のHDDにはユーザデータを配置するなど、ストレージの最適化が可能です。
・アクセス制限の強化
ファイアウォール設定
Nextcloudへのアクセスを特定のIPアドレスからのみに制限することを推奨します。
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.0.2.100" port protocol="tcp" port="443" accept'
sudo firewall-cmd --reload
HTTPSの強制
Nextcloudへは必ずHTTPS接続で、有効なSSL証明書を使用してアクセスしてください。
・管理者パスワード
初期セットアップで設定する管理者パスワードは、十分に複雑なものを使用してください。
パスワードの要件:
・定期的なバックアップ
Nextcloudデータベースとファイルストレージを定期的にバックアップしてください。
# データベースのバックアップ
sudo mysqldump -u nextcloud -p nextcloud > /backup/nextcloud_db_backup.sql
# アプリケーションコードのバックアップ
sudo tar -czf /backup/nextcloud_app_backup.tar.gz /var/www/html/nextcloud/
# ユーザデータのバックアップ
sudo tar -czf /backup/nextcloud_data_backup.tar.gz /var/nextcloud_data/
バックアップの説明:
- データベースバックアップ: Nextcloudのメタデータ(ユーザ情報、ファイルメタデータ等)
- アプリケーションバックアップ: Nextcloudプログラムコード
- データバックアップ: ユーザがアップロードした実ファイル
推奨:
データディレクトリとアプリケーションコードを分離しているため、イベント駆動でデータバックアップの頻度を増やし、アプリケーションバックアップはアップグレード前後のみ取得するなど、戦略的に効率化できます。
・2要素認証の有効化
管理者アカウントに対して2要素認証の有効化を推奨します。
- 右上のユーザメニューから「設定」をクリック
- 「セキュリティ」セクションで2要素認証を有効化
- TOTP(Time-based One-Time Password)アプリをインストール
◆まとめ
本記事では、RockyLinux9サーバへのNextcloud導入とセットアップについて説明しました。
実施内容:
- MariaDBデータベース・ユーザの作成
- PHP必要パッケージのインストール
- Nextcloudのダウンロード・展開
- Nginxの設定(アップロード制限、キャッシュ、セキュリティヘッダ)
- Webセットアップウィザードによる初期設定
- トラブルシューティング対応
得られるメリット:
- プライベートなクラウドストレージの構築
- ファイル共有・コラボレーション機能
- 完全なコントロール(データオーナーシップ)
- 拡張性(プラグインによる機能追加)
セキュリティ上の注意:
- HTTPSでの接続を強制してください
- 定期的なバックアップを実施してください
- アクセス制限をファイアウォールで設定してください
- 管理者パスワードは十分に複雑なものを使用してください
◆次のステップ
次回は「SoftEther VPN導入編」として、Webサーバと同じサーバにSoftEther VPNをインストールし、リモートアクセス環境を構築する手順を実施します。




コメント