Raspberry Pi Desktop に ownCloud をインストールし自宅クラウドストレージを構築する
子供が習い事をしていると、必死に打ち込んでいる姿を見るとついつい写真や動画を撮影してしまいますよねー
筆者の子供もサッカースクールに通っていて、試合のたびに写真や動画を撮影しています。
ただ1つ困ったことが・・・
近年はカメラやスマホに内臓されたカメラの画質がよくなった分、写真や動画のサイズも大きくて、仲の良い父兄の方々との共有にいつも苦労していました。
SNS での共有もいいのですが、4K動画などはそれも難しく、オンラインストレージ(以下、クラウドストレージと呼びます)は無料版だと容量が不足し、かと言って、写真や動画の共有のためだけに有料のクラウドストレージと契約するのも嫌なので、自作クラウドストレージを構築することに決定。
その方法は、余っていたパソコンに Raspberry Pi Desktop をインストールし、それにクラウドストレージを構築いたします。
ですので、今回は Raspberry Pi Desktop を使い、自宅のパソコンをクラウドストレージ化する手順を解説したいと思います。
環境紹介
簡単ではありますが、クラウドストレージを構築する環境を紹介したいと思います。
クラウドストレージを構築するパソコンには、静的 IP アドレス(プライベート)を設定しています。
そのため、インターネットからクラウドストレージを操作するため、ONU の設定も追加いたします。
Disk は HDD です。
SSD も考えたのですが、レスポンスは重要ではないので家で転がっていた 1TB の HDD を搭載しています。
クラウドストレージの構築
今回、クラウドストレージを構築するために ownCloud という無料のソフトウェアを導入します。
ownCloud を簡単に説明すると、オンプレミスの専用 Web サーバなどにクラウドストレージを構築することでファイル共有ができるアプリケーションです。
と、いうことで、今回の目的(写真や動画の共有)に一致していますので、ownCloud を使ったクラウドストレージの構築手順を解説いたします。
パッケージのインストール
まず、はじめに、必要なパッケージをインストールします。
Web サーバーを構築するため、Webサーバーソフトウェアの Apache を、また、ownCloud は PHP と JavaScript で組まれているため、PHP をインストールします。
なお、ウィキペディアでは、「各種データベース管理システムに対応している。」と説明されていますので、データベースには MariaDB を採用いたします。
では、Apache のインストールから開始します。
Raspberry Pi Desktop を起動し、ターミナルを開きます。
また、Apache をインストールするため、以下のコマンドを実行します。
sudo apt install apache2
次に、PHP をインストールするため、以下のコマンドを実行します。
sudo apt install php7.3 php7.3-curl php7.3-dom php7.3-gd php7.3-intl php7.3-mbstring php7.3-mysql php7.3-zip
次に、MariaDB をインストールするため、以下のコマンドを実行します。
sudo apt install mariadb-server
設定ファイルの編集
続いて、設定ファイルの編集を実施します。
ownCloud 用の設定ファイルを作成するため、以下のコマンドを実行します。
cd /etc/apache2/sites-available/
sudo vi owncloud.conf
次に、作成した ownCloud 用の設定ファイルに設定値を追加します。
以下が追加した設定値です。
Alias /tamaocloud "/var/www/html/owncloud/"
<Directory /var/www/html/owncloud/>
Options +FollowSymlinks
AllowOverride All
<IfModule mod_dav.c>
Dav off
</IfModule>
SetEnv HOME /var/www/html/owncloud
SetEnv HTTP_HOME /var/www/html/owncloud
</Directory>
次に、PHP の設定ファイルを変更するため、以下のコマンドを実行します。
sudo vi /etc/php/7.3/apache2/php.ini
次に、アップロードサイズなどの設定値を変更します。
以下が変更した設定値です。
upload_max_filesize = 2M → 1024M
max_file_uploads = 20 → 100
post_max_size = 8M → 1024M
次に、シンボリックリンクの作成とモジュールの有効化を実施するため、以下のコマンドを実行します。
sudo a2ensite owncloud.conf
sudo a2enmod rewrite
sudo a2enmod headers
次に、Apache を再起動するため、以下のコマンドを実行します。
sudo systemctl restart apache2
データベースの作成
続いて、データベースの作成を実施します。
MariaDB にアクセスするため、以下のコマンドを実行します。
sudo mysql -u root
次に、データベースの作成とユーザ権限を設定するため、以下の SQL を実行します。
CREATE DATABASE IF NOT EXISTS DB_OwnCloud;
GRANT ALL PRIVILEGES ON DB_OwnCloud.* TO 'root'@'localhost' IDENTIFIED BY 'dbtamaopassword';
データベース名やユーザー名など、環境にあわせて変更してください。
筆者の環境では、 データベース名 は「DB_OwnCloud」を、ユーザー名には「root」を設定しています。
ownCloud の構築
続いて、ownCloud の構築をおこないます。
ソフトウェアを入手するため、以下のコマンドを実行します。
cd /var/www/html/
sudo wget https://download.owncloud.org/community/owncloud-complete-20210721.tar.bz2
次に、圧縮ファイルを解凍するため、以下のコマンドを実行します。
sudo tar xvf owncloud-complete-20210721.tar.bz2
次に、ソフトウェアが入った圧縮ファイルを削除するため、以下のコマンドを実行します。
sudo rm -f owncloud-complete-20210721.tar.bz2
ソフトウェアが入った圧縮ファイルが不要の場合のみ削除します。
別の環境で流用する場合などは、保管しておいても問題ありません。
次に、データフォルダやセッションフォルダの作成、また、フォルダのアクセス権を設定するため、以下のコマンドを実行します。
sudo mkdir /var/www/html/owncloud/data
sudo chown www-data:www-data /var/www/html/owncloud/data
sudo chmod 750 /var/www/html/owncloud/data
sudo chmod 777 /var/www/html/owncloud
sudo mkdir /var/lib/php/session
sudo chmod 777 /var/lib/php/session
コマンド実行後に、パソコンの再起動、もしくは Apache の再起動を実施します。
パソコンの再起動後、ownCloud へ Web ブラウザから接続すると、初期設定画面が表示されます。
適切な値を設定し、[セットアップを完了] をクリックします。
[ユーザー名] と [パスワード] は、新規で管理者アカウントを設定します。
また、データベースの設定では、「データベースの作成」で作成したデータベース用のユーザーやデータベース名を設定します。
なお、[データーフォルダー] は、デフォルトで表示されている値で問題ありません。
クラウドストレージの検証
クラウドストレージの構築が完了しましたので、プライベートネットワーク内でクラウドストレージの検証を実施します。
ownCloud の初期設定が完了すると、ownCloud ログイン画面が表示されます。
[ユーザーまたはメールアドレス] と [パスワード] を入力し、[ログイン] をクリックします。
[ユーザーまたはメールアドレス] と [パスワード] には、「ownCloud の構築」で設定した「ユーザー名」と「パスワード」を入力します。
ownCloud にログインできました。
また、ローカルのファイルをアップロードすることができました。
同一ネットワーク上の別のパソコンからも ownCloud へのログインができ、アップロードしたファイルの確認もできました。
ownCloud は、正常に機能しています。
インターネット対応
ownCloud として機能していますが、インターネット経由でクラウドストレージにアクセスすることができません。
プライベートネットワーク内だけで活用するのであればそれでも問題はないのですが、今回の場合、外部からアクセスが必須要件なため、ポートを開放し、インターネット経由でクラウドストレージにアクセスする設定を追加します。
HG8045Q にログインし、[転送ルール] → [ポートマッピング設定] を開きます。
また、画面上部に配置された [新規作成] をクリックし、ポートマッピング設定を追加します。
画面下部に配置された [新規作成] をクリックすると、[プロトコル] などが設定できるようになります。
次に、ownCloud の設定ファイルを変更するため、以下のコマンドを実行します。
sudo vi /var/www/html/owncloud/config/config.php
ポートの開放はできましたが、インターネット経由でクラウドストレージ(グローバル IP アドレス)へアクセスしてもエラーになるため、その対応となります。
次に、プライベート IP アドレスが設定されている箇所を、グローバル IP アドレスに置き換えます。
外部からのクラウドストレージの検証
ポート開放とグローバル IP アドレスへの対応が完了しましたので、インターネット経由でクラウドストレージの検証を実施します。
グローバル IP アドレスへアクセスすると ownCloud ログイン画面が表示されます。
[ユーザーまたはメールアドレス] と [パスワード] を入力し、[ログイン] をクリックします。
ownCloud ログイン画面が表示されましたので、インターネット経由でもクラウドストレージにアクセスできています。
インターネット経由でも ownCloud にログインできました。
[sample.xlsx] もダウンロードできました。
Android(スマホ)からもクラウドストレージにアクセスできています。
iPhone(スマホ)からもクラウドストレージにアクセスできています。
まとめ
以上が、自宅のパソコンに ownCloud をインストールし、クラウドストレージ化する手順となります。
いかがでしたでしょうか。
今回の例では、自宅のパソコンをクラウドストレージ化することで、約 1TB のクラウドストレージを運用することができました。
それにより、パブリックなクラウドストレージの制限から解放されますので、かなり自由に使うことができるようになります。
運用時間やアクセス、ファイルサイズなど、色々な制約を自分で設定できますので自由度が高く使い勝手がよいと思います。
また、ownCloud は、ネットで情報を探せば 2~3時間で構築できてしまうので、そのあたりの情報量の多さもメリットだと思います。
情報量が少ないと、構築のハードルは上がってしまいますよねー
あと、クラウドストレージなので当然だとは思いますが、ownCloud も Web ブラウザがあればデバイスに依存しな点もいいですね。
ただし、いい事ばかりではありません。
フル稼働すれば、電気代はそれなりにかかります。筆者は低電力のパソコンにクラウドストレージを構築したため、1ヶ月フル稼働しても電気代は300~400円ぐらいですが、消費電力が大きいパソコンの場合は・・・ゾッとします。
それでも、大容量のクラウドストレージを契約するよりはコストを抑えられるとは思いますが・・・どうなんでしょう。
今後の課題としては、DDNS と SSL への対応です。
共有する人が増えた場合、限定した人しか使わないとはいえ、グローバル IP アドレスをさらし、また、暗号化しないで使い続けるのは恐怖です。
※本稿の投稿後に執筆した DDNS と SSL への対応手順です。よろしければこちらもご覧ください。
もう1つの課題は、セキュリティです。
セキュリティ対策をせずにが外部に公開した場合、大変なことがおきると思いますので、これも近いうちに対応いたします。
※本稿の投稿後に執筆したセキュリティへの対応手順です。よろしければこちらもご覧ください。
あとは、パフォーマンスも・・・ まだまだやることがありました。
次は、パフォーマンスの改善方法を解説したいと思います。
最後までお読みいただきありがとうございました。
では。