Raspberry Pi 4でIP-KVM(リモートKVM)を作る
余ったRaspberry Pi 4を活用したい
Raspberry Pi 4が手元に余っている。何も活用していない。とても勿体無いので、何か運用できないかと考えていた。
現在、自宅サーバを運用しており、Firecracker などの仮想化検証や、個人プロジェクト用のサービスを動かしている。外部からのネットワーク接続を行う際にCloudflare Tunnelを用いSSH接続を行ってリモート接続をし、運用をしている。自宅サーバを操作するための環境が欲しいと考えていた。
IP-KVM(リモートKVM)を導入することで、Raspberry Pi 4は運用できるし、外部からのサーバ操作も行え一石二鳥であると私は考え、Raspberry Pi 4を用いてIP-KVMの導入を行うことを決めた。
IP-KVMいわゆるIP-Based Keyboard/Video/Mouseは、ネットワーク経由でサーバの画面・キーボード・マウスを操作できる仕組み。OS が起動してない BIOS 画面でも操作できる。
Raspberry Pi 4をIP-KVMとして運用するために必要なもの
- Raspberry Pi 4
- microSDカード
- C790などHDMI信号を受け付けられるCSI対応のデバイス
- Raspberry Pi 4のUSB Type-Cを電源とデータ信号に分配・分岐させるコネクタ
- 電源
- USB Type-C ←→ USB Type-Cケーブル 2本
- USB Type-A ←→ USB Type-Cケーブル 1本
- これは、利用するサーバの環境によって、USB Type-C ←→ USB Type-Cケーブルでいい場合もある
部品の調達
Raspberry PiをIP-KVMとして運用するには単体での運用はできない。最低限必要な部品を買わなければならなかったので、AliExpressで購入した。
| 部品 | 用途 | 入手先 | 価格 |
|---|---|---|---|
| Raspberry Pi 4 | ベースボード | 手持ち | - |
| C790 (TC358743) | HDMI to CSI | AliExpress | 2,700円 |
| USB スプリッター | 電源・データ分離 | AliExpress | 500円 |
| PD アダプタ | 電源 | ダイソー | 1,000円 |
| USB-C/C ケーブル ×2 | 配線 | ビックカメラ | 800円/本 |
| USB-A/C ケーブル ×1 | 配線 | ダイソー | 200円 |
| microSD 16GB | OS 用 | 手持ち | - |
| 合計 | 約 5,400円 |
C790
サーバに対して、Raspberry Piをディスプレイ認識させるための部品。HDMIの信号をCSI-2に変換するために必要。東芝TC358743XBGチップが乗ったものを選択した。このチップはスマートフォン向けのMIPI CSI-2ブリッジ IC で、PiKVM コミュニティでよく使われている。ノウハウが豊富であったので採用した。HDMIをCSI-2に変換することで、Raspberry Pi 4のカメラポートに直接映像信号を流し込める。
AliExpressでは以下の製品を購入した。

- Raspberry Piカメラアダプター
- 私が注文した2026年4月の値段は2,700円だった。
USBスプリッター
Raspberry Pi 4 では USB Type-C ポートが 1 つしかない上に、このポートは電源入力と USB OTGが同居している。電源は電源アダプタから取りつつ、USB データ通信はターゲットサーバーに繋ぎたいため、専用のスプリッタで電源ラインとデータラインを分離する必要がある。
AliExpressでは以下の製品を購入した。
- USB電源スプリッター
- 私が注文した2026年4月の値段は500円だった。
USB Type-Cケーブル 2本
USB Type-Cケーブルが2本が必要で、1本はRaspberry Pi 4に電源を供給するためのもの、さらにもう1本はRaspberry Pi 4からUSB Type-CコネクタとUSB電源スプリッターを接続するために利用する。
今回私はビックカメラで売ってるノーブランドのUSB Type-Cケーブルを買って利用をしている。1本800円~1000円の価格帯で販売されているものだ。でも、もっと安い製品を選べることに気がついた。それは ダイソーで500円で販売しているUSB Type-Cケーブル。だいぶ安いし、品質も十分そう...。
USB Type-A ←→ USB Type-C ケーブル1本
USB電源スプリッターと、操作対象のサーバを接続するために必要。 ダイソーで100円で販売しているUSB Type-A ←→ USB Type-C ケーブルで200円ほどで売っている。
PD対応のアダプター
Raspberry Pi 4はPDには対応していないためPD機能は活用されないが、ダイソーで1000円で買えるPD対応のアダプターを見つけたので購入。15W (5V 3A)の出力を安定してRaspberry Pi 4に対して供給できれば良い。
IP-KVMのためのソフトウェア PiKVM をセットアップ
PiKVMはIP-KVMを自作するためのオープンソースプロジェクト。Raspberry Pi 4 / Zero 2 W 向けの DIY V2 構成、公式 HAT 基板の DIY V3、完成品の V4 シリーズなどがあり、ソフトウェア(PiKVM OS。これはArch Linux ARMベース)は無料配布されている。今回は手元のRaspberry Pi 4を活用するDIY V2構成を採用することにした。
PiKVMのイメージをダウンロード
Raspberry Pi 4 向けに PiKVM のディスクイメージをダウンロードする。PiKVM V3 HAT DIY Assembly のイメージ を利用した。
今回構築するのはハードウェア的には DIY V2 構成(Pi 4 + HDMI-CSI bridge)だが、PiKVM プロジェクトは現在 V2 専用イメージのメンテナンスを縮小しており、V3 イメージは V2 ハードウェアでも動作する という公式メンテナの発言があるため、V3 イメージを利用した。 ※実際、問題なく動作することを確認している。
PiKVMのイメージをmicroSDカードに書き込む
xzファイルを解凍して、得られたimgファイルをmicroSDカードに書き込む。私はRaspberry Pi Imagerを利用した。imgファイルを書き込めるのであれば何を利用しても問題はないだろう。
PiKVMをブートし、起動を確認する
PiKVMのイメージを書き込んだmicroSDカードをRaspberry Pi 4に接続して、起動確認をする。起動後、ルーターの管理画面で Raspberry Pi 4 を探す。Raspberry Pi 4 の MAC アドレスはベンダープレフィックス dc:a6:32:またはd8:3a:dd:で始まるので、これを目印にすると見つけやすいとのこと。(Wi-Fiと有線でNICが異なるのでMACアドレスは異なる)
割り当てられた IP アドレスが分かったら、https://{ローカルIPアドレス} でブラウザアクセスし、PiKVMのAdmin画面が表示されることを確認する。
なお、mDNSが利用できる環境であれば https://pikvm/ でもアクセスできる。 PiKVM はデフォルトで自己署名証明書(self-signed certificate)を使っているため、
ブラウザで「この接続ではプライバシーが保護されません」のような警告が表示されてしまう。
この警告は後述するTailscaleを利用し、Let's Encrypt 側で発行される証明書を利用することで解消できる。
無事、PiKVMがブートできていれば、Admin画面が開く。初期はUser admin Password admin でAdmin画面に対してログインを行うことができる。※運用時にきちんとUser, Passwordを変えるように。

Raspberry Pi 4にC790モジュールを接続する
サーバから送られてくる映像信号をRaspberry Pi 4に取り込むため、C790モジュールを接続する。Raspberry Pi 4のCSIポートと、C790を接続すれば良い。Raspberry Pi 4のCSIポートは、mini HDMIポート側についている。

CSIポートの黒い部分がロックになっており、上に引っ張ることでケーブルを入れることができる。
C790モジュールが接続できたか映像入力の確認をする
C790モジュールとRaspberry Pi 4が接続できたか確認を行うため、HDMI信号を出力できるデバイス、例えばMacBookの映像出力をC790モジュールのHDMIポートに対して繋げる。
映像の確認は、PiKVMのAdmin画面のKVMをチェックすることで行うことができる。無事、映像出力が確認できればRaspberry Pi 4とC790モジュールの接続は無事終わったことになる。
自宅サーバにRaspberry Pi 4を接続
いよいよ、自宅サーバにRaspberry Pi 4を接続する。 USB電源スプリッターを使って、電源供給を電源アダプタから、USBデータ通信を自宅サーバへ、と分けてケーブル接続を行う。
図に起こすとこういう感じ。

写真を撮るとこんな感じ。ケーブルがぐしゃぐしゃなのでどうにかしなければ。

Raspberry Pi 4に割り当てられたIPアドレスを指定し、ローカルネットワーク経由でPiKVMのAdmin画面を表示。
その後、Admin画面よりKVM画面を開くと、無事、自宅サーバの画面が映し出された。PiKVM の Web UI からブラウザを介してキーボード入力・マウス操作を行うことができる。そこそこフレームレートが出ていた(40〜50fps 程度)。Wi-Fi 経由でも BIOS/UEFI 操作には十分快適なレスポンスであると感じた。

外部ネットワークからPiKVMへの接続を行えるようにする
ローカルの接続はこれでよしとするが、外部ネットワークからPiKVMへの接続がこのままでは行えないので、環境を整える。
外部ネットワークとの接続には、Tailscaleを利用することにした。 なぜ Tailscale を選んだのか。IP-KVM は乗っ取られると物理アクセス相当の権限を渡すことになるため、Cloudflare Tunnel のように「インターネットに公開して認証で守る」方式よりも、「そもそも tailnet 外からは到達できない」VPN 方式の方が安全と判断した。Tailscale は WireGuard ベースで、設定も数分で済む。 ※今までCloudflare TunnelやWARPを使っていたが他の手段を使いたかったという意図もある。
Tailscaleでは、*.ts.netのドメイン名で管理しているホストに対して独自の管理用ドメインが割り当てられる。かつ、Let's Encryptを利用してTLS/SSL証明書も発行されるとても便利な仕組みがあり、PiKVMをWeb上のAdmin画面から操作をするにはとっても運用がしやすい。 具体的にはTailscale AdminでHTTPS Certificatesを有効化したうえで、PiKVM 上で以下のコマンドを実行する。
$ tailscale cert pikvm.{tailnet}.ts.net
これで Let's Encrypt の正規証明書が取得でき、PiKVM の nginx 設定に配置することでブラウザ警告が消える。なお証明書は90日で期限切れになるため、systemd timer で毎日チェックして期限が近ければ自動更新する設定を入れた。
詳細は別記事で書く予定。
iPhone(iOS)にも、TailscaleのクライアントアプリケーションがApp Storeで配布されているので、iPhoneからもPiKVMに対してアクセスすることが可能である。4G回線(IIJmioのau網利用回線)であっても、映像のフレームレートは40〜50fpsほど出ていた。外出先でも実用上問題ないレスポンスを確認できた。

スクリーンショットでは伝わりづらいかもしれないが、iPhone上でPiKVMのAdmin画面を利用し、KVMとして運用すると自宅サーバから送られてくる映像表示領域がだいぶ小さい。マウス操作は指がかぶってしまい辛い。タブレット端末(iPadなど)で操作するようにした方が快適だろう。あくまでiPhoneからのPiKVMアクセスは緊急用途ということで割り切った方が良さそう。
PiKVMを利用した自宅サーバの遠隔管理は行えることを確認した。普段は SSH 経由で自宅サーバにログインしつつ、異常が起きた場合には PiKVM 経由でリカバリーするという運用にしたい。
次のステップは...
- Wake-on-LAN による自宅サーバの電源ON制御
- GPIO + フォトカプラによる電源・リセットボタンの遠隔制御
- 3Dプリンタによるケースの自作
- PiKVMのWi-Fi化で詰まった話のまとめ(別記事として執筆予定)
時間ができたら少しずつ対応していきたい。