RaspberryPiでOpenMediaVault

OpenMediaVault

手のりNASを作ってみます
アクセスポイント化し外出先でも動くことを考慮

環境

ボード Raspberry Pi 3 Model B
ストレージ SanDisk Ultra microSDHC Class10 8GB
LAN 標準搭載のLAN
アクセスポイント 標準搭載のWiFi

失敗

Stretch Liteで準備するとOpenMediaVault3.0(Erasmus)のインストールでエラーが出る

以下のパッケージには満たせない依存関係があります:
 openmediavault : 依存: php5-fpm しかし、インストールすることができません
                  依存: php5-cgi しかし、インストールすることができません
                  依存: php5-cli (>= 5.6) しかし、インストールすることができません
                  依存: php5-pam しかし、インストールされようとしていません
E: 問題を解決することができません。壊れた変更禁止パッケージがあります。

Stretch LiteでPHP5はPHP7へ、MySQLはMariaDBに変わったのが原因のよう
面倒なのでJessie Liteを使用

OSの設定

Jessie Lite最終版ダウンロード先

https://downloads.raspberrypi.org/raspbian_lite/images/raspbian_lite-2017-07-05/

OS書き込み
(省略)

キーボードとマウス、モニター、LANを取り付け電源ON

raspberrypi login: pi
Password: raspberry
$ sudo raspi-config
  7.Advanced Options → A1 Expand Filesystem
  tabでFinishでreboot
raspberrypi login: pi
Password: raspberry
$ sudo apt-get update
$ sudo apt-get upgrade

キーボードレイアウト変更

$ sudo raspi-config
  4.Localisation Options
    I3 Change Keyboard Layout → Generic 105-key (Intl) PC → Other → Japanese → Japanese → The default for the keyboard layout → No compose key → No
  tabでFinish
$ sudo reboot

インストール

OpenMediaVault

参考: OpenMediaVault
参考: OpenMediaVault Documentation
Version Codename確認
Releases — OpenMediaVault Documentation

raspberrypi login: pi
Password: raspberry
$ echo "deb http://packages.openmediavault.org/public erasmus main" | sudo tee -a /etc/apt/sources.list.d/openmediavault.list
$ wget -O - http://packages.openmediavault.org/public/archive.key | sudo apt-key add -
$ sudo apt-get update
$ sudo apt-get install openmediavault-keyring
$ sudo apt-get install openmediavault
Postfix Configuration → No configuration ⏎
Configuring mdadm → 空白にして ⏎
ProFTPD configuration → standalone ⏎
Configuring openmediavault ⏎
$ sudo apt-get install resolvconf
$ sudo omv-initsystem

OMVExtras

参考: OMVExtras
For OMV 3.x (erasmus)

$ sudo wget http://omv-extras.org/openmediavault-omvextrasorg_latest_all3.deb
$ sudo dpkg -i openmediavault-omvextrasorg_latest_all3.deb
$ sudo apt-get update

動作確認

IP確認

$ ifconfig

ローカルネット内の他のPCから

http://<ifconfig eth0のaddr>
User: admin
Password: openmediavault

成功してれば、LANと電源以外取り外し

パーティション

OpenMediaVaultは「デバイス」を作り、「デバイスに共有フォルダ」を作り、各機能で「共有フォルダを指定」することで機能するように見える
デバイスの選択はUSBメモリを挿せば機能するが、ここでは/dev/mmcblkのパーティションを切ってMicroSDHCの一部をデバイスにしてみる

他のPCでUbuntu GPartedを使いパーティションを切る

Openmediavault gparted.png

設定 > システム

一般設定

※ Nginxのwebサーバを80番ポートにしたいので管理画面は8080番

Web管理

ポート: 80 → 8080
セッションタイムアウト: 5 → 0
保存
# エラーが出るが気にしない
右上▼ > ログアウト
 http://<ifconfig eth0のaddr>:8080
 ユーザー名: admin
 パスワード: openmediavault

Web管理者パスワード

パスワード: 0000
保存
右上▼ > ログアウト
 http://<ifconfig eth0のaddr>:8080
 ユーザー名: admin
 パスワード: 0000

日付&時刻

タイムゾーン: Etc/UTC → Japan
NTPサーバを使用する: OFF → ON
時刻サーバ: pool.ntp.org → ntp.nict.jp
保存

ネットワーク

一般

ホスト名: raspberrypi → nas
保存

インタフェース

追加 > イーサネット
一般設定
名前: eth0
IPv4 >
メソッド: DHCP
IPv6 >
メソッド: 無効
保存
右上▼ > 再起動
http://nas.local:8080
ユーザー名: admin
パスワード: 0000

通知

有効化: ON
SMTPサーバ: smtp.gmail.com
SMTPポート: 25 → 587
SSL/TSLセキュアコネクションを利用する: ON
送信者のメールアドレス: 自分のGmailアドレス
認証の要求: ON
ユーザ名: 自分のGmailアドレス
パスワード: 自分のGmailのパスワード(二段階認証の場合はアプリパスワードを使用)
プライマリメール: 自分のGmailアドレス
保存

電源管理

モニタリング: ON → OFF
保存

モニタリング

有効化: ON → OFF
保存

証明書

SSH

追加 > 作成
Create SSH certificate コメント: key

アップデート管理

設定

プレリリースされたアップデート: ON
コミュニティーによるメンテナンスアップデート: ON
保存

アップデート

チェック
全て✔
アップグレード

OMV-Extras

リポジトリ

OMV-Extras.org Testing > 編集 > 有効: ON > 保存

プラグイン

※プラグイン全てを入れ、要らないものをアンインストールする手順踏むと管理画面の読み込みに時間が掛かる現象があり使い物にならないので不要なものは入れない

チェックで更新
チェック✔してインストール

3個はエラーが出るのでインストールしない

openmediavault-iscsitarget
openmediavault-nut
openmediavault-virtualbox

使いそうにない以下もインストールしない

openmediavault-duplicati
openmediavault-couchpotato
openmediavault-deluge
openmediavault-jdownloader
openmediavault-nzbget
openmediavault-pyload
openmediavault-radarr
openmediavault-sabnzbd
openmediavault-sickbeard
openmediavault-sonarr
openmediavault-mumble
openmediavault-subsonic
openmediavault-vdr
openmediavault-vdr-extras
openmediavault-vdr-vnsiserver
openmediavault-dnsmasq
openmediavault-domoticz
openmediavault-letsencrypt
openmediavault-wakealarm

設定 > ストレージ

ファイルシステム

/dev/mmcblk0p3を選択 > マウント

フラッシュメモリ

SSHかShell in a boxを有効後に設定

OpenMediaVaultの指示に従わない
現状は

PARTUUID=45534226-01  /boot           vfat    defaults          0       2                                  
PARTUUID=45534226-02  /               ext4    defaults,noatime  0       1                                  
# a swapfile is not a swap partition, no line here                                                         
#   use  dphys-swapfile swap[on|off]  for that                                                             
tmpfs           /tmp            tmpfs   defaults        0       0                                          
# >>> [openmediavault]                                                                                     
/dev/disk/by-id/mmc-SU08G_0xd2bc1f42-part3 /srv/dev-disk-by-id-mmc-SU08G_0xd2bc1f42-part3 ext4 defaults,no$
/srv/dev-disk-by-id-mmc-SU08G_0xd2bc1f42-part3/mydata /export/mydata none bind,nofail 0 0                  
# <<< [openmediavault]

noatimeとnodiratimeの設定
参考: 革命の日々! relatimeがどこで実装されているのか調べてみた

$ sudo nano /etc/fstab
PARTUUID=45534226-02  /               ext4    defaults,noatime  0       1
を
PARTUUID=45534226-02  /               ext4    defaults,noatime,nodiratime  0       1

swap無効化の設定
参考: Raspberry Pi -RASPBIAN- のswapを無効化 - Qiita

$ sudo insserv -r dphys-swapfile

設定 > アクセス権の管理

ユーザー

ユーザー > pi選択 > 編集

パスワード: 0000
パスワードの確認: 0000
保存

共有フォルダ

共有フォルダ > 追加

名前: mydata
デバイス: /dev/mmcblk0p3 [3.01 MiB (1%) used, 1.78 GiB available]
パス: mydata/
パーミッション: みんな:読み/書き
保存

共有フォルダ > mydata選択

特権
PiユーザーとPiグループの「読み/書き」にチェック > 保存

設定 > サービス

Apple Filing

設定

有効: OFF → ON
保存

共有 > 追加

有効: ON
共有フォルダ: mydata [on /dev/mmcblk0p3, mydata/]
コメント: 空白
パスワード: 空白
読み込み専用: OFF
ゲストログイン: OFF → ON
ゲストのパーミッション: OFF → ON
TimeMachineサポート: OFF → ON
保存

DLNA

設定

有効: ON
名前: MiniDLNA Server on OpenMediaVault → MiniDLNA
ポート: 8200
Strict DLNA: OFF
TiVoサポート: ON
ルートコンテナ: 標準
ログレベル: エラー
保存

共有 > 追加

共有フォルダ: mydata [on /dev/mmcblk0p3, mydata/]
コンテンツタイプ: すべてのメディア
保存

確認

http://nas.local:8200

FTP

設定

有効: ON
ポート: 21
最大クライアント: 5
ホストあたりの最大コネクション: 2
最大ログイン試行回数: 1 → 4
タイムアウト: 1200 → 0
パッシブFTP: ON 49152 65534
保存

共有 > 追加

有効: ON
共有フォルダ: mydata [on /dev/mmcblk0p3, mydata/]
保存

確認(FFFTPの場合)

ホスト名(アドレス): nas.local
ユーザー: pi
パスワード: 0000

iTunes/DAAP

設定

有効: ON
ライブラリ名: %h - iTunes/DAAP
ポート: 3689
共有フォルダ: なし → mydata [on /dev/mmcblk0p3, mydata/]
認証: OFF
保存

確認(iTunesの場合)

ライブラリをnas - iTunes/DAAP

MySQL

設定

有効: OFF → ON
ネットワークを有効にする: ON
ポート: 3306
バインドアドレス: 127.0.0.1 → 0.0.0.0
AIOを無効化: OFF
SQL管理サイト > 有効: ON
保存

確認

http://nas.local:8080/mysql
ユーザーID: root
パスワード: (空白)
サーバ: localhostMySQL
言語: 日本語

NFS

設定

有効: OFF → ON
サービス番号: 8
保存

共有 > 追加

共有フォルダ: mydata [on /dev/mmcblk0p3, mydata/]
クライアント: 空白
特権: 読み/書き
その他のオプション: subtree_check,insecure
保存

Nginx

設定

有効: OFF → ON
保存

プール > 追加

名前: www-data
ユーザー: www-data
グループ: www-data
エラーの表示: OFF
HTMLエラー: ON
最大実行時間(s): 30
メモリ上限(MB): 128
最大POSTサイズ(MB): 8
最大アップロードサイズ(MB): 2
最大子プロセス: 5
サービス開始: 2
最小スペアサーバ: 1
最大スペアサーバ: 3
最大リクエスト: 0

サーバ > 追加

有効: ON
ディレクトリ: mydata [on /dev/mmcblk0p3, mydata/]
ルートの使用: ON
公開ディレクトリを使用します: OFF
ホストタイプ: ポート
ポート: 80
デフォルトサーバ: OFF
SSLを有効にする: OFF
PHPを有効にする: ON
PHP-FPMプール: www-data
デフォルトの設定: ON
インデックスの使用: ON
index.html: ON index.php: ON
Autoindex: OFF .htaccess: OFF
ログを有効化: ON → OFF
ヘッダバッファサイズ: 8k

確認

$ sudo nano /export/mydata/index.php
<?php phpinfo(); ?>
http://nas.local

Remote Desktop

OFFにする項目が無いので常にON?

確認(Windows10の場合)

スタートメニューのプログラムリスト → Windowsアクセサリ → リモートデスクトップ接続
コンピュータ: nas.local
オプションの表示 > 画面 > 画面の設定 > 1280x720ピクセル
接続
Module: sesman-Xvnc
username: pi
password: 0000

SFTP

設定

有効: OFF → ON
ポート: 222 → 22
パスワード認証: ON
公開鍵認証: OFF → ON
AllowGroups: OFF
保存

確認(WinSCPの場合)

転送プロトコル: SFTP
ホスト名: nas.local
ポート番号: 22
ユーザー名: pi
パスワード: 0000

ShairPort(AirPlay)

設定

有効: OFF → ON
名前: (空白) → nas

Shell in a box

設定

有効: OFF → ON
Linkify: none
ビープ: OFF
ターミナル設定 > 有効: OFF
保存

確認

https://nas.local:4200
https接続なのでブラウザの例外で許可
nas login: pi
pi@nas's password: 0000

SMB/CIFS

設定

有効: OFF → ON
ワークグループ: WORKGROUP
説明: %h server
ローカルマスタブラウザ: ON
時刻サーバ: OFF
ホームディレクトリ > 有効: OFF
参照可能: ON
保存

共有 > 追加

有効: ON
共有フォルダ: mydata [on /dev/mmcblk0p3, mydata/]
パブリック: ゲストのみ
読み込み専用: OFF
参照可能: ON
ACLを継承: ON
パーミッションを継承: OFF
ごみ箱: OFF
ドットファイルを非表示: ON → OFF
拡張属性: OFF
DOS属性を書き込む: OFF
許可するホスト: (空白)
拒否するホスト: (空白)
監査: OFF
その他オプション: (空白)

確認

エクスプローラで\\nas

SNMP

設定

有効: OFF
保存

SSH

設定

有効: ON
ポート: 22
rootアカウントでのログインの許可: ON
パスワード認証: ON
公開鍵認証: ON
TCP転送: OFF
圧縮: OFF

確認(TeraTermの場合)

ホスト: nas.local
TCPポート: 22
ユーザ名: pi
パスフレーズ: 0000

TFTP

設定

有効: OFF → ON
ポート: 69
共有フォルダ: なし → mydata [on /dev/mmcblk0p3, mydata/]
ブロックサイズ: 512
リトライタイム: 1000000
新しいファイルを許可: OFF → ON

確認(tftpd64の場合)

未検証

WebDAV

設定

有効: OFF → ON
共有フォルダ: mydata [on /dev/mmcblk0p3, mydata/]
Filesize upload limit(MiB): 2 → 10000

確認

http://nas.local:8080/webdav
ユーザ名: admin
パスワード: 0000

アンチウィルス

設定

有効: OFF → ON
データベースチェック: 24 → 1
検疫: なし → mydata [on /dev/mmcblk0p3, mydata/]
ログファイルの整形: OFF
Portable Executable(PE)のスキャン: ON
OLE2のスキャン: ON
HTMLのスキャン: ON
PDFのスキャン: ON
ELFのスキャン: ON
圧縮ファイルのスキャン: ON
壊れた実行ファイルを検出: OFF
PUAの検出: OFF
アルゴリズム的検出: ON
ディレクトリのシンボリックリンクをたどる: OFF
ファイルのシンボリックリンクをたどる: OFF
保存

印刷中(AirPrint)

いまいち快適に動かないのでOFF

設定 > 診断

システム情報

CPU使用率: 0-50%程度
メモリ使用率: 65%程度

システムログ

エラーログ

snmpd[1445]: error on subcontainer 'ia_addr' insert (-1)
対処: サービス > SNMP を一度有効に、再度無効でエラー消えた

アクセスポイント化

標準搭載のWiFiをアクセスポイント化してみます

参考: Using your new Raspberry Pi 3 as a WiFi access point with hostapd

wlan0をDHCPから外す

$ sudo nano /etc/dhcpcd.conf

末尾に追記

denyinterfaces wlan0 

wlan0のIP固定

$ sudo nano /etc/network/interfaces

修正

# The loopback network interface                                                                    
auto lo                                                                                             
iface lo inet loopback                                                                              
                                                                                                    
# eth0 network interface                                                                            
auto eth0                                                                                           
allow-hotplug eth0                                                                                  
iface eth0 inet dhcp                                                                                
iface eth0 inet6 manual                                                                             
    pre-down ip -6 addr flush dev $IFACE

# wlan0 network interface
allow-hotplug wlan0
iface wlan0 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    network 10.0.0.0
    broadcast 10.0.0.255

hostapd

インストール

$ sudo apt-get install hostapd

新規作成

$ sudo nano /etc/hostapd/hostapd.conf
interface=wlan0
driver=nl80211
ssid=なす
hw_mode=g
channel=11
ieee80211n=1
wmm_enabled=1
ht_capab=[HT40][SHORT-GI-20][DSSS_CCK-40]
macaddr_acl=0
auth_algs=1
ignore_broadcast_ssid=0
wpa=2
wpa_key_mgmt=WPA-PSK
wpa_passphrase=19191818
rsn_pairwise=CCMP

書き換え

$ sudo nano /etc/default/hostapd
#DAEMON_CONF=""
を
DAEMON_CONF="/etc/hostapd/hostapd.conf"

dnsmasq

インストール

$ sudo apt-get install dnsmasq

新規作成

$ sudo mv /etc/dnsmasq.conf /etc/dnsmasq.conf.orig
$ sudo nano /etc/dnsmasq.conf
interface=wlan0
listen-address=10.0.0.1
bind-interfaces
server=8.8.8.8
domain-needed
bogus-priv
dhcp-range=10.0.0.50,10.0.0.150,12h

iptables

書き換え

$ sudo nano /etc/sysctl.conf

コメント削除

net.ipv4.ip_forward=1

実行

$ sudo sh -c "echo 1 > /proc/sys/net/ipv4/ip_forward"

新規作成

 $ sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
 $ sudo iptables -A FORWARD -i eth0 -o wlan0 -m state --state RELATED,ESTABLISHED -j ACCEPT
 $ sudo iptables -A FORWARD -i wlan0 -o eth0 -j ACCEPT
 $ sudo sh -c "iptables-save > /etc/iptables.ipv4.nat"

書き換え

$ sudo nano /etc/rc.local

exit 0の前に追記

iptables-restore < /etc/iptables.ipv4.nat

再起動

$ sudo reboot

確認

モニタ、キーボードからアクセス

ユーザ名 パスワード
pi 0000

LANからアクセス

インターフェイス IP ユーザ名 パスワード
Nginx http://nas.local - -
OpenMediaVault http://nas.local:8080 admin 0000
WebDAV http://nas.local:8080/webdav admin 0000
MySQL http://nas.local:8080/mysql root -
Shell in a box https://nas.local:4200 pi 0000
FTP nas.local pi 0000
SFTP nas.local pi 0000
SSH nas.local pi 0000
RemoteDesktop nas.local pi 0000
DLNA http://nas.local:8200 - -
SMB \\nas - -

アクセスポイントからアクセス

SSID パスワード
なす 19191818
インターフェイス IP ユーザ名 パスワード
Nginx http://10.0.0.1 - -
OpenMediaVault http://10.0.0.1:8080 admin 0000
WebDAV http://10.0.0.1:8080/webdav admin 0000
MySQL http://10.0.0.1:8080/mysql root -
Shell in a box https://10.0.0.1:4200 pi 0000
FTP 10.0.0.1 pi 0000
SFTP 10.0.0.1 pi 0000
SSH 10.0.0.1 pi 0000
RemoteDesktop 10.0.0.1 pi 0000
DLNA http://10.0.0.1:8200 - -
SMB \\nas - -

不具合の対処

OpenMediaVaultのシステム > ネットワーク > インタフェースで変更を加えるとinterfacesの記述が変更されてしまう
手動で修正

$ sudo nano /etc/network/interfaces
# The loopback network interface                                                                    
auto lo                                                                                             
iface lo inet loopback                                                                              
                                                                                                    
# eth0 network interface                                                                            
auto eth0                                                                                           
allow-hotplug eth0                                                                                  
iface eth0 inet dhcp                                                                                
iface eth0 inet6 manual                                                                             
    pre-down ip -6 addr flush dev $IFACE

# wlan0 network interface
allow-hotplug wlan0
iface wlan0 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    network 10.0.0.0
    broadcast 10.0.0.255

検討項目

  • アクセスポイント化するとAirPrintが機能してないように見える
  • SNMPとTFTPの価値が見えてない