以前から連載している自宅サーバーにNextCloudをインストールして、自分専用のクラウドストレージを作っちゃいます!
NextCloudを使えば、PC・スマホ・タブレットなどのデバイスに関係なく、ネットが繋がるブラウザさえあれば(クライアントアプリもあり)、外出先から自宅のファイルサーバーにアクセスできますので、容量が足りないからといってクラウドストレージのサブスクに毎月課金しなくてもよくなりますよ!
NextCloudサーバーのシステム要件
まず、自宅サーバーNextCloudをインストールして、自分専用のクラウドストレージを構築するには、以下のシステム要件を満たしている必要がありますので、構築する前に要件を満たしているか確認しましょう。
対象 | 動作環境 |
---|---|
サーバOS | Red Hat Enterprise Linux 8 Ubuntu 20.04 LTS CentOS 8 |
データベース | MySQL 8.0+ or MariaDB 10.2/10.3/10.4/10.5 PostgreSQL 9.6/10/11/12/13 |
ウェブサーバ | Apache 2.4 with mod_php or php-fpm Nginx with php-fpm |
PHP Runtime | 7.3, 7.4, 8.0 |
今回はUbuntuに登録していきます!
この情報は、NextCloud日本公式サイトで確認しました。
ちなみに、公式サイトはこちらです。
また、利用できるアプリやブラウザなど、Nextcloudクライアントのシステム要件も掲載されていますので、念のためこちらも確認しておいてください。
対象 | 動作環境 |
---|---|
ブラウザ | Microsoft Edge、Mozilla Firefox、Google Chrome/Chromium、Apple Safari |
クライアントアプリ (同期アプリ) | Windows8.1+、macOS Lion(10.7)+(64ビットのみ)、 Linux(CentOS 6.5+, Ubuntu 14.04+, Fedora 21+, openSUSE 13, SUSE Linux Enterprise 11 SP3+, Debian 8 (Jessie)+, Red Hat Enterprise Linux 7) |
モバイルアプリ | Android4.x+、iOS11.x+ |
Webサーバーとデータベースは必須!
システム要件で分かるように、NextCloudにはWebサーバーとデータベースが必要です!
まだ構築していない方は、こちらの2つの記事を参考に、予め構築を済ませておいてください。
ちなみに、NextCloudはPHPで動作します。
UbuntuにNextCloudをインストール
それでは、いつものように著者が崇拝する参考サイトを見ながらインストールしていきましょう!w
NextCloudのインストールに必要なのは主に以下の3つです。
- PHPモジュールのインストール
- データベースの作成
- Webサーバーの設定
PHPモジュールのインストールと設定
NextCloudの公式サイトのシステム要件でもある通り、NextCloudはPHPで動作するので、まずは必要なPHPモジュールを全てインストールしていきます。
PHPのバージョンはご自身の環境に合わせて読み替えてください。
# apt -y install php-pear php7.4-mbstring php7.4-intl php7.4-gd php7.4-zip php7.4-mysql php7.4-bcmath php7.4-gmp php7.4-opcache php-imagick php7.4-curl php-apcu
次に、NextCloud用のPHPの設定ファイル(ここではnextcloud.conf
)を新規で作成して編集していきます。
# vi /etc/php/7.4/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 ### 以下はサーバースペックや NextCloud の使用状況に応じて要調整 php_value[max_execution_time] = 3600 php_value[memory_limit] = 2G 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.enable] = 1 php_value[opcache.memory_consumption] = 128 php_value[opcache.interned_strings_buffer] = 8 php_value[opcache.max_accelerated_files] = 10000 php_value[opcache.revalidate_freq] = 1 php_value[opcache.save_comments] = 1
今回はクラウドストレージなので、出し入れするファイルの大きさや転送時間に制限があると使い難くなるので、サーバーのスペックが許すならリソースを少し多めに確保しておくと良いでしょう。
最後に、php-fpmを再起動して完了です!
# systemctl restart php7.4-fpm
データベースの作成
次は、MariaDBにNextCloud用のデータベースとユーザーを作成します!
こちらもデータベース名やユーザー名、パスワードについてはお好みで設定してください。
# mysql > create database nextcloud; > grant all privileges on nextcloud.* to nextcloud@'localhost' identified by 'password'; > flush privileges; > exit
データベースの作成はこれだけで完了です。
Apacheの設定
我が家の自宅サーバーはNginxではなくApacheを使っていますので、ここからは参考サイトとは少し異なる設定をします。
既にWebは稼働中ですので、以前ご紹介したAlias
を利用して、新たにNextCloud配下のディレクトリをドキュメントルートとして設定します。
Apache用の設定ファイル(ここでもnextcloud.conf
)を以下のディレクトリに作成して編集します。
# vi /etc/apache2/sites-available/nextcloud.conf
記載する内容は以下のとおりです。
ディレクトリに名やパスはご自身の環境に合わせてください。
Alias /nextcloud /var/www/html/nextcloud <Directory "/var/www/html/nextcloud/"> Require all granted AllowOverride All Options FollowSymLinks MultiViews </Directory>
後は、保存して設定を有効化し、Apacheを再起動したら完了です!
# a2ensite nextcloud # systemctl restart apache2
NextCloudをダウンロード
やっと土台が完成しました。。
いよいよNextCloudをダウンロードして展開していきます。
基本的にはNextCloudの公式サイトからダウンロードしますが、自分にはとても分かりづらかったので、参考サイトの通りにwget
コマンドでダウンロードします。
以下に公開されているNextCloudサーバーの一覧があるので、最新版のURLをコピーして使います。
今回は例としてバージョン25.0.1をダウンロードします。
一旦/var/www/html/
ディレクトリに保存して、Apacheの設定ファイルでAlias
で指定したディレクトリ名で解凍し、併せて権限も変更します。
### NextCloudをダウンロード # wget https://download.nextcloud.com/server/releases/nextcloud-25.0.1.zip -P /var/www/html/ ### ZIPファイルを解凍 # unzip /var/www/html/nextcloud-25.0.1.zip -d /var/www/html/ ### 権限を変更 # chown -R www-data. /var/www/html/nextcloud
以上でNextCloudのインストールは完了です!
お疲れ様でした。
NextCloudの初期設定
まだ終わりじゃないよ~!世の中そんなに甘くない!w
最後にブラウザでWeb画面を開き、NextCloudの初期設定を行います。
例)https://<ドメイン>/nextcloud/
入力するのはこれだけ。
この後、おすすめのアプリをインストールするか聞かれますが、後からでもインストールできますので、必要なアプリだけインストールしておけば良いです。
NextCloudおすすめのアプリ
しかし、このおすすめアプリが優れもの!
実は、NextCloudはクラウドストレージの機能だけではありません!
おすすめのアプリだけでも以下のことができるようになります。
- カレンダーによるスケジュール管理
- 連絡先の管理
- メールの送受信(メーラー)
- Officeドキュメント(Microsoft Officeと互換性あり)
- チャット
- ビデオ通話
有名所のMicrosoft Office一式にTeamsやZoom、もしくはLineWorks、またはSlackのような高機能アプリを全て無料で使えるので、NextCloudを導入するだけでビジネスに必要なシステムが揃っちゃいます!
もう、至れり尽くせりですね!
これらの有料級のアプリを無料で利用できます。
NextCloudのインストールと初期設定は以上で完了です!
お疲れ様でした!
クライアントアプリを使う
NextCloudの最大のメリットは、ブラウザさえあればあらゆるデバイスで利用できるからです。
さらに、各デバイス(OS)に対応したネイティブアプリなクライアントアプリも用意されているので、ぜひ試してみてください!
- Windows
- MacOS
- Android
- iOS
- Linux
ダウンロードは各OSのアプリストア、または以下の公式サイトから!
【おまけ1】データディレクトリを変更する
構築した後に、やっぱりデータディレクトリを変更したいと思うこともありますよね?
著者の場合は、せっかくストレージ(ファイル)サーバーを構築しているので、NextCloudのデータも全てそちらで管理しようと思います。
上記の例では、/var/www/html/nextcloud/data/
になっていますが、これを/mnt/nas/nextcloud/data/
に移行します。
NextCloudでデータディレクトリを変更する場合、コマンドでメンテナンスモードにして、あーだこーだやるらしいのですが、これまた面倒なので、以前ご紹介したMariaDBのデータディレクトリを変更したのと同じ要領で、シンボリックリンクを利用した変更を行いたいと思います!
### 移行先ディレクトリを作成 # mkdir /mnt/nas/nextcloud ### 移行元のファイルを全てコピー # cp -pR /var/www/html/nextcloud/data /mnt/nas/nextcloud/data ### バックアップを兼ねて既存のディレクトリ名を変更 # mv /var/www/html/nextcloud/data /var/www/html/nextcloud/data.old ### シンボリックリンク作成 # ln -s /mnt/nas/nextcloud/data /var/www/html/nextcloud/data
【おまけ2】パーミンションエラーについて
上記でdata
ディレクトリを変更した後、以下のようにパーミッションに関するエラーが発生して、NextCloudのWeb画面にアクセスできなくなりました。
この文章の通り、パーミッションを770に変更しなさいと言われているが、言われた通りにパーミッションを770に変更してもエラーは解消されませんでした。。
調べてみると、PHPのコードの中にパーミッションをチェックしている箇所があるので、その中のパラメータを変更するとアクセスできるとのことでしたが、面倒なのでパーミッションをチェックしているif
文を全てコメントアウトしましたw
vi /var/www/html/nextcloud/lib/private/legacy/OC_Util.php
/** * Check for correct file permissions of data directory * * @param string $dataDirectory * @return array arrays with error messages and hints */ public static function checkDataDirectoryPermissions($dataDirectory) { if (\OC::$server->getConfig()->getSystemValue('check_data_directory_permissions', true) === false) { return []; } $perms = substr(decoct(@fileperms($dataDirectory)), -3); /* if (substr($perms, -1) !== '0') { chmod($dataDirectory, 0770); clearstatcache(); $perms = substr(decoct(@fileperms($dataDirectory)), -3); if ($perms[2] !== '0') { $l = \OC::$server->getL10N('lib'); return [[ 'error' => $l->t('Your data directory is readable by other users.'), 'hint' => $l->t('Please change the permissions to 0770 so that the directory cannot be listed by other users.'), ]]; } } */ return []; }
これでフル機能使えるので、めでたしめでたし。
- Original:https://minory.org/ubuntu-nextcloud.html
- Source:Minory
- Author:管理者