Raspberry Pi 3でファイルサーバ兼iTunesサーバを作る

Raspberry PiとUSB HDDで家庭用サーバを作るにあたって、設定した内容のメモ。

用意するもの

  • Raspberry Pi 3 Model B
  • microSDカード 32GB
  • USB電源アダプタ、USB-microUSBケーブル(2.4A対応)
  • HDMIディスプレイ、HDMIケーブル
  • USBキーボード
  • USB HDD
  • スピーカー

Raspbian Jessie Liteのダウンロード

公式サイトのダウンロードページから、Raspbianをダウンロードする。 今回GUIは不要なので、Liteを選択した。

Win32DiskImagerでmicroSDカードに書き込む

公式サイトから、Win32DiskImagerをダウンロードし、インストールする。 これを使い、RaspbianのイメージをmicroSDカードに書き込む。

Raspberry piを起動

microSDカードを入れ、HDMIディスプレイ、USBキーボードを接続した後、microSDケーブルからUSB電源に繋ぐ。 ログインコンソールが表示されるので、デフォルトアカウントのpi/raspberryでログインする。

raspi-config

Raspberry Piには設定用コマンドとしてraspi-configが用意されている。

$ sudo raspi-config

上のコマンドで表示される設定画面から、以下の設定を行う。

1 Expand FileSystem
2 Change User Password
5-2 Change Timezone
5-4 Change Wifi Country

1を行うことで、microSDカードの容量すべてがルートに割り当てられるようになる。

$ df -h

無線LANの設定

Raspberry Pi 3にはIEEE 802.11 b/g/n 2.4GHzの無線LANアダプタがついているので、これを使うように設定する(802.11a 5GHzには対応していないことに注意)。

まず、Wifiをスキャンして繋ぎたいSSIDを探す。

$ sudo iwlist wlan0 scan

SSIDが見つかったら、対応するパスフレーズと合わせて設定する。 ここで、設定ファイルにパスフレーズがコメントとして書き込まれるので、必要に応じて消しておく。

$ sudo sh -c 'wpa_passphrase SSID PASSPHRASE >> /etc/wpa_supplicant/wpa_supplicant.conf'
$ sudo vi /etc/wpa_supplicant/wpa_supplicant.conf

固定IPアドレスを使うようにネットワーク設定を変更する。

$ sudo vi /etc/network/interfaces
allow-hotplug wlan0
#iface wlan0 inet manual
iface wlan0 inet static
address 192.168.0.2
netmask 255.255.255.0
gateway 192.168.0.1
    wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf

ネットワークを再起動し、IPアドレスが割り当てられていること、ゲートウェイに接続できることを確認する。

$ sudo /etc/init.d/networking restart
$ ifconfig
$ ping 192.168.0.1

パッケージアップデート

最初に、リポジトリを日本のサーバに変えておくとよい。

$ sudo vi /etc/apt/sources.list
#deb http://mirrordirector.raspbian.org/raspbian/ jessie main contrib non-free rpi
deb http://ftp.jaist.ac.jp/raspbian/ jessie main contrib non-free rpi
# Uncomment line below then 'apt-get update' to enable 'apt-get source'
#deb-src http://archive.raspbian.org/raspbian/ jessie main contrib non-free rpi

apt-getコマンドでパッケージを最新のものにアップデートする。

$ sudo apt-get update
$ sudo apt-get upgrade

USB HDDをマウント

NTFSでフォーマットされたUSB HDDを接続する。

まず、ntfs-3gパッケージをインストールする。

$ sudo apt-get install ntfs-3g

次に、lsblkコマンドで接続したHDDのUUIDを調べる。

$ sudo lsblk -f

マウントするディレクトリを作成し、/etc/fstabにUSB HDDを追加する。 ここでは、全ユーザが読み書きできるよう、デフォルトのパーミッションを777/666にしている。

$ sudo mkdir /mnt/usb1
$ sudo vi /etc/fstab
UUID=5C9C8E069C8DDAC2 /mnt/usb1 ntfs-3g dmask=000,fmask=111 0       0
$ sudo reboot

再起動して、HDDが正常にマウントされていることを確認する。

$ ls -al /mnt/usb1

Sambaのインストール

Windowsからファイル共有できるように、Sambaをインストールする。

まず、sambaパッケージをインストールする。

$ sudo apt-get install samba

次に、設定ファイルに共有したいディレクトリの設定を追記する。

$ sudo vi /etc/samba/smb.conf
[usb1]
   comment = usb1
   path = /mnt/usb1
   public = yes
   writable = yes
   printable = no

最後に、Windowsエクスプローラから\\192.168.0.2にアクセスし、共有されたディレクトリが見えているか確認する。

forked-daapdのインストール

iTunesサーバとして音楽をPCで再生(DAAP)、Raspberry Piで再生(MPDまたはDACP)できるように、forked-daapdをインストールする。

まず、リポジトリを追加し、forked-daapdパッケージをインストールする。

$ sudo vi /etc/apt/sources.list
deb http://www.gyfgafguf.dk/raspbian jessie/armhf/

$ sudo apt-get update
$ sudo apt-get install forked-daapd

設定ファイルに音楽ファイルの置かれたディレクトリを書き、サービスを再起動するとファイルのスキャンが行われる。

$ sudo vi /etc/forked-daapd.conf
        # Directories to index
        #directories = { "/srv/music" }
        directories = { "/mnt/usb1/music/mp3" }

$ sudo /etc/init.d/forked-daapd restart
$ tail -f /var/log/forked-daapd.log

Windows上のiTunesを起動し、Raspberry PiのDAAPサーバを参照できるようになっているか確認する。

また、必要に応じてMPDクライアントまたはDACPクライアントをインストールし、Raspberry Piに繋いだスピーカーから音楽を流せるか確認する。 Androidであれば、次のアプリケーションが使える。

最後に、起動時に自動実行されるようにしておく。

$ sudo systemctl enable forked-daapd.service

netdataのインストール

ブラウザからRaspberry PiのCPU利用率等を見れるように、モニタリングツールnetdataもインストールしてみる。

必要なパッケージをインストールした後、netdataをgitで取得しインストールする。

$ sudo apt-get install zlib1g-dev uuid-dev libmnl-dev gcc make git autoconf autogen automake pkg-config
$ git clone https://github.com/firehol/netdata.git --depth=1
$ cd netdata/
$ sudo ./netdata-installer.sh

インストールが終わったら、ブラウザからhttp://192.168.0.2:19999/にアクセスする。 アクセスした際のスクリーンショットを次に示す。

f:id:inaz2:20160417160126p:plain

最後に、起動時に自動実行されるようにしておく。

$ sudo cp system/netdata.service /etc/systemd/system/
$ sudo systemctl enable netdata.service

関連リンク