LoginSignup
10
9

More than 1 year has passed since last update.

[NextColoud] ラズパイを使って外付けHDDで無料のファイルサーバー構築

Posted at

初めに


普段はDropBoxやGoogleDriveを使っていましたが、いずれ容量制限に引っかかることを考えると、スマホやPCのデータを集約したり、外部からアクセス可能な自前のファイルサーバーが欲しくなります。

今回はまずラズパイを使って、ホームネットワーク内にファイルサーバーを構築する話になります。

使用するのはオープンソースのNextCloudというソフトです。

環境


・RaspberryPi4 armv7l (固定IP設定済)
・raspbian ver.10 buster
・Docker&Docker Compose
image.png
image.png
image.png

Docker Engineのインストール


nextCloudは”直接インストール”、”SNAP版”、”Docker版”と、色々セットアップ方法がありますが、今回はdocker版を使用します。

ここでふと、「そういえばSnapがDockerと違うのはわかるけど、Aptとの違いってなんだっけ?」となったので、下記のサイトで勉強しなおしました。
「SnapとDocker」と「SnapとApt」のそれぞれの違いと使い方を徹底解説

まずDockerのインストールからですが、方法は公式そのままです。
公式ページをのぞいてみると、下記の通りちゃんとRaspbianに対応してますね。
image.png

どうやら公式でおすすめの、スクリプトファイルを使ったインストール方法があるようなので、そちらを使用します。
image.png

下記をラズパイのターミナルで実行します。

 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の環境構築は完了です!
image.png

NextCloudで外付けHDDの設定


nextCloudのホーム画面右上のアイコンから、「アプリ」を選択し、「external Storage support」を有効化します。
その後左側に「外部ストレージ」が追加されますので、設定画面で”ローカル”と”先ほどdocker-compose内でバインドした外付けHDDの場所”を設定することで、使用可能になります。
image.png

おわりに


今回はラズパイを使ってお手軽に外付けHDDをファイルサーバーを構築する方法を紹介しました。オンプレ環境の構成になりますので、外部に公開する場合はもうひと設定必要になります。

10
9
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
10
9