作者:上村崇 フリーランスのIT系エンジニア
twitter:@uemera facebook:uemura

KVM仮想マシンをWebからアクセスできるKimchiをdebianにインストール


自宅サーバーにてKVMの仮想マシンを動かしていますが、外からでもリモートで操作できるようにkimchiを導入しました。

GitHub – kimchi-project/kimchi: An HTML5 management interface for KVM guests

私の環境

debian Linux 9.11 (stretch)
・nginx
Kimchi Ver 2.5.0 (2017/8/16)
・SSL (Let’s Encrypt導入済み)
・KVMは動作済み(libvirtとかqemuは導入済み)

今まではVNCで自宅マシンに接続して、そのデスクトップ上で動いているVM仮想マシンマネージャを使って操作していたんですが、VNCの動作が遅かったし、やや不安定でうまくつながらない時がありました。
それでWebのインターフェースを探した結果、Kimchiに落ち着きました。Webブラウザで仮想マシンの状況や操作ができるのでとても便利です。
kimchiのほかに、webvirtmgrというツールも試しました。
しかし、httpではうまく繋がりましたがhttpsで接続するとnovncの起動時に接続エラーになり、それが解決できなかったので諦めました。
KimchiはSSL環境でもうまく動作しました。
なんでKimchiっていう名前なのか謎です。インストール作業中、別にキムチが好きでもないのにいちいちあの赤い食べ物が頭をよぎるのは苦痛でしたが耐えながら作業しました。


ログイン画面


仮想マシン一覧画面


仮想マシン(Windows)を起動したところ。ブラウザがもう1つ用意されてデスクトップを操作できます。


インストール

2019/10時点の最新版2.5.0を使いました。
これより最新がある場合は適宜読みかえてください。
Release 2.5.0 · kimchi-project/kimchi · GitHub
https://github.com/kimchi-project/kimchi/releases/tag/2.5.0

このページにある
kimchi-2.5.0-0.noarch.deb
wok-2.5.0-0.noarch.deb
を入れます。
kimchiはwokというデーモンの上で動くプラグインという位置づけであり、両方インストールする必要があります。
ginger-baseというパッケージは以前は必要でしたが、今は必要ありません。
ソースファイルからコンパイルする方法もありますが、debパッケージがありますのでそれを入れた方が簡単だと思います。

# debを取得する
wget https://github.com/kimchi-project/kimchi/releases/download/2.5.0/wok-2.5.0-0.noarch.deb
wget https://github.com/kimchi-project/kimchi/releases/download/2.5.0/kimchi-2.5.0-0.noarch.deb

# wok をインストール。まず依存関係にあるパッケージを入れる
# (あなたの環境では他にも必要なパッケージがあるかも知れません)
apt-get install python-cherrypy3 python-cheetah gettext python-m2crypto python-ldap fonts-font-awesome
# wok インストール
dpkg -i wok-2.5.0-0.noarch.deb

# kimchiをインストール。依存関係にあるパッケージを先に入れる。
# (あなたの環境では他にも必要なパッケージがあるかも知れません)
apt-get install python-parted python-ethtool sosreport python-guestfs spice-html5 python-magic

# kimchi インストール
dpkg -i kimchi-2.5.0-0.noarch.deb

このあと、nginxとwokを再起動しました
systemctl restart nginx
systemtcl restart wokd

動作確認

https://ホスト名:8001
でつながります。
ファイヤウォールやNATを設定している人はこの8001ポートを通過させるようにしてください。
ログインIDは、もともと存在するOSのユーザー/パスワードを使えば入れます。

SSL証明書の設定

インストール直後は
/etc/nginx/conf.d/wok.conf に SSL設定が書いてあります。
ssl_certificate /etc/wok/wok-cert.pem;
ssl_certificate_key /etc/wok/wok-key.pem;
しかし、これはオレオレ証明書なのでLet’s Encryptのパスに書き換えました。
ssl on;
ssl_certificate /etc/letsencrypt/live/example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/example.com/privkey.pem;
ssl_ciphers RC4-SHA:HIGH:!ADH;

トラブルシューティング

wokのログファイルは /var/log/wok/wok-error.log にあります。

case1

以下のようなエラーが出ました。
Push server created on address /run/user/0/woknotifications


*** Kimchi: Running feature tests ***
Service Libvirtd running ...: True
NFS Target Probe support ...: True
Fibre Channel Host support .: True
Kernel VFIO support ........: True
Network Manager running ....: True
Memory Hotplug support .....: True
*** Kimchi: Feature tests completed ***


Failed to import plugin plugins.kimchi.Kimchi, error: An error occurred, but the cause is unknown
[18/Oct/2019:16:10:43] ENGINE Listening for SIGHUP.
[18/Oct/2019:16:10:43] ENGINE Listening for SIGTERM.
[18/Oct/2019:16:10:43] ENGINE Listening for SIGUSR1.
[18/Oct/2019:16:10:43] ENGINE Bus STARTING
[18/Oct/2019:16:10:44] ENGINE Serving on http://127.0.0.1:8010


*** Kimchi: Running dependable feature tests ***
QEMU stream support .......: False
Libvirt Stream Protocols ..: ['http', 'https', 'ftp', 'ftps', 'tftp']
*** Kimchi: Dependable feature tests completed ***
すでに8000とか8001ポートが他のサービスで使われていたためバッティングしたみたいで、webvirtmgrで使っているsupervisorのサービスを止めると解決しました。
また、nginxの設定でポート8000を使っている記述を探してコメントアウトしました。

case2

「そのようなファイルやディレクトリはありません」と出て起動に失敗しました。
*** Kimchi: Running feature tests ***
Service Libvirtd running ...: True
NFS Target Probe support ...: True
Fibre Channel Host support .: True
Kernel VFIO support ........: True
Network Manager running ....: True
Memory Hotplug support .....: True
*** Kimchi: Feature tests completed ***


Fatal: Unable to create storage pool default.
Details: cannot open directory '/hoge/hoge/hoge/hoge': そのようなファイルやディレクトリはありません
Failed to import plugin plugins.kimchi.Kimchi, error: Storage pool default does not exist or is not active. Please, check the configuration in /etc/kimchi/template.conf to ensure it lists only valid storage.
[20/Oct/2019:00:29:27] ENGINE Listening for SIGHUP.
[20/Oct/2019:00:29:27] ENGINE Listening for SIGTERM.
[20/Oct/2019:00:29:27] ENGINE Listening for SIGUSR1.
[20/Oct/2019:00:29:27] ENGINE Bus STARTING
[20/Oct/2019:00:29:28] ENGINE Serving on http://127.0.0.1:8010
kvmのストレージプールのディレクトリに指定しているこのパスが存在しないことが理由でした。

/etc/kimchi/template.conf
に以下の記述があります。
pool = default
このpool(default)のパスを変更するか、別のpool名を指定すれば良いです。

ストレージプールの一覧は
virsh pool-list
で調べられます。
VM管理マネージャーのGUIだと、「接続の詳細」でも見られます。

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です