NanoKVMと自宅サーバで遊ぶ
はじめに
実家など遠隔地で自宅サーバを運用している際、通常であればSSH経由での操作で管理は事足りるのですが、稀にSSHでは困るケースがあります。例えば、以下のような場合です:
- 何らかの理由により、SSHが疎通しなくなってしまったので、コンソール経由で操作したい
- 「電源が切れてしまった」「更新時に何かが起きて正常に起動しない」など……
- BIOS/UEFIなど、OSより下のレイヤの設定を変更したい
- 遠隔でキーボードやディスクを接続してOSインストールなどをしたい
特に 1 は、気をつけていても意図せず発生することがあります。AWSといったクラウドや VPS を使っている場合はステージング環境での動作確認・仮想コンソール経由での操作ができるので検知や復旧も比較的容易なのですが、大抵の自宅サーバにステージング環境や仮想コンソールは存在しないでしょう。なぜなら、それを実現するためには自費の(金銭的・時間的)コストがかかってしまうからです。
特に備えがない場合、こうしたトラブル時に取ることのできる手段は概ね二つあります:
- 遠隔地に話が通じる人がいる場合、その人に操作してもらう
- 遠隔地に赴いて作業する
前者であれば楽に対応ができますが、遠隔地に「話の分かる」人がいることが前提になります。例えば実家の場合は親族に頼んで操作してもらうことになるわけで、電源のON/OFF以上のことをやってもらうのはなかなか難しいと言えます。
後者については生活している場所の近辺であればいいものの、東京と北海道・沖縄クラスに離れている場合だと厳しさを感じずにはいられません。「まあどうしても必要なわけではないし、次帰省した時に直すか…………」と、しばらくの停止を許容して先延ばしにする方が多いのではないでしょうか。
だから「クラウドやVPSみたいに、遠隔でコンソールなどを操作するための機材(リモートKVM)が欲しい」と誰もが一度は思うのです。しかし、このようなエッジケースのトラブルは年に一度起きるか起きないかくらいなので、そんなにコストをかけたくはありません。業務用機器は高すぎて話にならず、 Raspberry Pi を使った PiKVM[1] も、一台あたり$300くらいからのスタートになります。
管理するサーバが一台だけならいいですが、複数台になるとコストも無視できないほどかかりますし、滅多に起きないトラブルのための備えとしては非常にコスパが悪いわけです。じゃあ自作するかと言われても、自作したら自作したでその管理をどうするのかという疑問がつきまといます[2]。そして「いつか欲しいものリスト」に PiKVM を入れて忘れた頃にトラブルが発生し、青ざめたまま盆か正月を迎えるのが我々人類なのです[3]。
しかし、2024年。ニッチなご自宅リモートKVM界隈に期待の新星が現れました。その名を NanoKVM といいます。
期待の新星、NanoKVM
新星こと NanoKVM の良い点はいくつかあるのですが、何といってもその形状と価格でしょう。
以下の写真は、私が実際に購入した NanoKVM (Full版[4])になります。一目で分かるように、その体躯は Raspberry Pi 以上に小型です。
開封した中身一覧(NanoKVM Full版)
チョコレート菓子ほどのミニサイズ!
これらは公式の販売元(AliExpress)[5]から購入したものですが、お値段はいくらだと思いますか? なんと、送料込みで10142円でした。決済したのが11月頭だったので、当時のレートでドルに直すと$67くらいでしょうか。PiKVMの1/5くらいの価格で一台が手に入ることになります。
そして、今販売ページを見たところ、年末だからかセールで少し安くなっているようです。$60くらいなんじゃないかなと思います。
機能も PiKVM より劣っているわけではなく、ほとんど同等です。詳細は公式の技術仕様[6]をご確認いただきたいのですが、$300以上する PiKVM V4 とほぼ同じ機能をサポートしていることが分かります。
また、 RISC-V ベースの自社開発マイコンを採用しているだけあって、0.2Aと極めて省電力なのも魅力の一つ。USB-C給電なので、安いACアダプタとケーブルを買えば事足りますし、サーバのUSB端子から常時電源が供給されているようであればケーブルだけでも済みそうです。
さらに、こういった AliExpress 経由の機器にありがちな技適問題ですが、少なくとも NanoKVM には無線機能が内蔵されておらず該当しないというのも良いところです[7]。
……と、ここまで美辞麗句を並べてきましたが、スペックが良くても実際に使ってみたらあんまりだったといったケースはつきもの。
きちんと動くのか、実際に私が運用している自宅サーバで使ったところをレポートしていきます。
実際に使ってみる
電源用ヘッダを取り付け
今回私が購入したのはFull版なので、サーバの電源を操作するためのボードとピンが付属しています。これを使ってNanoKVMとマザーボードを接続することで、例えば遠隔地の自宅サーバの電源が落ちてしまったり、完全にフリーズしてしまった時に電源のON/OFFができるようになります。
なお、サーバ用ケース付属の電源スイッチのピンを奪ってしまうので、取り付け以降はサーバ側の電源ボタンが機能しません。接続後は NanoKVM の筐体についているPOWER / RESETボタンを押すか、後述する管理画面から電源を操作することになります。
実際に取り付けた際の写真が以下です。
付属のボードにピンを接続した図
マザーボード側にも気合でピンを接続
今回取り付けた自宅サーバはASRockのN100DC-ITX[8]を使ったもので、サーバの電源を落としていてもUSBには電力が供給されているようでした。なので、NanoKVMの電源もサーバ側のUSBポートから調達することにします。
ちなみに、NanoKVMには電源供給用のUSB-Cポート、HID通信用のUSB-Cポート、サーバ電源操作用のUSB-Cポートの三つがあるのですが、HID通信用のUSB-Cポートは電源供給も兼ねることができます。なので、マザーボードから電力が供給されるタイプのサーバをお持ちの方は、通信用のUSBケーブルを一本用意するだけで済みそうです(電源操作用ボードには別途USBケーブルが付属しています)。
その他、HDMIケーブルやLANケーブルの接続を終えた結果、以下のようになりました。やや不恰好ですが、試してみる分には良いでしょう。
ケーブルを全て繋げ終えた形態
起動と接続
起動は極めて簡単で、電力供給のあるUSBケーブルを差し込むと自動で立ち上がります。初期化が完了すると、画面上にプライベートIPアドレスが表示されるため、そこに同じLANからブラウザでアクセスすることで管理画面が開きます。80番ポートで待ち受けているのでポートの指定も不要でした。
最初にパスワード設定を求められるので、それを終えて開いた画面が以下になります。自宅サーバ側のコンソールが確認できています。
管理画面の初期表示(コンソール)
もちろん、そのままキーボード入力が可能です。画面もH.264で配信されているので、サーバ管理用途であればこれ以上ないくらいスムーズに見えます。
SLコマンドを走らせてみた例
電源スイッチの操作(電源の制御)もUIから行えます。VPSでサーバを起動・終了させるのと似た感覚ですね。
管理画面の初期表示(コンソール)
また、今回は試しませんでしたが、仮想ディスクをマウントさせる機能もここから制御できるようです。
マウントさせるディスクイメージの転送方法
このように、ほぼセットアップ不要でリモートKVM環境ができあがりました。
外部から接続する
とはいえ、このままではLAN内からしか管理画面にアクセスできません。
VPN用の機器を別途設置している方はそちらからアクセスすれば良いですが、ポート開放ができない等の理由で外部からLANへ直接アクセスする手段がないのも十分あり得ます。
NanoKVM はそうしたケースにも対応していて、 Tailscale[9] のクライアント機能を持っています。これを設定してあげれば、ポート開放ができない環境でも Tailscale (P2P) で操作できます。これであれば遠隔地それぞれにVPN機器を設定する必要もないですし、ポート開放もしなくて済むのでセキュアです。
……と書いておいて恐縮なのですが、僕の環境にはすでにVPNが設置されているのと、 Tailscale の設定は簡単すぎてわざわざ書くほどではないので、今回はそういう設定がありますという記載のみとさせてください。
Tailscaleの設定もメニューから可能
NanoKVMの課題
ここまでの説明を読んで「超いいじゃん、さぞかし便利に使い倒しているんでしょうな」と思われた方もいらっしゃると思いますが、結論、僕の環境では試験的に使う程度に留めようと考えています。メインで運用している環境にはまだ組み入れられないかなといった所感です。
理由は大きく分けて二つあります。
(課題1) 設定や構成のセキュリティが甘い
これは指摘せざるを得ません。
例えば、記事中で「管理画面の初回アクセス時にパスワードの設定が求められる」と書きました。これだけ見るとセキュアに感じますが、しかし NanoKVM では root ユーザでログイン可能なSSHサーバが最初から稼働しており、その root パスワードは変更されません。で、肝心の初期値はというと……まさかの root
なわけです[10]。
$ ssh root@192.168.10.169
The authenticity of host '192.168.10.169 (192.168.10.169)' can't be established.
ED25519 key fingerprint is *REDACTED*.
This key is not known by any other names.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
Warning: Permanently added '192.168.10.169' (ED25519) to the list of known hosts.
root@192.168.10.169's password:
# id
uid=0(root) gid=0(root) groups=0(root),10(wheel)
root:root
でお手軽管理!(ではない)
いやいや、これを変えないと意味ないじゃん……。一見脆弱性に見えるのですが、User Guide[11]にも記載があるので、単に不親切な仕様なようでした。なお、普通の Linux と同様、パスワードはrootログイン後に passwd
コマンドで変更できます。
おそらく今後修正が入るんだろうなと思いつつ、このレベルの問題が残っているのを見ると、他にもマズい設定が入っていそうだなと直感的に考えてしまうわけですね。
また、販売している企業は明確とはいえ、 AliExpress が公式販売チャンネルである機器のファームウェアやバイナリを信用しきれるか? といったところもあります。Tailscale にしても、自前のCDNから配布している古いクライアントを使用しているようでした[12]。こういう雑なところを見ると、サーバ管理の一部を担う重要なポジションの製品としてはシュッと成熟しきれていないのかなと感じます。
また、ファームウェアの透明性については、OSSを用いてファームウェアをビルドする非公式の取り組みがあるようなので一定透明性も担保できそうです[13]。が、 xz のような件もあるので、この取り組みをそのまま信じ切っていいのかは微妙なところ。物量的に全て自前でレビューするのも難しいでしょうから「信用をどこに置くか?」を考えないといけません。
(課題2) 対抗馬が出てきている
NanoKVM に全振りできないもう一つの理由ですが、 JetKVM[14] という製品がまもなく出てきそう、というのがあります。
こちらは KickStarter でのクラウドファンディングなので製品としてまだ怪しいものの、一台あたり$69と NanoKVM とほぼ同じ価格です。目標金額にはすでに到達済みでまもなく出荷開始とのこと。全ソフトウェアを可能な限り GPL でリリースすると明言していますし[15]、デザインも一段オシャレでイケているときました。
安定して生産できるようになれば、 NanoKVM よりも洗練されていそうだなと感じます。先行きがまだ見通せないので評価できないのが難点ですが。
いずれにせよ、 NanoKVM が風穴を開けた安価なリモートKVMの分野について、有力な対抗馬がまもなく現れそうというのは大きいです。
まとめ
自宅サーバはあくまでロマンであり「光熱・通信・材料費、管理する気力を含むランニングコストを考えると、大抵の場合は既存サービスやVPSを使った方が安いし早いし安全」と言われ始めて五千年くらいが経った気がしています。
そんな世界でも NanoKVM のような革命児が生まれてきているのは、素直に嬉しいし楽しいものです。
すでに記載した通り、私はメイン環境への NanoKVM の投入には躊躇してしまっていますが「多少リスクを取ってでも気軽にサーバを管理したい」「僕と同様、試験的な環境で触って遊んでみたい」といった方にはうってつけの製品だと思います。何より安くて小さいので、ダメだった時のショックもさほど大きくないのです。
少なからず需要があるオーシャンなので、ご紹介した JetKVM のような対抗馬も含め、今後の発展に期待が持てるところです。ひょっとすると、数年後には自宅サーバ界のデファクトスタンダードな存在になっているのかもしれませんね。
ライセンス
本記事の内容は、特記なき限りCreative Commons Attribution 4.0 International Public License[16]のもとで自由に利用することができます。ただし、別のライセンスが示されている部分についてはそちらに従ってください。
なお、著者ウェブサイトにて同一の内容[17]を掲載しています。
-
NASにせよ何らかのサーバにせよ、自作すると「既製品より安上がり!」と最初は思うのですが、労力のかかるハード・ソフトのメンテナンスをサボると動かなくなることが多々あり、既製品のありがたみを感じるところまでがセットではないでしょうか。その上で、何を自作するべきかを考えられるようになってくると深みが増す印象です。 ↩︎
-
実家が遠いと、帰省のタイミングは大抵お盆か正月になりがち。 ↩︎
-
NanoKVMにはFull版とLite版がありますが、Full版には電源操作用のピンヘッダやディスプレイなどが付いてきます。 ↩︎
-
https://github.com/sipeed/NanoKVM/blob/main/README_JA.md#技術仕様 ↩︎
-
公式ページによれば、 NanoKVM で採用されているのは無線機能を省いた LicheeRV Nano E のようです。 ↩︎
-
GitHubでもIssueとして挙げられています : https://github.com/sipeed/NanoKVM/issues/198 ↩︎
-
https://wiki.sipeed.com/hardware/en/kvm/NanoKVM/user_guide.html ↩︎
-
https://github.com/sipeed/NanoKVM/blob/93ce6009c6cceb0d7f2b57b6cd7d3239935d0dc8/server/service/network/tailscale.go#L71 ↩︎
Discussion
「サーバ用ケース付属の電源スイッチのピンを奪ってしまう」とありますが、KVM-Bボードの立っているピンヘッダにケース側のケーブルを挿せばいい(KVM-Bボードがケースとマザーボードの間の中継基板になる)のではないでしょうか。
ご指摘ありがとうございます。改めてドキュメントを確認したところ、おっしゃる通り両立が可能そうに見えましたので、明日あたりで動作確認を行なってから記事を更新いたします。恐縮です。