作者:上村崇 フリーランスの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パッケージがありますのでそれを入れた方が簡単だと思います。

[shell] # 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 [/shell]
このあと、nginxとwokを再起動しました
systemctl restart nginx
systemtcl restart wokd

動作確認

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

SSL証明書の設定

インストール直後は
/etc/nginx/conf.d/wok.conf に SSL設定が書いてあります。
[shell] ssl_certificate /etc/wok/wok-cert.pem; ssl_certificate_key /etc/wok/wok-key.pem; [/shell] しかし、これはオレオレ証明書なのでLet’s Encryptのパスに書き換えました。
[shell]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; [/shell]

トラブルシューティング

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

case1

以下のようなエラーが出ました。 [shell] 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 *** [/shell] すでに8000とか8001ポートが他のサービスで使われていたためバッティングしたみたいで、webvirtmgrで使っているsupervisorのサービスを止めると解決しました。
また、nginxの設定でポート8000を使っている記述を探してコメントアウトしました。

case2

「そのようなファイルやディレクトリはありません」と出て起動に失敗しました。
[shell] *** 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 [/shell] kvmのストレージプールのディレクトリに指定しているこのパスが存在しないことが理由でした。

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

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

関連記事


Postfixメールサーバー:送信不可のユーザーを設定する
メールサーバーPostfixにて、送受信ができないユーザーを設定をする方法です。Linux、debian環境です。特定のメールアドレスを送受信不可にします。メールを許可しないLinuxユーザーを作るときに有効です。

Web開発・Web制作のツールや用語を初心者向けに大量紹介。これだけ知っておけば安心。
Webページ製作やWebのシステム開発ではいろんなツールやテクニック、用語を使いますが、全体像がなかなか掴みにくいと思ったので、初心者向けに用語をたくさんまとめました。これさえ押さえておけば業界の常識用語はだいたい網羅できると思います。

Linuxの権限について解説。setuidとかsetgidとかスティッキービットとか
setuidとかsetgidとかスティッキービットの解説です。Linuxのこれらの機能については考え方が難しいですが、setuidは「一般ユーザーがroot権限で動かすことができる仕組み」です。setgidはそのグループ版です。詳細なメカニズムを解説します。

MySQL、MariaDB サブクエリ付きSELECT文SQLを高速化するノウハウ
MariaDBの SELECT(参照系)高速化のために試したことを記録しておきます。 2700万件対象のサブクエリ含むSQLに100秒近くかかっていたのが、10秒を切るところまで高速化できました。 環境: さくらのVPS …

Raspberry Pi を買ってLチカ(LEDライトを点灯)するまで
Raspberry Piを買ってからLチカ(LEDライトを点灯)するまでのノウハウを書きます。 買ったもの Raspberry Pi 3 Model B+ ヤフオクで4400円で買いました。定価は5300円くらい。 Ra …

コメントを残す

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