ラズパイにLAMP環境とNextCloudをインストールしてクラウドサーバ化する手順を紹介しています。
これで容量1.3TB(増設可)、月額使用料無料、グループアプリも使えて、公開サーバには置けない××なデータも格納可能なクラウドをGETできます。
なお、ラズパイのセットアップとUSBハードディスクにルートファイルシステムの移行が終わっている前提で書いてます。
そっちも別の記事で紹介したいと思います。
ラズパイクラウドサーバ作成記事一覧(予定)
- ラズパイのセットアップとHDD化
- LAMP環境とNextCloudのセットアップ
- 無料DDNSでドメイン取得とLAN内からドメイン名でアクセス可能にする
- LAN外からアクセスできるようにする
- SSL化(オレオレ証明書→無料証明書)
- クライアント側(Windows, iPhone)のアプリ導入とデータの同期。
参考URL
How to Install NextCloud on Raspberry Pi 3
RaspberryPi3とNextCloudでメディアサーバを構築する
NextCloudでファイル共有【その1】サーバインストール手順
作成環境
- ハード:Raspberry Pi2とUSB接続のHDD
- OS:raspbian stretch LITE 2019-04-08
- Webサーバ:Apache2
- データベース:MariaDB
- PHP:Ver. 7.0
- NextCloud: Ver. 15.0.0
必要なパッケージのインストール
以下のコマンドで必要なパッケージをまるっとインストールします。
このほかに、wget, unzip, bzip2, curlが必要だけどセットアップの時にインストールしてるので割愛。(スクリーンショットには入ってます)
$ sudo apt install mlocate apache2 libapache2-mod-php mariadb-client mariadb-server php php-common php-curl php-gd php-mbstring php-mysql php-xml php-zip php-intl php-apcu php-redis php-http-request

NextCloud用データベースの作成
MariaDBの初期設定
以下のコマンドで対話的なデータベースの初期化を実施します。
$ sudo mysql_secure_installation
英語で色々聞かれますが、以下のように答えればオケ
Enter current password for root (enter for none): エンター
Set root password? [Y/n] y
New password: (パスワードを入力する)
Re-enter new password: (再度パスワードを入力)
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] n (大事!SSHでリモートアクセスするのでここは”n”)
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
実際の実行画面


NextCloud用のデータベースを作成する
ここからMariaDBにNextCloud用のデータベースを作成していきます。
MariaDBはデータベースソフトで、MySQLと同じものだと思ってもらえば大丈夫です。
起動コマンドもmysqlでおんなじだし作ってる人も同じだったりします。
では、さっそくユーザーrootとしてMariaDBを起動します。
$ sudo mysql -u root -p
Enter password: (初期設定で作成したMariaDBのrootパスワード)

無事に起動できるとプロンプトが
MariaDB [(none)]>
に変わります。
ここからsqlのコマンドでNextCloud用にデータベース作成、ユーザー作成、ユーザーにデータベースの操作権限付与を行います。
データベースの作成
以下sqlのコマンドでデータベースを作成。データベース名をここでは nextcloud としました。
データベース名は好きな名前を付けてください。
> CREATE DATABASE nextcloud;
最後の;も必要なので入力すること。
忘れてエンターを押してしてしまっても慌てず「 ; 」だけを入力して再度エンターすれば大丈夫です。
コマンドは大文字で書くのが慣例っぽいが小文字でも入力可能。
以下実際の操作画面ではコマンドを小文字で入力してます。

データベース操作用のユーザー作成
データベース操作用のユーザーを以下の前提で作成します。ユーザー名とパスワードは推測しにくいものにしてください。
ユーザー名: your_username
パスワード: your_password
コマンドは以下
> CREATE USER ‘your_username’@’localhost’ IDENTIFIED BY ‘your_password’ ;

登録したユーザーの確認
> SELECT user, host FROM mysql.user;

作成したユーザーにデータベース操作権限付与
先ほど作成したユーザにデータベースの操作権限を付与します。
データベース名 “nextcloud”、ユーザー名”your_username” は自分で設定したものに読み換えてください。
> GRANT ALL PRIVILEGES ON nextcloud.* TO ‘your_username’@’localhost’;

変更内容の適用
今までの変更内容をデータベースに書き込みます。
> FLUSH PRIVILEGES;

MariaDBの終了
終了してコマンドプロンプトに戻ります。
> QUIT

NextCloudのインストール
最新版ではなくVer15を入れます。
NextCloudの最新版にはPHP 7.1が必要ですが、現時点(19年4月末)のRasbianのPHPは7.0が最新の為です。
NextCloudを公式サーバから入手
$ cd /var/www
$ sudo wget https://download.nextcloud.com/server/releases/nextcloud-15.0.0.zip

解凍(インストール)
/var/www/nextcloudにファイルを解凍します。
$ sudo unzip nextcloud-15.0.0.zip

/var/www/nextcloud ディレクトリの所有者をwww-dataに変更
Apacheからnextcloudのディレクトリを操作できるように所有者と所有グループを変更します。
$ sudo chown -R www-data:www-data nextcloud
$ ls -al

クラウドのデータ保存先を作成
デフォルトのデータ保存先はnextcloudディレクトリ内のdataフォルダになります。
今回はHDDのデータ保存用パーティションを/media/dataにマウントしているので、その中にnextcloudフォルダを作成してクラウドデータの保存先とします。
データフォルダ内には.ocdataファイルが必要なので作成しているのと、データフォルダをapacheから操作できるように所有者を変更してます。
$ cd /media/data
$ sudo mkdir nextcloud
$ sudo touch nextcloud/.ocdata
$ sudo chown -R www-data:www-data nextcloud/
$ ls -al nextcloud/

以上でNextCloudのインストールは終了です。
Apacheの設定
NextCloud用設定ファイルの作成
nextcloud用バーチャルホスト設定ファイルを作成します。
$ sudo vim /etc/apache2/sites-available/nextcloud.conf

設定ファイルの中身
以下のように作成して保存します。
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/nextcloud
Alias /nextcloud "/var/www/nextcloud/"
<Directory "/var/www/nextcloud/">
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
Require all granted
SetEnv HOME /var/www/nextcloud
SetEnv HTTP_HOME /var/www/nextcloud
</Directory>
ErrorLog ${APACHE_LOG_DIR}/nextcloud_error_log
CustomLog ${APACHE_LOG_DIR}/nextcloud_access_log common
</VirtualHost>

設定の有効化
nextcloud.confを有効化してデフォルトのコンフィグを無効化します。
$ sudo a2ensite nextcloud.conf
$ sudo a2dissite 000-default.conf

アパッチの再起動
設定変更を反映させるためにアパッチを再起動します。
エラーが無ければ特に表示はありません。
$ sudo systemctl restart apache2

NextCloudのページにアクセス
http://ラズパイのIP/ にウェブブラウザでアクセスします。
以下のようにNextCloudの初期設定画面が表示されれば成功です。

初期設定の入力
データフォルダとデータベースの設定で入力したユーザー名、パスワード、データベース名、ホスト名を入力します。ポートは入力しなくても大丈夫。
管理者アカウントは上記とは無関係にユーザー名とパスワードを設定すればOK。

「セットアップを完了します」のボタンを押して暫く待つ。1~2分ぐらい。
設定が終わると日本語がやや不自由な表示になるので×で消す。

これでひとまずLAN内からIPアドレスでクラウドにアクセスできるようになりました。
この後、本格的に使用できるように以下の設定を実施していきたいと思います。
- 無料DDNSでドメインを取得。LAN内からドメイン名でアクセスできるようにする。
- LAN外からアクセスできるようにする。
- SSLを設定してhttpsでアクセスできるようにする。
- クライアント側(Windows, iPhone)のアプリ導入とデータの同期。