当サイトには広告が含まれています

Fire TV Stick NASサーバー化計画

Fire TV

Fire TV Stickを活用して省電力ファイルサーバーを作ろう!

先日Fire TV Stick 4K MAX 第二世代を購入しました。我が家にはファイルサーバーがなく、PCをサーバー化すると電気代が高いなどの問題がある。そのため、省電力なFire TV Stickでファイルサーバーを自作できないか試行錯誤の結果、成功したので忘備録として残します。

fire-tv-stick-4k-max

Amazon Fire TV Stick 4K Max(マックス) | Fire TV Stick史上最もパワフル | ストリーミングメディアプレイヤー(Amazonで見る)

消費電力が非常に低いので、サーバー化に最適です!(ただし通常の使用法ではありません。)

写真は筆者のFire TV Stickです。

準備:TermuxのFire TVへのインストール&準備すべき機器

PCを利用したインストールは記事がネットに既出ですので割愛しますが、簡単に説明しますと、①PCへのadbコマンド環境インストール②Fire TVで開発者オプションを表示しデバッグ有効化③TermuxのAPKを入手する④adbコマンドでインストールする、になります。

iPhoneを利用した簡単なインストール方法は当方の記事があります(下記)。

Termuxをインストールしたらとりあえず起動してパッケージのアップデートをしておきます。

apt update && apt upgrade

他にUSBハードディスクやSSDを接続するためのOTGケーブルは有ったほうが良いです。

otg-cable

Easi-Cable OTGケーブル(Amazonで見る)

実際に使用して動作しましたが、安いので当たり外れがあるようです。だからといって、高いから必ず動作するわけではありませんし、安い商品を筆者は試しました!

※写真は筆者のOTGケーブルです

コマンドを打ちやすくするためのBluetoothキーボードはあったほうが良いです。OTGケーブルで有線接続も可能ですが、何度も抜き差しするのは面倒&接続部の故障リスクがありそうです。

apple-keyboard

筆者が愛用しているApple Wireless Keyboard。ただし現在は販売終了しています

代替品のApple Magic Keyboardはこちら(Amazonで見る)

USBハードディスクが常に稼働してしまうため、スリープ機能があるならUSBへの電気信号をオンオフできるスイッチャーがあると省電力にできます。

usb-switcher

USBスイッチ付きコネクター データ転送/充電用 節電ECOコネクター(Amazonで見る)

電源オン・オフできる商品の中でも、データ転送も対応していることが重要です。対応していないと、ハードディスクとFire TV間でデータのやりとりができなくなります!

※写真は筆者のUSBスイッチ付きコネクターです

また、Fire TVはFAT32フォーマットしか認識しません。当方の検証ではフリーソフトで2TBまでならFAT32フォーマット可能でした(Fat32Formatterの詳細情報 : Vector ソフトを探す!)。

fire-tv-nas-description

接続例です。

Fire TV StickにOTGケーブルを接続します。

OTGケーブルにMicro USBを繋いで給電します。

OTGケーブルにUSB Type-Aを繋いでハードディスクを接続します。

adbコマンドやサーバー化はメーカーの想定外の使い方ですので、自己責任でお願いします。何か生じても当方は責任を一切負いかねます。

プロトコル別の導入方法

セキュアな観点ではSSH > Samba(SMB) > WebDAVの順が良いと思っています。ただ、Fire TV Stickでは若いポート番号が使えないため、ポート指定やプロトコル等クライアントの対応状況で柔軟に選択するとよいです。また、DLNAサーバーも解説します。

例えば、WebDAVはセキュリティ面が心配ですが使い勝手は良いです。しかし、SSHトンネルを利用すればWebDAVでもセキュアに外部からアクセスできます。これについても解説します。

SSHサーバー

一般的にはNASと呼ばれませんが、SCPに対応したクライアントアプリを用いればNASライクなファイルサーバーになります。

opensshをインストールします。

apt install openssh

ユーザー名の確認と、パスワードの設定を行います。

whoami
passwd

sshサーバーを起動します。デフォルトの22番ポートは使えないため8022を指定します。

sshd -p 8022

あとはクライアントからアクセスするだけです。

WindowsであればWinSCPiPhoneであればDocuments by ReaddleがSCPに対応していますので、一般的なファイラーの感覚でアクセスできます。

.bashrcに記載すればFire TV Stick再起動後もTermux起動で自動実行されるので便利です。

nano .bashrc

SMBサーバー

sambaをインストールします。

apt install samba

設定ファイルの例があるので、ホームフォルダにコピーします。

cp $PREFIX/share/doc/samba/smb.conf.example ~/smb.conf

whoamiで確認したユーザー名を登録してパスワードも設定します(u0_a***がユーザー名)。

smbpasswd -L -c ~/smb.conf -a u0_a***

設定ファイルを編集します。

nano smb.conf

smb.conf中にsmb portsの記載があるため、ポート番号を4445に変更します。

smb ports = 4445

[internal]セクションは自由に設定してください。下記は例です。pathはFire TV Stickの内蔵ストレージにしています。

[internal]
   comment = Internal storage
   path = /storage/emulated/0
   vfs objects = aio_pthread
   aio_pthread:aio open = yes
   read only = no
   browseable = yes
   writable = yes
   guest ok = no

\\サーバー名\internal で内部ストレージにアクセス可能/内部ストレージのファイルを読み書き可能/認証が必要でゲストアクセスは拒否/高速なファイル操作を実現するため非同期I/O(aio_pthread)を有効化

sambaサーバーを起動します。

smbd -D -s ~/smb.conf

これで、クライアントからアクセスできます。上記の場合はsmb://Fire TVのIPアドレス:4445/internal/でFire TV内蔵ストレージにアクセスできます。pathを変えればOTGケーブルで接続したハードディスク等もアクセスできます。

WebDAVサーバー

まずはpythonをインストールします

apt install python

次にpipをインストールします

apt install python-pip

WsgiDAVをインストールします

pip install wsgidav cheroot

WebDAVサーバーを起動します

wsgidav --host=0.0.0.0 --port=8080 --root=/storage/emulated/0/ --auth anonymous

ポートは8080/rootは内蔵ストレージ/anonymous(誰でも)アクセス許可

http://Fire TVのIPアドレス:8080でアクセスできます。iPhoneで有料アプリですがComicGlassでアクセスが当方では可能でした(wsgidav.yamlでパスワード認証有効化するとzipは読めなくなりましたので認証無しで下記SSHトンネルを利用しています)。rootを変更すればOTGケーブルに接続したハードディスク等にもアクセスできます。

動作が問題なければnohupを付けて.bashrcに記載すればFire TV Stick再起動後もTermux起動させれば自動実行されるので便利です

nano .bashrc
nohup wsgidav --host=0.0.0.0 --port=8080 --root=/storage/emulated/0/ --auth anonymous

このままではパスワード認証がないので、ポート開放して外出先から直接アクセスするのは危険です。SSHのポートだけ開けて、SSHトンネルを利用すると安全性が向上します。iPhoneのiSH shellを利用します。

ssh -p 8022 -C -c aes128-ctr -L 8080:1
92.168.*.*:8080 u0_a***@グローバルIPアドレス

192.168.*.*にはFire TVのIPアドレスを入力します。-L 8080:1
92.168.*.*:8080はローカルのポート8080をリモートサーバー経由で192.168.*.*:8080に転送/-p 8022はSSH接続先のポート番号8022指定/u0_a***@グローバルIPアドレスは接続先ユーザー名@ホストアドレス/-Cは圧縮/-c aes128-ctrは暗号化を軽量化

これでhttp://localhost:8080にアクセスすれば、http://Fire TVのIPアドレス:8080に接続されます。圧縮オプションと暗号化を軽量化することで大きなサイズのデータのやりとりの効率化を計ります。

SSHトンネルを持続させるためには、iSH shellをバックグラウンドで動作させ続けるようにします。

cat /dev/location > /dev/null &

この後、GPSの使用を常に許可し、その後SSHトンネルの開通コマンドを打てば、バックグラウンドでトンネルを開通させたままにできます。

または、wsgidav.yamlを作成することでパスワード認証など設定できます(公式:https://wsgidav.readthedocs.io/en/latest/user_guide_configure.html)。

サンプルのSample wsgidav.yamlをベースに、必要箇所を編集すると良いでしょう。例えば、

Fire TVの内蔵ストレージを指定

provider_mapping:
    '/': '/storage/emulated/0'

ユーザー、パスワードの設定

simple_dc:
    user_mapping:
        ‘*’:
            ‘ユーザー名’:
                password: ‘パスワード’

その後wsgidavとコマンドを打てばwsgidav.yaml設定を読み取り起動するはずです。

DLNAサーバー

minidlnaをインストールします

apt install minidlna

設定ファイルを編集します。

nano $PREFIX/etc/minidlna.conf

公開するディレクトリを設定します。例えばFire TV内蔵ストレージの画像&動画ファイルを公開したい場合、

media_dir=PV,/storage/emulated/0

Pは画像、Vは動画です。/storage以降はOTGケーブル説明のハードディスク等も指定できます。

inotifyでファイルの変更が定期的に反映されます。デフォルトは900秒(15分)です。

inotify=yes
notify_interval=900

DLNAサーバーを起動します。

minidlnad -R

これでDLNAクライアントから見えるようになるはずです(iPhoneではVLCなど)。

実際の使用感と、消費電力について

筆者はsshサーバーと、wsgidavサーバーを主に使用しています。筆者の環境ではスリープ状態でもこれらのサーバーが機能しており、非常に省電力です

watt-checker

ポータブル電源で、消費電力を測定するとスリープ状態で0~1ワットでした。写真は0ワットですがサーバーが動作しており、ssh接続、WebDAVサーバーへのアクセスも可能でしたので、非常に省電力です。また、Fire TV Stickは、かなり小型のため、設置場所にも困りませんでした。

iPhoneで撮影した4K動画をハードディスクにDocuments by Readdleで転送し、Fire TVのVLCやKODIで閲覧したり、ハードディスクに本を入れてiPhoneのComicGlassで読んだり(WebDAVサーバー)、とても便利になりました!

まとめ

  • Fire TV StickのNASサーバー化は、低コストで構築できる!
  • スリープ状態でもサーバーは動作するので、省電力!*1
  • 小型のため、設置スペースに困らない!

*1:スリープ状態で動作するのは筆者の環境であり、全ての環境で動作するかは不明です。

ぜひ、試してみてください!

コメント

タイトルとURLをコピーしました