Sipeed NanoKVM-USB WebサービスをLAN環境に構築

Internet

 Sipeed NanoKVM-USB を買いました。このデバイスは、USBとHDMIだけでターゲットマシンを制御できるKVMソリューションです。
たとえば、サーバをキッティングするときに、NanoKVM-USBを利用してサーバとノートPCを接続すると、ノートPCをそのままサーバコンソールとして利用することができます。
NanoKVM-USBとUSBケーブル2本、HDMIケーブルが1本あればOK。実際の接続イメージです。これはIO-DATAのNASとノートPCを接続しています。

 ターゲットマシンの映像出力がアナログRGBの場合、HDMIへの変換がどうしても必要になります。HDMI変換で正常に動作するか、近日、ラックマウントのサーバを設定する予定があるため、改めて試してみようと思います。
(追記:720×400@70Hz対応のアナログRGB HDMI変換で利用可能でした)
Raspberry Piマシンのインストールには、このソリューションはお手軽でいいかもしれません。

アプリケーション配布先、githubのURLはこちらです。アセットリストからダウンロードできます。

GitHub - sipeed/NanoKVM-USB: Finger-sized 4K USB KVM for Server/SBCs
Finger-sized 4K USB KVM for Server/SBCs. Contribute to sipeed/NanoKVM-USB development by creating an account on GitHub.

 このデバイス用のアプリケーションは、ブラウザ版とデスクトップ版(アプリ)の2つの種類があります。操作を行うホスト端末がWindows OSであればデスクトップ版をダウンロードし、アプリケーションをインストールすることで簡単に利用することができます。
 ブラウザ版は、NanoKVM-USBを接続したPCから、Sipeed社が提供するWebサービス(usbkvm.sipeed.com)にアクセスすることで、仮想キーボード・マウス操作や映像確認が可能になります。ブラウザ版はプラグインやアドオンなどのインストールも不要なので、デスクトップ版よりも、お手軽に利用できると思います。

この写真は、NanoKVM-USBを利用して、Webブラウザにサーバのコンソールを表示している状況です。

「usbkvm.sipeed.com」で公開されているWebサービスのプログラム自体もgithubでも公開されており、ユーザのWebサーバでも簡単に動作させることができるという事前情報があったので、これはなかなか面白そう!と考え挑戦することにしました。
 以下のような状況を考慮した場合、Sipeed社のWebサービスやインターネット接続に依存せず、ローカル環境で運用できる仕組みを構築したほうが良いと考えたのです。

  • usbkvm.sipeed.com が将来サービス終了した場合
  • 同Webサービスがシステムメンテナンス中の場合
  • インターネット接続障害発生中に利用したい場合

 今回は、Sipeed NanoKVM-USB のWebサービスを、インターネットに頼らずローカルネットワーク上で完結するよう構成してみました。Webサーバは常時稼働中のUbuntu仮想マシンのnginx。WebサービスはLAN内で限定的に公開、プライベートCAから発行したサーバ証明書によりHTTPSも設定しています。すぐ忘れるので、備忘録として手順をまとめておきます。

1. サーバ証明書の発行(easy-rsa)

プライベートCAのコンソールでサーバ証明書を発行します。

./easyrsa --subject-alt-name="IP:172.16.0.10,DNS:usbkvm.oz.exiv.net" \
  build-server-full usbkvm.oz.exiv.net nopass

作成した証明書ファイルは、認証局ディレクトリ配下 pkiディレクトリに出力されます。
私の環境では/root/certが認証局のルートです。

  • 証明書: usbkvm.oz.exiv.net.crt
  • 秘密鍵: usbkvm.oz.exiv.net.key

2. WebUI(ブラウザ版)のダウンロードと配置

githubページのアセットリストから入手可能です。

下記のディレクトリにダウンロードしたプログラムを展開、nginxで公開します。
   /opt/usbkvm-web/public/NanoKVM-USB-1.0.1-browser/

sudo mkdir -p /opt/usbkvm-web
cd /opt/usbkvm-web

wget https://github.com/sipeed/NanoKVM-USB/releases/download/v1.0.1/NanoKVM-USB-1.0.1-browser.zip
unzip NanoKVM-USB-1.0.1-browser.zip -d public

3. nginx のインストールと設定

sudo apt update
sudo apt install nginx
証明書の配置

easyrsaでSSL証明書を作成しました。

sudo mkdir -p /etc/nginx/ssl/usbkvm
sudo chmod 750 /etc/nginx/ssl/usbkvm
sudo cp usbkvm.oz.exiv.net.crt /etc/nginx/ssl/usbkvm/cert.pem
sudo cp usbkvm.oz.exiv.net.key /etc/nginx/ssl/usbkvm/key.pem

2026/1/13 追記 SSL証明書のパーミッション設定を失念しておりました。イントラサーバでも、これは設定したほうがいいです。うへえ。

sudo chown www-data:www-data /etc/nginx/ssl/usbkvm/cert.pem
sudo chmod 640 /etc/nginx/ssl/usbkvm/cert.pem
sudo chown www-data:www-data /etc/nginx/ssl/usbkvm/key.pem
sudo chmod 400 /etc/nginx/ssl/usbkvm/key.pem
nginx サーバブロックの作成
# /etc/nginx/sites-available/usbkvm

server {
    listen 80;
    server_name usbkvm.oz.exiv.net;
    return 301 https://$host$request_uri;
}

server {
    listen 443 ssl;
    server_name usbkvm.oz.exiv.net;

    ssl_certificate     /etc/nginx/ssl/usbkvm/cert.pem;
    ssl_certificate_key /etc/nginx/ssl/usbkvm/key.pem;

    root /opt/usbkvm-web/public/NanoKVM-USB-1.0.1-browser;
    index index.html;

    location / {
        try_files $uri $uri/ =404;
    }
}
サイトの有効化とリロード、自動起動設定
sudo ln -s /etc/nginx/sites-available/usbkvm /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx
sudo systemctl enable nginx

4. クライアント(Windows)Webアクセス準備

  • プライベートCA証明書を信頼済み証明機関としてインポート
  • OpenwrtのDNSサーバ機能で下記Aレコードを登録
172.16.0.10    usbkvm.oz.exiv.net

プライベートサーバのアクセスURL: https://usbkvm.oz.exiv.net/

このURLはインターネットに公開していません。ローカルネットワークから利用するプライベートサーバとして設定しています。

最後に

Sipeed NanoKVM-USB はシンプルで扱いやすく快適に利用できています。Sipeed社が提供する Web サービス(usbkvm.sipeed.com)も非常に手軽です。

 一方で、システムのキッティングや初期構築といったセキュリティ上センシティブな場面では「信頼できる内部ネットワーク内で完結する環境を整えたい」というニーズも確かに存在します。とくに企業ネットワークや閉域環境での利用を想定した場合、自分が管理しているインフラ上で Webサービスをホストし、動作を完全に把握できる構成にすることで、さらなる安心感や柔軟性を得ることができます。

今回は、そういったセキュリティを重視した運用方針に従い NanoKVM-USB の Webサービス をローカルの Linux サーバ上に構築、HTTPS対応を含めた自己完結型の構成として整備することができました。公式のWebサービス以外にも、ローカルネットワーク上のWebサーバにデプロイして、サービス構築できるという点も、NanoKVM-USB の魅力のひとつだと思います。

追伸:
 後日、NanoKVM-USBについては、実際の操作をご覧いただけるように実験室のほうでyoutube動画にするかもしれません。

追記

 720×400@70Hz対応のアナログRGB HDMI変換アダプタであれば、サーバのBIOS画面もNanoKVM USBで正常にキャプチャできました。ということでアナログRGBしか備えていないようなサーバマシンでも実用的に使えます。

 変換アダプタはVGA(Input)と書いてあるアダプタです。同じデザインでVGA(Output)という逆方向の製品も販売されていますがこれは利用できませんのでご注意ください。

720×400@70Hz対応のアナログRGB HDMI変換ってなかなかレアですよ。いいでしょ?

NanoKVM-USB操作とマルチデバイス共同グラフィック操作,Chromeによる直接、HDMIビデオ信号をキャプチャ (ベーシックブラック)
商品紹介 NanoKVM-USBは、操作やマルチデバイスのコラボレーションに便利なツールです。 キーボード、マウス、モニターを必要とせずに、メンテナンス作業を行うことができます。 コンピューター1台のみを使用し、追加のソフトウェアをダウンロ...

コメント

  1. コメント失礼致します。
    つい先日NanoKVM-USBを買って試してみたのですが、小さい文字がつぶれて表示されるため実用的ではないなと思っていろいろ調べている過程でこちらのサイトにたどり着きました。
    とくにそういった感想も述べられていないようですが、その辺りいかがでしょうか?

    ターゲットPCのWindowsは1920×1200、ホスト側は4K、GitHubからアプリ(exe)をダウンロードして使っています。4K表示もうたってる製品なので、私の買った製品が不良なのでしょうか…

    • コメントありがとうございます。
      私の環境では、Windowsで利用するにあたっては、あまり気になりませんでした。
      nanokvmアプリケーションの解像度設定とOS側の解像度設定は同じ設定にしたほうが良いと思います。
      1920×1200だとアプリケーション側でカスタム解像度の設定が必要になりそうですね。

      youtube動画で、アプリケーション側 カスタム解像度設定を操作していますので、宜しかったら
      ご確認ください。
      https://www.youtube.com/watch?v=cp5Qe_ddkp4&t=320s

  2. ご返信ありがとうございます。
    ホストが4K解像度あるため、カスタム解像度で1920×1200を設定して表示しているのですが、たとえば、Windowsの右下(タスクバー上)の時計の数字くらい小さい文字になるとかなり見づらい感じです。
    YouTube動画は拝見いたしました。とても参考になります。

  3. 動画のご視聴、ご確認ありがとうございます。
    となると、故障なのか、サポート案件かもしれませんね・・・。

    私の環境で4Kモニタで、ブラウザバージョンでの表示です。

    https://exiv.net/wp-content/uploads/2025/08/1920-1200-4kmonitor.png

    最大化でこれくらいは表示できますが、ウィンドウサイズを
    実寸より小さくすると表示がつぶれていきます。

    こちらの画像は、PrtScreenで取得したスクリーンショットです。
    肉眼で確認できるものと表示内容はそれほど変わりはありませんので、
    画面キャプチャを掲載します。

    (時計がずれているのはお気になさらないでください)

    同じようにスクリーンショットで比較されて文字が潰れるようですと、
    故障の可能性もあります。

    HDMIケーブルは製品付属のものをご利用されているのですか?
    私は本体だけのモデルを買いましたので、手持ちの4Kケーブルを使っています。

  4. ご返信ありがとうございます。
    貴殿の環境は問題無く細かい字まで読めていますね。。
    HDMIケーブルとUSBケーブルは(私もセット品を買わなかったので)自前で用意していますが、
    4K対応のものとUSB3.1対応のケーブルを使用しています。
    不良品の可能性が高そうですね…
    ありがとうございました。

  5. ご確認ありがとうございます。
    そうですか。初期不良ですかね。残念です。

    Sipeedさんのサポートは、自分が問い合わせしたときには
    親切な対応でした。一度、相談されることをオススメします。

    コメントありがとうございました。

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