初めに
普段はDropBoxやGoogleDriveを使っていましたが、いずれ容量制限に引っかかることを考えると、スマホやPCのデータを集約したり、外部からアクセス可能な自前のファイルサーバーが欲しくなります。
今回はまずラズパイを使って、ホームネットワーク内
にファイルサーバーを構築する話になります。
使用するのはオープンソースのNextCloud
というソフトです。
環境
・RaspberryPi4 armv7l (固定IP設定済)
・raspbian ver.10 buster
・Docker&Docker Compose
Docker Engineのインストール
nextCloudは”直接インストール”、”SNAP版”、”Docker版”と、色々セットアップ方法がありますが、今回はdocker版を使用します。
ここでふと、「そういえばSnapがDockerと違うのはわかるけど、Aptとの違いってなんだっけ?」となったので、下記のサイトで勉強しなおしました。
「SnapとDocker」と「SnapとApt」のそれぞれの違いと使い方を徹底解説
まずDockerのインストールからですが、方法は公式そのままです。
公式ページをのぞいてみると、下記の通りちゃんとRaspbianに対応してますね。
どうやら公式でおすすめの、スクリプトファイルを使ったインストール方法があるようなので、そちらを使用します。
下記をラズパイのターミナルで実行します。
curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh ./get-docker.sh --dry-run
インストール出来たら、下記コマンドで確認します。
$ docker -v
また、Dockerコマンドの実行は毎回sudoが必要になり面倒なので、このタイミングでdockerグループに現在のユーザーを追加しておくことで、sudo付けずにDockerコマンドを実行できるようにします。
$ sudo usermod -aG docker [ユーザー名 初期ならpi等]
Docker Engineのインストール
pipでインストールできるので、下記コマンドを打つだけです。
$ sudo pip3 install docker-compose
インストールが完了したら、下記コマンドで確認します。
$ docker-compose -v
NextCloudをDockerで動かせるようにする。
外付けHDDはマウントの設定をする必要があります。
下記ページで非常に分かりやすく説明されていたので、ここでは割愛します。
マウントさえできれば、次のdocker-compose.yml内の設定で指定するだけです。
https://beightlyouch.com/blog/programming/raspberry-pi-hdd/#toc3
NextCloudをDockerで動かせるようにする。
nextcloud用にディレクトリを作成し、
docker-compose.ymlを作成して、下記を記載します。
version: '3.8'
services:
nextcloud_db:
image: yobasystems/alpine-mariadb # ラズパイで動くmariadbのイメージ
container_name: nextcloud_db
ports:
- 3306:3306 # 一旦そのままですが、外部に公開する場合は変更したほうが良いです。
volumes:
- ./db:/config
- ./db_backup:/backup
restart: always # ラズパイ再起動時に自動で起動するようにする
environment:
- MYSQL_DATABASE=nextcloud # MySQLのデータベース名です。
- MYSQL_ROOT_PASSWORD=1234 # MySQLの管理パスワードです。
- MYSQL_PASSWORD=1234 # MySQLのユーザーパスワードです。
- MYSQL_USER=nextcloud # MySQLのユーザー名です
networks:
- mynet
nextcloud:
image: nextcloud
container_name: nextcloud
ports:
- 8787:80 # 今回は8787ポートを使用して接続できるようにします。(任意)
volumes:
- ./html:/var/www/html
- /media/extrnalHdd/nextcloud:/externalHdd # 外付けHddをマウントしたディレクトリをバインド設定しておきます。(こうすると後でNextCloud内から外付けHDDをデータベースとして設定できます。)
restart: always
environment:
- MYSQL_DATABASE=nextcloud # MySQLと同じにします。
- MYSQL_PASSWORD=1234 # MySQLと同じにします。
- MYSQL_HOST=nextcloud_db # dbのコンテナ名を指定します。
- MYSQL_USER=nextcloud # MySQLと同じにします。
depends_on:
- nextcloud_db
networks:
- default
- mynet
networks:
default:
driver: bridge
ipam:
driver: default
mynet:
driver: bridge
internal: true
ipam:
driver: default
作成出来たら、docker-composeを使ってnextcloudを含んだdocker環境をスタートさせます。
$ docker-compose up -d
無事成功すれば、ブラウザからNextCloudのホーム画面にアクセスできるようになります。
ラズパイから接続する場合は下記
http://localhost:8080
他のPCから接続する場合は下記
http://【IPアドレス】:8080
無事下記のような画面が出たら、そのまま画面に沿って登録します。
これで基本的なNextCloudの環境構築は完了です!
NextCloudで外付けHDDの設定
nextCloudのホーム画面右上のアイコンから、「アプリ」を選択し、「external Storage support」を有効化します。
その後左側に「外部ストレージ」が追加されますので、設定画面で”ローカル”と”先ほどdocker-compose内でバインドした外付けHDDの場所”を設定することで、使用可能になります。
おわりに
今回はラズパイを使ってお手軽に外付けHDDをファイルサーバーを構築する方法を紹介しました。オンプレ環境の構成になりますので、外部に公開する場合はもうひと設定必要になります。