2026.08.14 プライバシーポリシー更新しました

Nextcloud導入

スポンサーリンク
RockyLinux
この記事は約19分で読めます。
ランキングに参加しています。応援よろしくお願いします。
ブログランキング・にほんブログ村へ 人気ブログランキングへ FC2ブログランキングへ
スポンサーリンク
この記事が気に入ったら
フォローしよう
最新情報をお届けします。
  1. ◆はじめに
  2. ◆環境情報
  3. ◆Nextcloudについて
    1. ・概要
    2. ・公式ドキュメント
    3. ・主な機能
  4. ◆Nextcloud導入・セットアップ
    1. ・データベースの設定
      1. MariaDBへのログイン
      2. Nextcloud用データベースとユーザの作成
    2. ・PHP必要パッケージのインストール
      1. 必要なPHPパッケージのインストール
      2. PHP-FPM設定ファイルの確認
      3. サービスの再起動
    3. ・Nextcloudのインストール
      1. Nextcloudのダウンロードと展開
      2. Nextcloudディレクトリの設定
    4. ・Nginxの設定
      1. Nextcloud用ロケーション設定の追加
      2. Nginx設定の構文確認と再起動
    5. ・セットアップウィザード
      1. 管理者アカウントの設定
      2. ストレージとデータベースの設定
      3. セットアップの完了
      4. ダッシュボード画面の確認
      5. Nextcloud設定ファイルの修正
  5. ◆Nextcloudの基本操作
    1. ・ユーザアカウント管理
      1. ユーザアカウントの追加
    2. ・デスクトップ・モバイルアプリ連携
      1. Windowsデスクトップアプリのインストール
  6. ◆トラブルシューティング
    1. ・セットアップ時のエラー対処
      1. データベース接続エラーが表示される場合
      2. PHPエラーが表示される場合
    2. ・ログイン後のセッションエラー
  7. ◆セキュリティに関する推奨事項
    1. ・ディレクトリ構成のセキュリティ上の利点
    2. ・アクセス制限の強化
      1. ファイアウォール設定
      2. HTTPSの強制
    3. ・管理者パスワード
    4. ・定期的なバックアップ
    5. ・2要素認証の有効化
  8. ◆まとめ
  9. ◆次のステップ
    1. 関連

前回の「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の詳細な情報やトラブルシューティングについては、以下の公式ドキュメントを参照してください。

ファイル管理

  • ファイルのアップロード・ダウンロード
  • フォルダ構成の管理
  • ファイル検索機能
  • バージョン管理(ファイルの履歴保持)

ファイル共有

  • ユーザ間でのファイル共有
  • 公開リンク生成(パスワード保護可能)
  • 有効期限設定
  • 権限管理(読み取り・書き込み・削除)

ユーザ・グループ管理

  • ユーザアカウント作成・管理
  • グループの作成・管理
  • クォータ設定

拡張機能

  • カレンダー機能
  • 連絡先管理
  • プラグインによる機能拡張

セキュリティ

  • エンドツーエンド暗号化
  • 2要素認証対応
  • アクティビティログ記録
sudo mysql -u root -p
Enter password:
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文字以上、大文字・小文字・数字・記号を混在

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の設定ファイルでNginxプロセスの所有者が正しく設定されているか確認します。

sudo vi /etc/php-fpm.d/www.conf

以下の行が正しく設定されていることを確認します:

listen.owner = nginx
listen.group = nginx

正しく設定されていない場合は編集して保存します。

sudo systemctl restart php-fpm
sudo systemctl restart nginx
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のデータディレクトリを独立して作成し、適切な権限を設定します。

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外に配置することで、セキュリティとパフォーマンスが向上します。
詳細は「ディレクトリ構成のセキュリティ上の利点」を参照してください。

サイト設定ファイル(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対策、キャッシュ制御、パーミッションポリシーの設定
  • アクセス制限: 隠しファイル、設定ファイル、保護ディレクトリへのアクセスを拒否
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設定ファイルをデータディレクトリを指すように修正します。

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管理者は、Webインターフェースから新規ユーザを追加できます。

ユーザ追加手順:

  1. 右上のユーザメニューから「アカウント」をクリック
  1. 左メニューの「新規アカウント」をクリック
  1. 「新規アカウント」ウィンドウで以下の情報を入力:

必須入力項目:

  • アカウント名: ユーザのログイン名(例:user01)
  • パスワード: 初期パスワード(ユーザは初回ログイン時に変更可能)
  • Eメール: ユーザのメールアドレス(パスワードまたはEメールのいずれかが必要)
  1. 「新しいアカウントを追加する」ボタンをクリック

オプション設定:

新規ユーザは以下を設定できます:

  • 表示名: ユーザの表示名設定
  • グループメンバーシップ: ユーザが属するグループの管理
  • クォータ設定: ユーザが使用可能なストレージ容量を制限

Nextcloudは、WindowsおよびmacOS、Linuxなど複数のプラットフォーム向けデスクトップアプリを提供しています。

Windowsデスクトップアプリのダウンロード:

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

セットアップ手順:

  1. Nextcloudデスクトップアプリを起動
  2. 「ログイン」をクリック
  1. サーバアドレスにURL「https://www.example.com/nextcloud」を入力し、「次へ」をクリック
  1. ブラウザーに切り替えてアカウントに接続します
  1. アカウントに接続するための警告が表示されます。よければ「ログイン」をクリック
  1. アカウントによるアクセス許可で「アクセスを許可」をクリック
  1. アカウントに接続されるので、ブラウザーは閉じます。

同期設定:

  • 選択したローカルフォルダとNextcloudサーバが自動同期されます
  • フォルダ内のファイル変更は、自動的にサーバにアップロードされます
  • サーバ上のファイル変更は、自動的にローカルフォルダにダウンロードされます
  1. 同期をするために「接続」をクリック
  2. 同期が開始されます

その他のアプリ:

  • iOS/Android: App StoreまたはGoogle Playから「Nextcloud」アプリをダウンロード
  • Mac: Macアプリストアから「Nextcloud」デスクトップアプリをダウンロード
  • Linux: Linuxディストリビューション付属のパッケージマネージャーからインストール

確認事項:

# MariaDBの接続確認
sudo mysql -u nextcloud -p nextcloud

パスワードが正しいか確認し、接続できることを確認してください。

対処方法:

  1. MariaDBが正常に起動しているか確認:
sudo systemctl status mariadb
  1. Nextcloudユーザの権限確認:
sudo mysql -u root -p
SHOW GRANTS FOR 'nextcloud'@'localhost';
EXIT;
  1. 必要に応じて権限を再設定:
sudo mysql -u root -p
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;

PHPエラーログの確認:

sudo tail -f /var/log/php-fpm/www-error.log

よくあるエラーと対処:

エラー内容原因対処方法
Module not foundPHPモジュール未インストール必要な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

Nextcloudへは必ずHTTPS接続で、有効なSSL証明書を使用してアクセスしてください。

初期セットアップで設定する管理者パスワードは、十分に複雑なものを使用してください。

パスワードの要件:

  • 最低16文字以上
  • 大文字・小文字・数字・記号を混在
  • 辞書に載っていない組み合わせ

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要素認証の有効化を推奨します。

  1. 右上のユーザメニューから「設定」をクリック
  2. 「セキュリティ」セクションで2要素認証を有効化
  3. TOTP(Time-based One-Time Password)アプリをインストール

本記事では、RockyLinux9サーバへのNextcloud導入とセットアップについて説明しました。

・Rocky Linux 9 サーバ構築手順一覧

実施内容:

  • MariaDBデータベース・ユーザの作成
  • PHP必要パッケージのインストール
  • Nextcloudのダウンロード・展開
  • Nginxの設定(アップロード制限、キャッシュ、セキュリティヘッダ)
  • Webセットアップウィザードによる初期設定
  • トラブルシューティング対応

得られるメリット:

  • プライベートなクラウドストレージの構築
  • ファイル共有・コラボレーション機能
  • 完全なコントロール(データオーナーシップ)
  • 拡張性(プラグインによる機能追加)

セキュリティ上の注意:

  • HTTPSでの接続を強制してください
  • 定期的なバックアップを実施してください
  • アクセス制限をファイアウォールで設定してください
  • 管理者パスワードは十分に複雑なものを使用してください

次回は「SoftEther VPN導入編」として、Webサーバと同じサーバにSoftEther VPNをインストールし、リモートアクセス環境を構築する手順を実施します。

コメント

タイトルとURLをコピーしました