AsustorのNASが便利すぎた件

に公開

最近AIエージェントで簡単なwebアプリはあっという間に作れるが、手元のNASを生かせばいいんじゃないかと思って調べてみたところ、思ったより完璧だったという話

Asustorってどこのメーカー?

https://www.asustor.com/ja/about/about_asustor

ASUSの子会社です。
単にネットワークストレージとしての性能も優秀ですが、ゲーミングPCを扱っているASUSだけあって使いやすいポータルアプリが優秀で、様々な拡張機能が多くのモデルで使えるようになっています。

結構安い

https://kakaku.com/pc/nas/itemlist.aspx?pdf_ma=7486&pdf_Spec301=4-6&pdf_so=p1

4ベイのNASが5万円台から販売されています。

私は NIMBUSTOR 4 Gen2 AS5404T を購入しました。

HDD 4台でRAID5/6構成が可能な上に、M.2 SSDのRead/Writeキャッシュ構成が可能なモデルでも10万円以下で入手できます。

App Centralで様々なアプリが追加できる

https://www.asustor.com/admv2?type=&subject=3&sub=11&lan=jpn

AsustorのApp Centralには様々なアプリケーションが用意されており、ファイルサーバーだけでなく、メディアサーバー、監視カメラシステム、バックアップツール、開発環境など多様な機能を簡単に追加することができます。インストールはクリック一つで完了するため、専門知識がなくても簡単にNASの機能を拡張できます。

Dockerが使える

https://www.docker.com/ja-jp/

AsustorのNASはDockerをネイティブサポートしているため、様々なコンテナアプリケーションを簡単に導入できます。Docker Hubからワンクリックでコンテナを導入でき、Portainer CEを使えばリソース管理も視覚的に行えます。

Tail Scaleもある

https://tailscale.com/

TailScaleはモダンなVPNサービスで、App Centralから直接インストールできます。従来のVPNと異なり、複雑な設定や固定IPアドレスが不要で、NAT越えも自動的に処理してくれます。これにより、外出先からでもNASに安全かつ簡単にアクセスできるようになります。また、Magic DNS機能を使えば、IPアドレスを覚えておく必要もなく、ホスト名だけでアクセスできます。

家庭内 / 小規模事業 向けにアプリを作る

webアプリケーションに詳しい人は Portainer CE でGUIからデプロイ までスキップしてもOKです

内容はGitHub Copilot で作ってもらう

ちょっとしたルーチンワークを行ってもらうだけなら、AIエージェント任せでほぼ完成します。

https://zenn.dev/kenshintatsumi/articles/d4f7d3f3cfc691

まずは好きな言語でサーバーのひな型を作成

簡単なフォームアプリなら node.js + Expressで問題ないでしょう

https://zenn.dev/wkb/books/node-tutorial/viewer/todo_03

express --view=ejs todoapp などでひな型を作ったら、Copilotのagentモードのウインドウを開き、どんなフォームの要素が欲しいかを指示していきます。

Agentの指示はおおざっぱでもいいが、指示は少しづつ

私はカメラの写真を整理するのが面倒なので、撮影日を元に特定のフォルダ以下に整理してくれるWebフォームの作成を指示してみました。

面倒なデザインも、AIは見た目の整え方が特に上手なので、なんとなくでいい感じに作ってくれます。

UIができたら、受け取った情報からアップロードしたファイルをどのように仕分けるかを指示しました。

最終的にはこんな形になりました。

ポイントは常に最低限の機能で動くところを維持しながら、少しづつ機能を追加を指示することです。

Docker 対応

これもAIにお願いすればほぼOKです。

ローカル開発環境との設定の違いは .envファイルに記載するように指示しておきましょう

Portainer CE でGUIからデプロイ

https://www.asustor.com/ja/online/College_topic?topic=145

Portainer CEをインストールすることで、webブラウザのGUIでdocker環境を管理できます。

プロジェクトのビルド

作成したdockerで起動可能なwebアプリケーションのプロジェクトを tar.gz 圧縮します

DashboardのImagesから「Build a new image」のボタンを押します

nameには任意の文字列、Build Methodは"Upload" を選択し、 "Select file" ボタンを押して先ほど圧縮したプロジェクトを選択します。

"Build the image" を押すとしばらくビルドが走ります。

ビルドが環境するとimage一覧に追加されます。
Image tagsの文字列をコピーしておいてください。コンテナのビルドで使います。

コンテナの設定

次にDashboardのContainerから「Add Container」のボタンを押します

Image Configuration の項目はデフォルトではdocker hubから取得するようになっているので、Advanced modeに変更します。
Image の欄に先ほどのImage tagsの文字列を貼り付けてください。

Port mappingは必要に応じて設定してください。(ほかのコンテナと被らないように)

NASのフォルダをマウントする

Portainer CEでコンテナをデプロイする際、NASのフォルダをコンテナ内にマウントすることで、コンテナからNASのストレージにアクセスできるようになります。

Advanced container settings の Volumes の項を選択します。
Volume mappingで dockerのcontainer内のvolumeとホストになるNASのvolumeのマッピングが可能です。Bindモードに切り替えるとNAS側のパスを入力できます。

例) NASの /volume1/Media/Photo/Camera のフォルダをcontainerの /app/storage/media に割り当てている

NAS環境向けに .env を設定する

Advanced container settings の Env の項を選択します。
"Load variables from .env file" ボタンを押せば、手元の.envファイルをインポートできます

設定が完了したら、"Deploy the container" ボタンを押せば実行されます。

正しくportが設定されていれば、http://{NASのIPアドレス}:{指定したポート}/ でブラウザで表示できるはずです。

TailScaleの設定

https://www.asustor.com/ja/app_central/app_detail?id=1443&type=

ポータルからアプリを選択し、ログインすればOKです。
https://www.youtube.com/watch?v=KQLaLRrOCII

これでLAN内からしか接続できなかったWebアプリも Magic DNSに置きかえれば、VPN経由で外部のネットワークからも利用可能になります。

https://tailscale.com/kb/1081/magicdns

まとめ

AsustorのNASは単なるデータストレージの枠を超え、家庭内や小規模事業向けの強力なサーバープラットフォームとして活用できます。

  • App Centralを通じて様々な機能を簡単に追加できる柔軟性
  • Docker対応により、カスタムアプリケーションの実行環境として優れている
  • Portainer CEによる視覚的で直感的なコンテナ管理
  • TailScaleを利用した安全で簡単な外部アクセスの実現

Discussion