RaspberryPiでどうにかAirVideoHD Serverを立てたかった

無理でした ;(

RaspberryPiだけでは無理でした ;(

最新のAirVideoHD Serverを走らせるには64bitのOSが必要です

現状RaspberryPiでは32bitベースのOSしか載せられないようで、実験的に64bitにカスタムビルドしたディストリビューションがあるようですが、おそらく実用には耐えられないと思います(多分)

というか、64bitで動かせる手順が書かれてるようなエントリーあったら教えて欲しい(比較的本気で)

セットアップ手順書こうと思ったけど、結果できてないので Air Video HDサーバーのセットアップ手順書いておく。


Air Video HD Server セットアップ

必要なもの

  • 64bitベースのLinuxマシン :)

必要なミドルウェア

手順

手順といってもそんなにやることないです。
上記に記載したリンク先から AirVideoServerHD-2.1.0-alpha1-u1.tar.bz2 をダウンロードするか、wget で直接linuxマシンに落としておきます。

~/avs $ wget https://s3.amazonaws.com/AirVideoHD/Download/AirVideoServerHD-2.1.0-alpha1-u1.tar.bz2

んで、解凍

~/avs $ tar zxvf AirVideoServerHD-2.1.0-alpha1-u1.tar.bz2

vlcパッケージが必要なのでインストールしておく

~/avs $ sudo apt-get install vlc

インストール終わったら

~/avs $ ./AirVideoServerHD

で実行するとサーバー立ち上がります。

解凍した同階層に Server.properties とかいうファイルがあるので、サーバー上で共有するディレクトリや、マルチアカウントの設定なんかはこのファイルを編集します。

コメントでExampleが既に記載されているので、中身見れば大体書き方わかると思います。


こんな感じでできれば良かったのですが、残念ながらできなかったので

[RaspberryPi] <-- VPN接続 / samba接続 -- [iPhone]
| mount / samba
[外部HDD]

みたいな感じにして、普通にsamba上の音声/動画をストリーミングするようにしました ;(

こっちもセットアップ手順残しておく

必要なミドルウェア

  • samba
  • pptpd

手順

とりあえず、sambaをインストールします。

~ $ sudo apt-get install samba

インストール後 /etc/samba/smb.conf に下記のような感じで追記しておきます

[hdd1]
   path = /mnt/hdd1
   writeable = yes
   browseable = yes
   public = yes

補足

  • [xxx]
    • マウント名
  • path = xxx
    • ファイルパス
  • browseable = yes
    • マウントディレクトリを可視化
  • public = yes
    • 公開設定

あとは念のためsambaを再起動しておきます

~ $ sudo service samba restart

続いてRaspberryPiにVPN接続するためにpptpdをインストールします

~ $ sudo apt-get install pptpd

pptpの設定

インストールできたら /etc/pptpd.conf に設定ファイルがあるので、そのファイルの最下部にコメントアウトされた下記の項目

  • localip
  • remoteip

があるので、コメントアウトを外して

/etc/pptpd.conf

# VPNサーバーのプライベートIP
localip 192.168.1.100
# よくわかってないですが、IPアドレスの範囲を繋いでるネットワーク上と合わせておく
remoteip 192.168.1.234-238,192.168.1.245

DNSの設定

/etc/ppp/pptpd-options に、ルーターのIPアドレスもしくはGoogleさんのDNS 8.8.8.8 を最下部に追記

/etc/ppp/pptpd-options

ms-dns 192.168.1.1

接続アカウントの作成

pptpにて接続を行うためのアカウントを追加していきます。
パスワードも平文で保存するため、取り扱い注意です。

/etc/ppp/chap-secrets

# Secrets for authentication using CHAP
# client»---server»-secret»-»---»---IP addresses
vpn * pass * ← これを追記

1行にスペース区切りで

  • ID
  • SERVER
  • PASSWORD
  • IP

を指定しますが、SERVERとIPに関しては面倒なのでワイルドカードで指定してます。

IPフォワード設定

Linux自体の設定でIPフォワードが初期では無効になっており、これを有効にしないとVPN接続した端末のパケットをすべて破棄してしまうらしいです。

ということで次のファイルの最下部に追記

/etc/sysctl.conf

#################################################
# VPN
net.ipv4.ip_forward=1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv4.conf.lo.send_redirects = 0
net.ipv4.conf.lo.accept_redirects = 0
net.ipv4.conf.eth0.send_redirects = 0
net.ipv4.conf.eth0.accept_redirects = 0

一番最初の net.ipv4.ip_forward=1 に関しては、既存のファイルにコメントアウトされている箇所がありますが、まとめて記載したかったので最下部に合わせて追記してます。

MTU/MRUの設定

VPN接続時のデータ転送周りの設定です。
下記ファイルの mtumru の値をそれぞれ 1280 に変更しておきます。

/etc/ppp/options

# Set the MRU [Maximum Receive Unit] value to <n> for negotiation.      pppd
# will ask the peer to send packets of no more than <n> bytes. The
# minimum MRU value is 128.  The default MRU value is 1500.  A value of
# 296 is recommended for slow links (40 bytes for TCP/IP header + 256
# bytes of data).
mru 1280
.... 中略
# Set the MTU [Maximum Transmit Unit] value to <n>. Unless the peer
# requests a smaller value via MRU negotiation, pppd will request that
# the kernel networking code send data packets of no more than n bytes
# through the PPP network interface.
mtu 1280

自分の環境だと

  • mruが80行目付近
  • mtuが185行目付近

でした

自宅にルーターある場合は

別途ルーター自体のポートフォワード(もしくはポートマッピング)設定が必要になるので、VPNサーバーのプライベートIPに対して

  • TCP/1723番
  • GRE

の設定をしておきましょう。

ここまで行えば、iPhoneもしくはPCから /etc/ppp/chap-secrets に記載したアカウントでPPTP形式のVPN接続ができると思います :)

肝心の動画見る話

あとは、iPhoneでVPN接続した状態でsambaに接続できるiOSアプリ( nPlayer))とかでプライベートIPからsambaに接続後、中のファイルをストリーミング再生すればOKです。