libvirt / QEMU 上の仮想マシンを Web ブラウザから管理するための Web UI です。
- Python (Flask) + libvirt ベースの Web アプリケーション
- systemd サービス (
vm-manage) として動作 - Tailscale serve により HTTPS 化し、Tailnet 内からのみアクセス可能
- アプリは
127.0.0.1:8090のみで待ち受けるため、LAN からは直接アクセス不可
インストールスクリプトを GitHub からダウンロードして、root で実行します。
cd ~
curl -fsSL https://raw.githubusercontent.com/hirogura/vmmanager/main/install-vmmanager1.sh -o install-vmmanager1.sh
chmod +x install-vmmanager1.sh
sudo ./install-vmmanager1.sh- システムパッケージのインストール(Python, libvirt, QEMU, noVNC など)
libvirtdサービスの有効化- ストレージプールの設定
- デフォルトプール
defaultを/opt/vmに向けます(/opt/vmが無ければ作成します) /isoディレクトリが存在する場合はisoプールとして追加します
- デフォルトプール
- Tailscale のインストール(未導入の場合)
- GitHub リポジトリからアプリ本体を
/opt/vm-manageに取得 - Python 仮想環境と Flask のセットアップ
- systemd サービス (
vm-manage.service) の作成・起動 tailscale serveでポート8090を HTTPS 公開(Tailnet 内のみ)- さらに
/websockifyを VNC コンソール(WebSocket)用に同じ8090上で公開
- さらに
インストール完了時に表示される URL からアクセスします。
https://<マシン名>.<テイルネット名>.ts.net:8090
例: https://myhost.my-tailnet.ts.net:8090
- アクセスできるのは 同じ Tailnet にログインしている端末のみ です
- HTTPS 証明書は Tailscale が自動で発行します
- Tailscale に未ログインの場合は、初回実行時に
tailscale upの認証が必要です (表示される URL をブラウザで開いてログインしてください)
サービスとアプリ本体を削除します。
sudo systemctl stop vm-manage.service
sudo systemctl disable vm-manage.service
sudo rm -f /etc/systemd/system/vm-manage.service
sudo systemctl daemon-reload
sudo rm -rf /opt/vm-manageTailscale serve の公開設定も削除する場合:
sudo tailscale serve --https=8090 off
sudo tailscale serve --https=8090 --set-path=/websockify offTailscale 自体をアンインストールする場合:
sudo tailscale logout
sudo apt remove -y tailscale※ VM 本体(libvirt で管理されている仮想マシンやディスク)は削除されません。仮想マシン自体を削除する場合は別途 virsh などを使用してください。
cd /opt/vm-manage
python3 -m venv --system-site-packages venv
venv/bin/pip install flask
venv/bin/python app.py # http://127.0.0.1:8090
このプロジェクトは MIT License の下で公開されています。