Raspberry Piと外付けHDDで構築するNextCloudサーバー
はじめに
この記事では、Raspberry Piにオープンソースのオンラインストレージ「NextCloud」をインストールし、外付けHDDをデータ保存領域として利用するサーバーを構築する手順を解説します。リソースの限られたRaspberry Piでも安定して動作させるためのポイントも併せて紹介します。
今回の構成
- デバイス: Raspberry Pi
- Webサーバー: Apache
- PHP: 7.2
- データベース: MariaDB
- データストレージ: 外付けHDD
1. パッケージの更新
まずはじめに、パッケージリストとインストール済みパッケージを最新の状態に更新します。
sudo apt-get update
sudo apt-get upgrade
2. ApacheとPHP7.2のインストール
NextCloudの動作に必要となるWebサーバー「Apache」と、PHPをインストールします。NextCloudが要求するPHPのバージョンとモジュールを考慮し、ondrej/php
リポジトリを追加してPHP7.2を導入します。
2-1. Apacheのインストール
sudo apt-get install -y apache2
2-2. 外部リポジトリの追加
ondrej/php
リポジトリを追加することで、様々なバージョンのPHPをインストールできるようになります。
sudo apt-get -y install apt-transport-https lsb-release ca-certificates
sudo wget -O /etc/apt/trusted.gpg.d/php.gpg [https://packages.sury.org/php/apt.gpg](https://packages.sury.org/php/apt.gpg)
sudo sh -c 'echo "deb [https://packages.sury.org/php/](https://packages.sury.org/php/) $(lsb_release -sc) main" > /etc/apt/sources.list.d/php.list'
sudo apt-get update
2-3. PHP7.2と関連モジュールのインストール
NextCloudの公式ドキュメントで推奨されているPHPモジュールを一括でインストールします。
sudo apt-get install -y php7.2 php7.2-common php7.2-cli php7.2-fpm \
php7.2-mbstring php7.2-sqlite3 php7.2-json php7.2-xml php7.2-gd \
php7.2-mysql php7.2-ldap php7.2-common php7.2-zip php7.2-intl \
php7.2-dev php-smbclient php7.2-imap php7.2-gmp php-apcu php-redis \
php-memcached php-imagick php7.2-curl libapache2-mod-php7.2
3. MariaDB(データベース)のインストールと設定
NextCloudのファイル情報などを管理するためのデータベースとしてMariaDBをインストールします。
sudo apt-get install -y mariadb-server mariadb-client
次に、NextCloudが使用するデータベースと専用ユーザーを作成します。
# MariaDBにrootでログイン
sudo mysql -u root -p
# データベースを作成
CREATE DATABASE myclouddb;
# ユーザーを作成し、パスワードを設定
CREATE USER 'mycloud'@'localhost' IDENTIFIED BY 'mycloud..';
# ユーザーにデータベースへの全権限を付与
GRANT ALL PRIVILEGES ON myclouddb.* to 'mycloud'@'localhost';
# 権限設定を反映
FLUSH PRIVILEGES;
# MariaDBからログアウト
quit;
4. NextCloudのインストール
Webサーバーの公開ディレクトリにNextCloud本体をダウンロードし、展開します。
cd /var/www/html
curl [https://download.nextcloud.com/server/releases/nextcloud-15.0.7.tar.bz2](https://download.nextcloud.com/server/releases/nextcloud-15.0.7.tar.bz2) | sudo tar -jxv
NextCloudがデータを書き込めるように、ディレクトリの所有者と権限を設定します。
cd /var/www/html/nextcloud
sudo mkdir data
sudo chown -R www-data:www-data /var/www/html/nextcloud
sudo chmod 750 /var/www/html/nextcloud/data
5. 外付けHDDの設定とデータディレクトリの移動
大容量のデータを保存するため、外付けHDDをフォーマットし、NextCloudとMariaDBのデータ保存先として設定します。
5-1. Raspberry Piの電力設定
USBポートへの供給電力を増やし、外付けHDDの動作を安定させます。
/boot/config.txt
に以下の1行を追記してください。
max_usb_current=1
5-2. HDDのフォーマット
parted
を使い、HDDをGPT形式で初期化し、ext4
のパーティションを作成します。
:::warning
この操作を行うとHDD内のデータはすべて消去されます。
:::
sudo parted /dev/sda
parted
の対話モードで、以下の手順で実行します。
-
mklabel
->gpt
と入力 -
mkpart
->mycloud
,ext4
,0%
,100%
と入力 -
print
でパーティション情報を確認 -
quit
で終了
次に、作成したパーティションをext4
でフォーマットします。
sudo mkfs.ext4 /dev/sda
5-3. HDDの自動マウント設定
/etc/fstab
に設定を追記し、OS起動時にHDDが自動でマウントされるようにします。
まず、HDDのUUIDを調べます。
sudo blkid /dev/sda
# 出力例: /dev/sda: UUID="f9184900-dcbf-4100-9202-6606354d747e" TYPE="ext4"
マウントポイントを作成し、/etc/fstab
に追記します。
sudo mkdir /media/hdd0
/etc/fstab
に以下の行を追記します。(UUIDはご自身の環境に合わせてください)
UUID=f9184900-dcbf-4100-9202-6606354d747e /media/hdd0 ext4 defaults 0 0
設定後、一度マウントを試してエラーが出ないか確認すると良いでしょう。
sudo mount -a
5-4. NextCloudデータディレクトリの準備
マウントしたHDDにNextCloud用のディレクトリを作成し、権限を設定します。
sudo mkdir /media/hdd0/data
sudo chown -R www-data:www-data /media/hdd0
sudo chmod 750 /media/hdd0/data
sudo touch /media/hdd0/.ocdata
sudo chown www-data:www-data /media/hdd0/.ocdata
この /media/hdd0/data
を、NextCloudの初期設定画面でデータディレクトリとして指定します。
5-5. MariaDBデータディレクトリの移動
データベースのデータもHDDに移動させます。
# MariaDBを停止
sudo systemctl stop mariadb
# 保存先ディレクトリを作成し、権限を設定
sudo mkdir /media/hdd0/mariadb
sudo chmod 755 /media/hdd0/mariadb
sudo chown mysql:mysql /media/hdd0/mariadb
# 既存のデータを新しい場所にコピー
sudo cp -rfp /var/lib/mysql/* /media/hdd0/mariadb/
# MariaDBの設定ファイルを編集
sudo vi /etc/mysql/mariadb.conf.d/50-server.cnf
50-server.cnf
内のdatadir
のパスを新しいディレクトリに変更します。
datadir = /media/hdd0/mariadb
# MariaDBを起動
sudo systemctl start mariadb
6. 自動起動の設定
サーバー再起動後もApacheとMariaDBが自動で起動するように設定します。
sudo systemctl enable apache2
sudo systemctl enable mariadb
7. NextCloudの初期設定
ここまで完了したら、ブラウザで http://(Raspberry PiのIPアドレス)/nextcloud
にアクセスしてください。
管理者アカウントの作成とデータベース情報の入力画面が表示されます。
-
データフォルダー:
/media/hdd0/data
を指定します。 - データベース: MariaDB/MySQLを選択し、ステップ3で設定したデータベース名、ユーザー名、パスワードを入力します。
セットアップを完了すれば、自分だけのNextCloud環境の完成です。
この記事で紹介した内容以外にも、技術情報をブログで発信しています。
MyNote
Discussion