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
- vlc
手順
手順といってもそんなにやることないです。
上記に記載したリンク先から 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接続時のデータ転送周りの設定です。
下記ファイルの mtu
と mru
の値をそれぞれ 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です。