AD

Nextcloudで始める!簡単プライベートクラウド構築ガイド

Nextcloudで始める!簡単プライベートクラウド構築ガイドのサムネイル画像 Ubuntu
記事内に広告が含まれています。
スポンサーリンク

写真、動画、大切なファイル…データの保管場所、もっと安心・安全に、そして自由にしたいと思いませんか?
この記事では、Nextcloudを使って、あなただけのプライベートクラウドを構築する方法を分かりやすく解説します。

スポンサーリンク

Nextcloudとは

Nextcloudについて少し紹介します。Wikipediaの情報によると

Nextcloudは、オンラインストレージの作成と使用のためのクライアント・サーバ型のソフトウェアである。機能的にはDropboxに似ているが、Dropboxはオフプレミスのオンラインストレージサービスは提供しない。Nextcloudはフリーかつオープンソースなので、誰でも自分のプライベートサーバ英語版)にインストールして利用することができる。

https://ja.wikipedia.org/wiki/Nextcloud

簡単にまとめると、Google DriveやDropboxみたいなクラウドストレージを自分のパソコン(サーバー)で動かすことができるサーバーソフトウェアです。

導入環境

Nextcloudを導入する環境を紹介します。

  • multipass
  • Ubuntu 24.04 LTS
  • 2コアCPU
  • 4GBメモリ
  • 64GBストレージ

この記事では検証環境に仮想マシンの「multipass」を使用しました。multipass以外でもUbuntu24.04が動く環境であれば何でもいい(はず)です。

また、Ubuntuのバージョンに関しては、LTSのものであればインストールできると思います。(検証はしていません。)

ストレージはクラウドストレージに預けられるデータの容量になるので、自分の環境に合わせてストレージサイズを変更する必要があります。

Crucial(クルーシャル) P3 1TB 3D NAND NVMe PCIe3.0 M.2 SSD 最大3500MB/秒 CT1000P3SSD8JP メーカー5年保証 国内正規代理店品
仕事も、外出先での作業も、ゲームも、ベーシックな起動速度では通用しません。その点、Crucial P3 SSDはベーシックをはるかに超越しています。 SATA2の約6倍の速さのNVMe性能と最大4TB3のストレージ容量を備えたP3は、旧来の...
【Amazon.co.jp限定】Western Digital ウエスタンデジタル WD Blue 内蔵 HDD ハードディスク 4TB CMR 3.5インチ SATA 5400rpm キャッシュ256MB PC WD40EZAX-AJP エコパッケージ 【国内正規取扱代理店】
■互換性をテスト済み Western Digital の F.I.T. Lab で数百回ものシステムテストや多数のプラットフォームテストを行い、Western Digital のドライブがお客様の環境で適切に機能することを確認しています。低...

環境構築

環境を構築していきます。

まずは、毎度お馴染みのコマンドをターミナルで実行します。

$ sudo apt update

では、順番に必要なソフトをインストールしていきます。

Apache2をインストール

Apacheをインストールしていきます。

$ sudo apt install apache2

インストールできたので、実際にアクセスすることができるかを確認します。
ブラウザを起動してサーバのIPアドレスを入力します。
サーバのIPアドレスは、以下のコマンドを実行することで確認できます。

$ ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue state UNKNOWN group default qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
    inet6 ::1/128 scope host noprefixroute 
       valid_lft forever preferred_lft forever
2: ens3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    link/ether 52:54:00:7c:cf:27 brd ff:ff:ff:ff:ff:ff
    altname enp0s3
    inet 192.168.64.10/24 metric 100 brd 192.168.64.255 scope global dynamic ens3
       valid_lft 86128sec preferred_lft 86128sec
    inet6 fd63:50f6:7781:63e2:5054:ff:fe7c:cf27/64 scope global dynamic mngtmpaddr noprefixroute 
       valid_lft 2591955sec preferred_lft 604755sec
    inet6 fe80::5054:ff:fe7c:cf27/64 scope link 
       valid_lft forever preferred_lft forever

アクセスするとApacheのテストページが表示すると思います。

Apacheのテストページ

これでApacheのインストールが完了しました。

PHP-FPMをインストール

php-fpmをインストールします。

$ sudo apt install php8.3-fpm

Apacheに必要なモジュールを有効化します。

$ sudo a2enmod proxy_fcgi setenvif

PHP-FPMの設定をApacheで有効化します。

$ sudo a2enconf php8.3-fpm

設定を反映させるためにサービスを再起動します。

$ sudo systemctl restart php8.3-fpm apache2

これでPHP-FPMのインストールが完了しました。

MySQLのインストールとデータベースの設定

MySQLをインストールします。

$ sudo apt install mysql-server

インストールが完了したら、Nextcloudで使うデータベースの設定をしていきます。
まず、MySQLにログインします。

$ sudo mysql

次に、Nextcloud用のデータベースユーザーを作成します。

セキュリティのため、 password の部分は実際には強力なパスワードを使用してください。

> CREATE USER 'nextuser'@'localhost' IDENTIFIED BY 'password';

データベースユーザーを作成できたのでNextcloud専用のデータベースも作成します。

> CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;

作成したユーザーに、Nextcloud用データベースへの権限を与えます。

> GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextuser'@'localhost';

最後に、権限の変更を適応させます。

> FLUSH PRIVILEGES;

作業が完了したので、MySQLからログアウトします。

> quit;

これでMySQLのインストールとデータベースの設定が完了しました。

Nextcloudのインストール

Nextcloudを構築していきます。
PHPとPHPモジュールをインストールしていきます。

$ sudo apt -y install php8.3-mbstring php8.3-intl php8.3-gd php8.3-zip php8.3-bz2 php8.3-mysql php8.3-bcmath php8.3-gmp php8.3-opcache php8.3-imagick php8.3-curl php8.3-soap php8.3-redis php-pear php-json php-apcu libmagickcore-6.q16-7-extra redis-server unzip

PHP-FPMの設定ファイルを作成し、編集します。
それぞれのパラメーターは記事最後の方に

$ sudo nano /etc/php/8.3/fpm/pool.d/nextcloud.conf

[nextcloud]
user = www-data
group = www-data

listen.owner = www-data
listen.group = www-data
listen = /run/php/nextcloud.sock
listen.allowed_clients = 127.0.0.1

pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35

env[HOSTNAME] = $HOSTNAME
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[TMP] = /tmp
env[TMPDIR] = /tmp
env[TEMP] = /tmp

php_value[session.save_handler] = files
php_value[session.save_path]    = /var/lib/php/sessions


php_value[max_execution_time] = 3600
php_value[memory_limit] = 512M
php_value[post_max_size] = 2G
php_value[upload_max_filesize] = 2G
php_value[max_input_time] = 3600
php_value[max_input_vars] = 2000
php_value[date.timezone] = Asia/Tokyo

php_value[opcache.memory_consumption] = 128
php_value[opcache.interned_strings_buffer] = 32
php_value[opcache.max_accelerated_files] = 10000
php_value[opcache.revalidate_freq] = 1
php_value[opcache.save_comments] = 1
php_value[opcache.jit] = 1255
php_value[opcache.jit_buffer_size] = 128M

設定が終わったら設定を適用します。

$ sudo systemctl restart php8.3-fpm

NextcloudをApacheに設定していきます。ダウンロード→展開→アクセス権変更の順で作業をしていきます。
最初にダウンロードします。

$ wget https://download.nextcloud.com/server/releases/latest.zip
ls
latest.zip

続いて、ダウンロードしたファイルを展開します。

$ unzip latest.zip
$ ls
latest.zip nextcloud

最後にフォルダーをコピーしてアクセス権を変更します。

$ sudo cp -r nextcloud /home/remylog/www/remylog_blog/
$ sudo chown -R www-data:www-data /home/remylog/www/remylog_blog/nextcloud/

Apacheの設定をしていきます。
アクセスルートなどの設定ファイルを作成します。

$ sudo nano /etc/apache2/conf-available/nextcloud.conf
Timeout 3600
ProxyTimeout 3600
DirectoryIndex index.php index.html
Header set Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"

<VirtualHost *:80>
    DocumentRoot /home/remylog/www/remylog_blog/nextcloud
    ServerName domain.com
</VirtualHost>

<Directory "/home/remylog/www/remylog_blog/nextcloud">
    Options FollowSymLinks MultiViews
    AllowOverride All
    Require all granted

    <FilesMatch \.(php|phar)$>
        SetHandler "proxy:unix:/run/php/nextcloud.sock|fcgi://localhost"
    </FilesMatch>
</Directory>

ServerName domain.com の部分の domain.com のところは、自分のドメイン名を入力して下さい。
ローカルで実行する場合は、.lan にするといいと思います。

最後に設定を適応して終了です。

$ sudo a2enconf nextcloud
$ sudo a2enmod headers
$ sudo a2enmod rewrite
$ sudo systemctl restart apache2

Nextcloudの設定

Nextcloudをインストールできたのでアクセスしてみます。
ブラウザを起動してサーバのIPアドレスを入力します。

ブラウザ上にサーバーのIPアドレスを入力している。

アクセスできたら必要な項目を入力します。

項目内容
ログインログイン時のユーザー名
パスワードログイン時のパスワード
データフォルダー/home/remylog/www/remylog_blog/nextcloud/data
データベースアカウントデータベース作成時のアカウント名
データベースのパスワードデータベース作成時のパスワード
データベース名データベース作成時のデータベース名
データベースのホスト名localhost
必要な項目を入力中

「インストール」をクリックしたら推奨アプリを選択します。必要なものにチェックを入れて「推奨アプリをインストール」をクリックします。

推奨アプリを選択

インストールが終わったらNextcloudのポップアップを閉じます。

Nextcloudの説明ウィンドウを閉じる
Nextcloudのホーム画面

これでセットアップ完了です。

PHP-FPMのパラメーター

PHP-FPMのパラメーターについて少し説明していきます。このパラメーターはNextcloudのパフォーマンスにも影響があるのでサーバースペックと使用状況に合わせて調節する必要があります。

php_value[max_execution_time] = 3600
php_value[memory_limit] = 512M
php_value[post_max_size] = 2G
php_value[upload_max_filesize] = 2G
php_value[max_input_time] = 3600
php_value[max_input_vars] = 2000
php_value[date.timezone] = Asia/Tokyo

php_value[opcache.memory_consumption] = 128
php_value[opcache.interned_strings_buffer] = 32
php_value[opcache.max_accelerated_files] = 10000
php_value[opcache.revalidate_freq] = 1
php_value[opcache.save_comments] = 1
php_value[opcache.jit] = 1255
php_value[opcache.jit_buffer_size] = 128M

下の方にこのような内容が書かれていると思います。この中から重要な項目を解説していきます。

php_value[memory_limit] = 512M はPHPプロセスが使用できるメモリの上限です。メモリに余裕がある場合は少し上げてもいいと思います。

php_value[post_max_size] = 2G はPOSTリクエストの最大サイズです。

php_value[upload_max_filesize] = 2G はアップロードファイルの最大サイズです。

php_value[max_execution_time] = 3600 はPHPの実行時間の上限です。ここの値を0にすると待ち時間が無制限になります。

これらの設定をすることで快適にNextcloudを使うことができます。

セキュリティ&セットアップ警告の設定

セキュリティ&セットアップ警告の設定を確認します。右上のアイコンをクリックして「管理者設定」をクリックします。

管理者設定を選択

そして、「概要」をクリックします。

セキュリティ&セットアップ警告でエラーを確認

今回は以下のエラーを修正していきます。

・安全ではないHTTP経由でのサイトへのアクセス。代わりにHTTPSを要求するようにサーバーを設定することを強くお勧めします。そうしないと「クリップボードにコピー」や「service workers」のような重要なウェブ機能が動作しません! 詳細については、ドキュメント↗を参照してください。

・サーバーにはメンテナンスウィンドウの開始時間が設定されていません。これは、リソースを多く使用する日常のバックグラウンドジョブが、メインの利用時間中にも実行されることを意味します。利用者がこれらの重いタスクによる負荷の影響を受けにくくするために、低い利用時間に設定することをおすすめします。 詳細については、ドキュメント↗を参照してください。

・One or more mimetype migrations are available. Occasionally new mimetypes are added to better handle certain file types. Migrating the mimetypes take a long time on larger instances so this is not done automatically during upgrades. Use the command `occ maintenance:repair --include-expensive` to perform the migrations.

・いくつかの欠落しているオプションのインデックスを検出しました。データベースのパフォーマンスを向上させるために、(Nextcloudまたはインストールされたアプリケーションによって)新しいインデックスが追加されることがあります。インデックスの追加には時間がかかり、一時的にパフォーマンスが低下することがあるため、アップグレード時には自動的には行われません。インデックスが追加されると、それらのテーブルへのクエリが速くなるはずです。インデックスを追加するには、`occ db:add-missing-indices` コマンドを使用してください。インデックスが不足: "mail_messages_strucanalyz_idx" テーブル内の "mail_messages", "mail_class_creat_idx" テーブル内の "mail_classifiers", "mail_acc_prov_idx" テーブル内の "mail_accounts", "mail_alias_accid_idx" テーブル内の "mail_aliases", "systag_by_objectid" テーブル内の "systemtag_object_mapping", "mail_messages_mb_id_uid_uidx" テーブル内の "mail_messages", "mail_smime_certs_uid_email_idx" テーブル内の "mail_smime_certificates", "mail_trusted_senders_idx" テーブル内の "mail_trusted_senders", "mail_coll_idx" テーブル内の "mail_coll_addresses". 詳細については、ドキュメント↗を参照してください。

・データベースがトランザクションファイルロックに使われています。パフォーマンスをあげるには、可能であればメモリーのキャッシュを設定してください。 詳細については、ドキュメント↗を参照してください。

・メモリキャッシュが設定されていません。パフォーマンスを向上させるため、利用可能であればメモリキャッシュを設定してください。 詳細については、ドキュメント↗を参照してください。

・ご使用のシステムには、デフォルトの電話地域が設定されていません。これは、プロフィール設定で国コードなしの電話番号を有効にするために必要です。国コードなしの電話番号を許可するには、"default_phone_region" を地域の ISO 3166-1 コードとともに設定ファイルに追加してください。 詳細については、ドキュメント↗を参照してください。

・メールサーバーの設定が未設定または未確認です。「基本設定」で設定を行ってください。その後、フォームの下にある「メールを送信」ボタンで設定を確認してください。 詳細については、ドキュメント↗を参照してください。

最初に、データベース関係のエラーを修正していきます。以下のコマンドを実行します。

$ sudo -u www-data php --define apc.enable_cli=1 /home/remylog/www/remylog_blog/nextcloud/occ db:add-missing-indices

実行したら一旦Apacheを再起動します。

$ sudo systemctl reload apache2

再起動後、概要をチェックするとエラーが減っていることがわかります。

ここからはNextcloudの設定ファイルを編集していきます。

$ sudo nano /home/remylog/www/remylog_blog/nextcloud/config/config.php
<?php
$CONFIG = array (
'instanceid' => 'ocagt9fqxk5k',
'passwordsalt' => 'KJbBWV/y6bzvlIg3fIgZfPDJBl1aVc',
'secret' => 'Wgm4v4033Vv1FwzEPeTATxaDAQLZpEmQLn1vDrXfqg6tLp2B',
'trusted_domains' => 
array (
0 => '192.168.64.3',
),
'datadirectory' => '/home/remylog/www/remylog_blog/nextcloud/data',
'dbtype' => 'mysql',
'version' => '30.0.2.2',
'overwrite.cli.url' => 'http://192.168.64.3',
'dbname' => 'nextcloud',
'dbhost' => 'localhost',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'nextuser',
'dbpassword' => 'password',
'installed' => true,
<ーー ここに追加していく ーー>
);

「安全ではないHTTP経由でのサイトへのアクセス。…」のエラーは以下のコードを追加します。
ただ、ローカル環境でこれを有効にするとアクセスできなくなる場合があるので注意してください。

'overwriteprotocol' => 'https',

「ご使用のシステムには、デフォルトの電話地域が設定されていません。」のエラーは以下のコードを追加します。

'default_phone_region' => 'JP',

「データベースがトランザクションファイルロックに使われています。」のエラーは以下のコードを追加します。

'memcache.locking' => '\OC\Memcache\Redis',

「メモリキャッシュが設定されていません。」のエラーは以下のコードを追加します。

'memcache.local' => '\OC\Memcache\APCu',

「サーバーにはメンテナンスウィンドウの開始時間が設定されていません。」のエラーは以下のコードを追加します。

'maintenance_window_start' => 1,

これでNextcloudの設定ファイルの編集が終わりました。以下に編集後の設定ファイルを載せておきます。
※黄色のマーカー部分が今回追加した内容

<?php
$CONFIG = array (
'instanceid' => 'ocagt9fqxk5k',
'passwordsalt' => 'KJbBWV/y6bzvlIg3fIgZfPDJBl1aVc',
'secret' => 'Wgm4v4033Vv1FwzEPeTATxaDAQLZpEmQLn1vDrXfqg6tLp2B',
'trusted_domains' => 
array (
0 => '192.168.64.3',
),
'datadirectory' => '/home/remylog/www/remylog_blog/nextcloud/data',
'dbtype' => 'mysql',
'version' => '30.0.2.2',
'overwrite.cli.url' => 'http://192.168.64.3',
'dbname' => 'nextcloud',
'dbhost' => 'localhost',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'nextuser',
'dbpassword' => 'password',
'installed' => true,
'overwriteprotocol' => 'https',
'default_phone_region' => 'JP',
'maintenance' => false,
'memcache.locking' => '\OC\Memcache\Redis',
'memcache.local' => '\OC\Memcache\APCu',
'maintenance_window_start' => 1,
);

変更を保存したらApacheを再起動して適応します。

$ sudo systemctl restart apache2

そのほかのエラーも修正していきます。

「One or more mimetype migrations are available.」のエラーは以下のコードを追加します。

$ sudo -u www-data php /home/remylog/www/remylog_blog/nextcloud/occ maintenance:repair --include-expensive

「メールサーバーの設定が未設定または未確認です。」のエラーを修正していきます。
この設定を行う前にユーザーにメールアドレスを登録します。アカウントのアイコンをクリックして「個人情報」をクリックします。そしてメールの部分に受け取れるメールアドレスを入力します。

メールアドレスの登録

これは管理画面から修正していきます。管理者設定 → 基本設定 に移動します。

下の方にスクロールして「メールサーバー」の項目をチェックします。ここに必要な内容を記入して「メールを送信」をクリックします。

メールサーバの設定

テストメールが来たら完了です。
これで一通りのエラーの修正が終わりました。これ以外のエラーがある場合は、Nextcloudの公式ドキュメントやほかのブログを参考にして修正してください。

まとめ

今回は、Nextcloudの構築方法を紹介しました。内容をおさらいすると、

  • Apache2をインストール
  • PHP-FPMをインストール
  • MySQLのインストールとデータベースの設定
  • Nextcloudのインストール
  • Nextcloudの設定
  • セキュリティ&セットアップ警告の設定

です。
最後の「セキュリティ&セットアップ警告の設定」は、環境によって出るエラーが変わるので少し難しいところです。Nextcloudの公式ドキュメントやほかのブログを参考にして修正していきましょう!

参考リンク

Ubuntu 24.04 : Apache2 : インストール : Server World
Ubuntu 24.04 Apache2 インストール
Ubuntu 24.04 : Apache2 : PHP + PHP-FPM の設定 : Server World
Ubuntu 24.04 Apache2 PHP + PHP-FPM の設定
Ubuntu 24.04 : MySQL 8.0 : インストール : Server World
Ubuntu 24.04 MySQL 8.0 インストール
Ubuntu 24.04 : NextCloud : インストール : Server World
Ubuntu 24.04 NextCloud インストール
Download and install Nextcloud
Download and install Nextcloud and use the desktop clients to keep your files synchronized between your server and your ...
Installation and server configuration — Nextcloud latest Administration Manual latest documentation

コメント

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