kregel/homestead

一个 Laravel Nova 工具。


README

Latest Version on Packagist Total Downloads

你是否曾希望有一个管理虚拟机的界面,而不要让它看起来像是2000年代初的样子?不必再找了。这个软件包旨在满足一个非常非常非常小的爱好者的细分市场,他们既有 Laravel Nova 下载,又需要管理虚拟机。

这个软件包目前支持远程管理,所以假设你打开了托管此应用程序的服务器上的所有端口,并且你连接的用户有权访问所有文件,你可以在 DigitalOcean 服务器上托管此应用程序,并管理你家里的虚拟机服务器。😉

快速导航

替代方案是什么?

好吧,对于这个特定的软件,我不太了解有其他替代方案...(它们可能存在...)

Virtual machine access via novnc

查看其他截图

目标

为仅创建新虚拟机提供非常基本的创建/读取/更新/删除功能。

  • 创建 (#1)
  • 读取
  • 更新
  • 删除
  • 启动虚拟机
  • 停止虚拟机
  • 强制停止虚拟机
  • 通过 VNC 访问
  • 重启虚拟机
  • SSH 远程管理
  • SSH 私钥认证
  • 密码认证
  • 多个虚拟化程序
  • 自定义网络
  • 编辑虚拟机的磁盘(增加大小,更改格式?)

奖金

  • 添加透传设备?
  • 添加快照?(看起来可能可以通过 libvirt 实现)
  • 给虚拟机添加标签,并在 UI 中管理标签。
  • 添加一种让虚拟机从远程源下载 ISO 的方式。
  • 添加一种管理 ISO 的方式,这样你的虚拟机就不需要从外部服务器下载 ISO。
  • 查看虚拟机 CPU 统计信息,并在虚拟机的显示页上以图表形式显示。
  • 测试驱动程序 LXC - Linux 容器
  • 测试驱动程序 OpenVZ
  • 测试驱动程序 QEMU
  • 测试驱动程序 VirtualBox
  • 测试驱动程序 VMware ESX
  • 测试驱动程序 VMware Workstation/Player
  • 测试驱动程序 Xen
  • 测试驱动程序 Microsoft Hyper-V
  • 测试驱动程序 Virtuozzo
  • 测试驱动程序 Bhyve - BSD 虚拟机管理程序
  • Qcow2 磁盘加密(QEMU)

在开始之前。

这只是一个管理程序的管理仪表板。如果你愿意,可以称之为虚拟机管理程序控制台。你不需要在提供服务的 Web 服务器上安装 qemu 或 virt-manager。然而,你需要使用本软件包中包含的 libvirt 库。本软件包中构建的库已经进行了修补和更新,以减少隐藏的错误消息并修复一些错误。

安装此软件包

composer require kregel/nova-homestead

让 Nova 了解其存在。

// In your app/Providers/NovaServiceProvider.php

public function tools()
{
    return [
        // ...
        new \Kregel\Homstead\Homestead(),
    ];
}

安装 libvirt-php。

预安装构建工具

sudo apt install build-essential autoconf automake libtool bison re2c pkg-config libvirt-dev libxml2-dev xsltproc libxml2-utils libmagickwand-dev

另外,确保你的 PHP 实例已安装并启用了 imagick

git clone git@github.com:austinkregel/libvirt-php
cd libvirt-php
./autogen.sh
make
sudo make install

安装 VNC 客户端

为了直接查看您的虚拟机(VM)的输出,您需要使用这个VNC客户端。我仅在Ubuntu 19.04的QEMU上亲自测试过novnc

sudo apt update
sudo apt install snapd
sudo snap install novnc

管理 VNC

目前,我理解要查看虚拟机的tty会话,我们必须启动一个新的novnc实例来代理该虚拟机的输出到您的浏览器。目前,我还不确定如何支持这一点。如果您知道如何管理这一点,请提出一个issue或PR!

因此,目前我只是用1个虚拟机进行测试,并且我手动启动了一个novnc实例。我知道这有点麻烦,但现在它有效。

权限

确保用户有访问libvirt-qemu组的权限。通常这意味着以root用户运行程序,但如果您知道其他方法,也请尝试一下。

开发和贡献此项目

有关详细信息,请参阅CONTRIBUTING

发行说明

随着这个项目的不断发展和完善,您可以在Changelager上跟踪发行信息。

libvirt-php自动完成

目前有一个名为build-doc.php的脚本,它将从libvirt库中提取所有方法并将其放入.phpstorm.meta.php文件中。这些方法内部发生的逻辑只能在原始的C/C++代码的./docker/php/libvirt-php/src目录中找到。

抽象化

此包的底层API不需要Laravel Nova,并且可以在其外部使用。您只需确保使用任何版本>5.0的illuminate/support即可。

安全

如果您发现任何与安全相关的问题,请通过电子邮件security@metabit.services而不是使用issue跟踪器。

许可证

MIT许可证(MIT)。有关更多信息,请参阅许可文件

支持

如果您喜欢我的内容,请考虑在Kofi上支持我。