「2022-01-30 PiKVM 導入」の版間の差分

提供: hkatou_Lab
ナビゲーションに移動 検索に移動
 
(同じ利用者による、間の4版が非表示)
2行目: 2行目:
  
 
== 目的 ==
 
== 目的 ==
IPMI も vPro も無い [https://pc.watch.impress.co.jp/docs/column/nishikawa/626599.html NUC] を、遠隔から ESXi インストールしたかった。
+
IPMI も vPro も無い [https://pc.watch.impress.co.jp/docs/column/nishikawa/626599.html NUC] を、遠隔から ESXi インストールができるようにしたい。
  
 
== できること ==
 
== できること ==
  
* PC / iPad などのブラウザから、遠隔地の PC やサーバをコントロールできる
+
* PC / iPad などのブラウザから、遠隔地の PC やサーバを '''IP 経由で'''コントロールできる
** キーボード・マウス接続をリダイレクト
+
** HDMI 出力・キーボード・マウス接続を、Web ブラウザからコントロール
 +
** 市販の HDMI エクステンダでは、HDMI --- LAN --- HDMI のため手軽さが無い
 +
** 市販の HDMI + KVM スイッチは、非常に高価
 
* USB 経由で ISO をマウントし、OS をインストールできる
 
* USB 経由で ISO をマウントし、OS をインストールできる
* Read-Only ファイルシステムの Arch Linux で動作し、SD カードの書き換え限界を回避
+
** インターネット経由だと転送が遅いため、PiKVM がある場所に Windows VM + NAS があると速い
* ATX 電源であれば、電源 off / on も可能 (Lab はインテリジェント PDU で off / on している)
+
* Read-Only ファイルシステムのカスタム Arch Linux で動作し、SD カードの書き換え限界を回避
 +
** カスタム Arch Linux の GUI の出来が非常に良い
 +
* ATX 電源であれば、電源 off / on も可能  
 +
** hkatou Lab はインテリジェント PDU で off / on しているため、未使用
 
* Tailscale VPN で外部アクセス不可な NAT 配下の環境でも、外部からアクセスが可能
 
* Tailscale VPN で外部アクセス不可な NAT 配下の環境でも、外部からアクセスが可能
  
 
== できないこと ==
 
== できないこと ==
  
* CPU 温度などはモニタできない
+
* IPMI とは違い、対象機器の CPU 温度などはモニタできない
* リアルタイム性はそれなり、ある程度の遅延がある
+
* リアルタイム性はそれなりで、~100ms 程度の遅延がある
  
 
== コスト ==
 
== コスト ==
 
{| class="wikitable"
 
{| class="wikitable"
 
|+全体コスト
 
|+全体コスト
!
+
!構成
 +
!品名
 
!購入先
 
!購入先
 
!価格
 
!価格
27行目: 33行目:
 
!備考
 
!備考
 
|-
 
|-
|Raspberry Pi4
+
| rowspan="4" |PiKVM
 +
|Raspberry Pi4 Model B 4GB
 
|スイッチサイエンス
 
|スイッチサイエンス
 
|\7,700
 
|\7,700
51行目: 58行目:
 
|そのへんにあった短いやつ
 
|そのへんにあった短いやつ
 
|-
 
|-
 +
|小計
 +
|
 +
|
 +
|\28,964
 +
|
 +
|
 +
|-
 +
| rowspan="4" |オプション
 
|ezcoo HDMI KVM Switch
 
|ezcoo HDMI KVM Switch
 
|Amazon.com
 
|Amazon.com
73行目: 88行目:
 
|2
 
|2
 
|NUC の mini HDMI <-> ezcoo 間
 
|NUC の mini HDMI <-> ezcoo 間
 +
|-
 +
|小計
 +
|
 +
|
 +
|\17,970
 +
|
 +
|
 
|-
 
|-
 
|合計
 
|合計
 +
|
 
|
 
|
 
|\47,633
 
|\47,633
82行目: 105行目:
 
PiKVM と ezcoo はドル決済のため、$1 = 115 円で計算
 
PiKVM と ezcoo はドル決済のため、$1 = 115 円で計算
  
== 構成 ==
+
 
 +
市販の HDMI KVM エクステンダは 10 万円くらい、IP-KVM エクステンダは 20 万円くらいする (しかも 1 ポート) ため、
 +
 
 +
吊るしで買う機器よりは安いです。
 +
 
 +
== 全体構成 ==
 +
[[ファイル:PiKVM+ezcoo.jpg|代替文=PiKVM+ezcoo|なし|フレーム|PiKVM+ezcoo]]
 +
PiKVM と ezcoo HDMI KVM スイッチは、以下で接続します。
 +
 
 +
* 左下 : ezcoo コントロール用 Micro USB
 +
* 中央 : KVM 用 USB-A - C + HDMI
 +
* 右上 : USB A-to-A x2 + HDMI-to-mini-HDMI x2
 +
** ↑はわかりにくい写真ですが、KVM 用ケーブルなので PiKVM 本体とは接続されてません ↓ の写真を参照
 +
 
 +
[[ファイル:PiKVM+ezcoo2.jpg|代替文=PiKVM+ezcoo2|なし|フレーム|PiKVM+ezcoo2]]
 +
ezcoo の右上にマウスとキーボードを別々に接続する USB ポートがありますが、PiKVM は兼用のため、この画像の背面側に接続します。
  
 
== PiKVM ==
 
== PiKVM ==
104行目: 142行目:
  
 
https://www.kickstarter.com/projects/mdevaev/pikvm-v3-hat/description
 
https://www.kickstarter.com/projects/mdevaev/pikvm-v3-hat/description
 +
  
 
== 組み立て手順 ==
 
== 組み立て手順 ==
 
細かい組み立て手順は、[https://www.youtube.com/watch?v=dTchVKxx7Fo&feature=youtu.be 公式 Youtube] と [https://zigsow.jp/item/361953/review/372633 憧れのKVM over IPを手軽?に導入] を参考にさせてもらいました。
 
細かい組み立て手順は、[https://www.youtube.com/watch?v=dTchVKxx7Fo&feature=youtu.be 公式 Youtube] と [https://zigsow.jp/item/361953/review/372633 憧れのKVM over IPを手軽?に導入] を参考にさせてもらいました。
 +
 +
== 初期設定 ==
 +
[https://docs.pikvm.org/first_steps/ First steps] を見てやれば OK.
 +
 +
最低限 SSH CLI パスワードと、https GUI パスワードを設定します。
  
 
== ezcoo HDMI KVM スイッチ ==
 
== ezcoo HDMI KVM スイッチ ==
  
 +
デフォルトだと 1 台のみコントロールできる、PiKVM を 4 台対応にできる HDMI+KVM スイッチ。
 +
 +
日本では出回っていないため、US の Amazon.com から購入しました。
 +
[[ファイル:Ezcoo 01.jpg|代替文=ezcoo_01|なし|フレーム|ezcoo_01]]
 +
[[ファイル:Ezcoo 02.jpg|代替文=ezcoo_02|なし|フレーム|ezcoo_02]]
 +
[[ファイル:Ezcoo 03.jpg|代替文=ezcoo_03|なし|フレーム|ezcoo_03]]
 +
[[ファイル:Ezcoo 04.jpg|代替文=ezcoo_04|なし|フレーム|ezcoo_04]]
 +
[[ファイル:Ezcoo 05.jpg|代替文=ezcoo_05|なし|フレーム|ezcoo_05]]
 +
 +
== ezcoo HDMI+KVM スイッチ用の PiKVM 設定追加 ==
 +
以下を見て設定します。
 +
 +
* [https://docs.pikvm.org/ezcoo/ ezCoo managed multiport KVM switch]
 +
* [https://docs.pikvm.org/gpio/?h=wol#raspberrys-gpio Wake-on-LAN]
 +
 +
私の設定は以下です。<syntaxhighlight lang="diff">
 +
[root@pikvm ~]# cat /etc/kvmd/override.yaml
 +
####################################################################
 +
#                                                                  #
 +
# Override Pi-KVM system settings. This file uses the YAML syntax. #
 +
#                                                                  #
 +
#    https://github.com/pikvm/pikvm/blob/master/pages/config.md    #
 +
#                                                                  #
 +
# All overridden parameters will be applied AFTER other configs    #
 +
# and "!include" directives and BEFORE validation.                #
 +
# Not: Sections should be combined under shared keys.              #
 +
#                                                                  #
 +
####################################################################
 +
#
 +
#########
 +
# Wrong #
 +
#########
 +
#kvmd:
 +
#    gpio:
 +
#        drivers: ...
 +
#kvmd:
 +
#    gpio:
 +
#        scheme: ...
 +
#
 +
###########
 +
# Correct #
 +
###########
 +
#kvmd:
 +
#    gpio:
 +
#        drivers: ...
 +
#        scheme: ...
 +
#
 +
###########
 +
# Example #
 +
###########
 +
#vnc:
 +
#    # See https://github.com/pikvm/pikvm/blob/master/pages/vnc.md
 +
#    keymap: /usr/share/kvmd/keymaps/ru # Set russian keymap
 +
#    auth:
 +
#        vncauth:
 +
#            enabled: true # Enable auth via /etc/kvmd/vncpasswd
 +
kvmd:
 +
    gpio:
 +
        drivers:
 +
            ez:
 +
                type: ezcoo
 +
                protocol: 2
 +
                device: /dev/ttyUSB0
 +
            wol_server1:
 +
                type: wol
 +
                mac: 00:00:00:00:00:201
 +
                ip: 192.0.2.1
 +
                port: 9
 +
            wol_server2:
 +
                type: wol
 +
                mac: 00:00:00:00:00:02
 +
                ip: 192.0.2.2
 +
                port: 9
 +
        scheme:
 +
            ch0_led:
 +
                driver: ez
 +
                pin: 0
 +
                mode: input
 +
            ch1_led:
 +
                driver: ez
 +
                pin: 1
 +
                mode: input
 +
            ch2_led:
 +
                driver: ez
 +
                pin: 2
 +
                mode: input
 +
            ch3_led:
 +
                driver: ez
 +
                pin: 3
 +
                mode: input
 +
            ch0_button:
 +
                driver: ez
 +
                pin: 0
 +
                mode: output
 +
                switch: false
 +
            ch1_button:
 +
                driver: ez
 +
                pin: 1
 +
                mode: output
 +
                switch: false
 +
            ch2_button:
 +
                driver: ez
 +
                pin: 2
 +
                mode: output
 +
                switch: false
 +
            ch3_button:
 +
                driver: ez
 +
                pin: 3
 +
                mode: output
 +
                switch: false
 +
            wol_server1:
 +
                driver: wol_server1
 +
                pin: 0
 +
                mode: output
 +
                switch: false
 +
            wol_server2:
 +
                driver: wol_server2
 +
                pin: 0
 +
                mode: output
 +
                switch: false
 +
        view:
 +
            table:
 +
                - ["#Input 1", ch0_led, ch0_button]
 +
                - ["#Server 1", "wol_server1|Send Wake-on-LAN"]
 +
                - ["#Input 2", ch1_led, ch1_button]
 +
                - ["#Server 2", "wol_server2|Send Wake-on-LAN"]
 +
                - ["#Input 3", ch2_led, ch2_button]
 +
                - ["#Input 4", ch3_led, ch3_button]
 +
</syntaxhighlight>
 +
kvmd: 配下を追加します。MAC アドレスと IP アドレスは、環境に合わせて書き換えが必要です。
 +
 +
[[ファイル:PiKVM ezcoo gui.jpg|代替文=PiKVM ezcoo gui|なし|フレーム|PiKVM ezcoo gui]]
 +
yaml の設定・サービス再起動がうまく行っていれば、上記の表示になり、以下が可能です。
 +
 +
* Click ボタンをクリックすると、PiKVM から ezcoo のポートを切り替え可能
 +
* Send Wake-on-LAN をクリックすると、指定した MAC アドレスに WoL を送信、電源 On
 +
 +
神だ・・・
  
 
== TailScale VPN による VPN アクセス ==
 
== TailScale VPN による VPN アクセス ==
 +
[https://docs.pikvm.org/tailscale/#for-each-device-you-wish-to-access-pikvm Tailscale VPN] を見て設定。あとはコントロール元の Windows PC にもインストールすれば、
 +
 +
100.64.0.0/10 のインターフェース経由でリモートアクセスが可能になります。
 +
 +
仕組みはここの記事<ref>100台まで無料のVPNサービス「tailscale」、リンクだけでマシンのシェアも可能!? https://internet.watch.impress.co.jp/docs/column/shimizu/1303751.html</ref>が詳しいです。
 +
 +
== 外部リンク ==
 +
[https://docs.pikvm.org/v3/ PiKVM Handbook]
 +
 +
* [https://docs.pikvm.org/ezcoo/ ezCoo managed multiport KVM switch]
 +
* [https://docs.pikvm.org/tailscale/#for-each-device-you-wish-to-access-pikvm Tailscale VPN]
 +
 +
[https://zigsow.jp/item/361953/review/372633 憧れのKVM over IPを手軽?に導入]
 +
 +
[https://internet.watch.impress.co.jp/docs/column/shimizu/1303751.html 100台まで無料のVPNサービス「tailscale」、リンクだけでマシンのシェアも可能!?]
 +
<references />
 +
[[カテゴリ:ラボ]]

2022年2月5日 (土) 07:40時点における最新版

2021/12 に PiKVM を導入した記録。

目的

IPMI も vPro も無い NUC を、遠隔から ESXi インストールができるようにしたい。

できること

  • PC / iPad などのブラウザから、遠隔地の PC やサーバを IP 経由でコントロールできる
    • HDMI 出力・キーボード・マウス接続を、Web ブラウザからコントロール
    • 市販の HDMI エクステンダでは、HDMI --- LAN --- HDMI のため手軽さが無い
    • 市販の HDMI + KVM スイッチは、非常に高価
  • USB 経由で ISO をマウントし、OS をインストールできる
    • インターネット経由だと転送が遅いため、PiKVM がある場所に Windows VM + NAS があると速い
  • Read-Only ファイルシステムのカスタム Arch Linux で動作し、SD カードの書き換え限界を回避
    • カスタム Arch Linux の GUI の出来が非常に良い
  • ATX 電源であれば、電源 off / on も可能
    • hkatou Lab はインテリジェント PDU で off / on しているため、未使用
  • Tailscale VPN で外部アクセス不可な NAT 配下の環境でも、外部からアクセスが可能

できないこと

  • IPMI とは違い、対象機器の CPU 温度などはモニタできない
  • リアルタイム性はそれなりで、~100ms 程度の遅延がある

コスト

全体コスト
構成 品名 購入先 価格 個数 備考
PiKVM Raspberry Pi4 Model B 4GB スイッチサイエンス \7,700 1 本体
Pi4 用 AC アダプタ Amazon.co.jp \1,139 1
PiKVM v3 HAT + Steel Case kickstarter \20,125 1 Pi4 にかぶせる HAT とケース
HDMI ケーブル \0 1 そのへんにあった短いやつ
小計 \28,964
オプション ezcoo HDMI KVM Switch Amazon.com \15,374 1 HDMI と USB3.0 の KVM スイッチ
USB 3.0 A-Aオスケーブル 0.5M x2 Amazon.co.jp \1,199 1 A-A で非常に珍しいもの 2 個入
Micro <-> A USBケーブル 0.3m \698 1 PiKVM -> ezcoo コントロール用
HDMI(オス)to mini HDMI(オス)

ケーブル 0.5m

\699 2 NUC の mini HDMI <-> ezcoo 間
小計 \17,970
合計 \47,633

PiKVM と ezcoo はドル決済のため、$1 = 115 円で計算


市販の HDMI KVM エクステンダは 10 万円くらい、IP-KVM エクステンダは 20 万円くらいする (しかも 1 ポート) ため、

吊るしで買う機器よりは安いです。

全体構成

PiKVM+ezcoo
PiKVM+ezcoo

PiKVM と ezcoo HDMI KVM スイッチは、以下で接続します。

  • 左下 : ezcoo コントロール用 Micro USB
  • 中央 : KVM 用 USB-A - C + HDMI
  • 右上 : USB A-to-A x2 + HDMI-to-mini-HDMI x2
    • ↑はわかりにくい写真ですが、KVM 用ケーブルなので PiKVM 本体とは接続されてません ↓ の写真を参照
PiKVM+ezcoo2
PiKVM+ezcoo2

ezcoo の右上にマウスとキーボードを別々に接続する USB ポートがありますが、PiKVM は兼用のため、この画像の背面側に接続します。

PiKVM

2021/12/11 に届いたときの初期導入時

左上から

  • PiKVM v3 HAT
  • PiKVM スチールケース
  • HDMI - mini HDMI ケーブル
  • USB A - Micro USB ケーブル
  • Raspberry Pi4
  • Pi4 AC アダプタ
PiKVM スチールケースの中身
PiKVM スチールケースの中身

FAN や有機 EL ステータス表示液晶などが入っています。


ピンアサイン含め、内容物は公式が詳しいので、そちらで。

https://pikvm.org/

https://www.kickstarter.com/projects/mdevaev/pikvm-v3-hat/description


組み立て手順

細かい組み立て手順は、公式 Youtube憧れのKVM over IPを手軽?に導入 を参考にさせてもらいました。

初期設定

First steps を見てやれば OK.

最低限 SSH CLI パスワードと、https GUI パスワードを設定します。

ezcoo HDMI KVM スイッチ

デフォルトだと 1 台のみコントロールできる、PiKVM を 4 台対応にできる HDMI+KVM スイッチ。

日本では出回っていないため、US の Amazon.com から購入しました。

ezcoo_01
ezcoo_01
ezcoo_02
ezcoo_02
ezcoo_03
ezcoo_03
ezcoo_04
ezcoo_04
ezcoo_05
ezcoo_05

ezcoo HDMI+KVM スイッチ用の PiKVM 設定追加

以下を見て設定します。

私の設定は以下です。

[root@pikvm ~]# cat /etc/kvmd/override.yaml
####################################################################
#                                                                  #
# Override Pi-KVM system settings. This file uses the YAML syntax. #
#                                                                  #
#    https://github.com/pikvm/pikvm/blob/master/pages/config.md    #
#                                                                  #
# All overridden parameters will be applied AFTER other configs    #
# and "!include" directives and BEFORE validation.                 #
# Not: Sections should be combined under shared keys.              #
#                                                                  #
####################################################################
#
#########
# Wrong #
#########
#kvmd:
#    gpio:
#        drivers: ...
#kvmd:
#    gpio:
#        scheme: ...
#
###########
# Correct #
###########
#kvmd:
#    gpio:
#        drivers: ...
#        scheme: ...
#
###########
# Example #
###########
#vnc:
#    # See https://github.com/pikvm/pikvm/blob/master/pages/vnc.md
#    keymap: /usr/share/kvmd/keymaps/ru # Set russian keymap
#    auth:
#        vncauth:
#            enabled: true # Enable auth via /etc/kvmd/vncpasswd
kvmd:
    gpio:
        drivers:
            ez:
                type: ezcoo
                protocol: 2
                device: /dev/ttyUSB0
            wol_server1:
                type: wol
                mac: 00:00:00:00:00:201
                ip: 192.0.2.1
                port: 9
            wol_server2:
                type: wol
                mac: 00:00:00:00:00:02
                ip: 192.0.2.2
                port: 9
        scheme:
            ch0_led:
                driver: ez
                pin: 0
                mode: input
            ch1_led:
                driver: ez
                pin: 1
                mode: input
            ch2_led:
                driver: ez
                pin: 2
                mode: input
            ch3_led:
                driver: ez
                pin: 3
                mode: input
            ch0_button:
                driver: ez
                pin: 0
                mode: output
                switch: false
            ch1_button:
                driver: ez
                pin: 1
                mode: output
                switch: false
            ch2_button:
                driver: ez
                pin: 2
                mode: output
                switch: false
            ch3_button:
                driver: ez
                pin: 3
                mode: output
                switch: false
            wol_server1:
                driver: wol_server1
                pin: 0
                mode: output
                switch: false
            wol_server2:
                driver: wol_server2
                pin: 0
                mode: output
                switch: false
        view:
            table:
                - ["#Input 1", ch0_led, ch0_button]
                - ["#Server 1", "wol_server1|Send Wake-on-LAN"]
                - ["#Input 2", ch1_led, ch1_button]
                - ["#Server 2", "wol_server2|Send Wake-on-LAN"]
                - ["#Input 3", ch2_led, ch2_button]
                - ["#Input 4", ch3_led, ch3_button]

kvmd: 配下を追加します。MAC アドレスと IP アドレスは、環境に合わせて書き換えが必要です。

PiKVM ezcoo gui
PiKVM ezcoo gui

yaml の設定・サービス再起動がうまく行っていれば、上記の表示になり、以下が可能です。

  • Click ボタンをクリックすると、PiKVM から ezcoo のポートを切り替え可能
  • Send Wake-on-LAN をクリックすると、指定した MAC アドレスに WoL を送信、電源 On

神だ・・・

TailScale VPN による VPN アクセス

Tailscale VPN を見て設定。あとはコントロール元の Windows PC にもインストールすれば、

100.64.0.0/10 のインターフェース経由でリモートアクセスが可能になります。

仕組みはここの記事[1]が詳しいです。

外部リンク

PiKVM Handbook

憧れのKVM over IPを手軽?に導入

100台まで無料のVPNサービス「tailscale」、リンクだけでマシンのシェアも可能!?

  1. 100台まで無料のVPNサービス「tailscale」、リンクだけでマシンのシェアも可能!? https://internet.watch.impress.co.jp/docs/column/shimizu/1303751.html