之前许多年一直用proxmox ve,确实不错,功能完备。
缺点就是自身占用内存1g多,在配置较低的机器上(比如我之前说的虚拟机开虚拟机)就难受了。
所以我这切换为手工管理,但是又没有一个很方便的管理途径,virsh命令的参数都好几屏,真心记不住,再加上一些使用时需要留意的细节,也是有些难受。
这个周末在找方便管理的工具,搞来搞去都大同小异,而且这个比较冷门,许多项目都停更十几甚至二十年了。。。
最终找到一个cockpit,看起来还算活跃,试用了一下还可以,虽然不及proxmox ve那么完善,但是个人使用足够。
既然动手写了,那就从0开始吧,首先安装虚拟机运行需要的东西,debian系统:
apt install -y qemu-kvm libvirt-daemon-system virtinst libvirt-clients bridge-utils
我这是用宿主机做dnat和MASQUERADE的:
#共享上网 echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf sysctl -p #下面这个必须 iptables -t nat -A POSTROUTING -s 172.16.0.0/16 -j MASQUERADE #映射虚拟机的3389给外面 iptables -t nat -A PREROUTING -d 宿主机ip -p tcp --dport 55888 -j DNAT --to 虚拟机ip:3389
然后是网络配置/etc/network/interface
auto lo
iface lo inet loopback
iface enp6s16 inet manual
auto vmbr0
iface vmbr0 inet static
address IPv4cidr
gateway ipv4网关
bridge-ports enp6s16
bridge-stp off
bridge-fd 0
dns-nameservers 1.1.1.1 8.8.8.8
#下面这行可选,在某些虚拟机环境需要
up ip link set vmbr0 address fa:16:3e:61:b9:a7
iface vmbr0 inet6 static
address ipv6cidr
gateway ipv6网关
bridge-ports enp6s16
bridge-stp off
bridge-fd 0
auto vmbr0:0
iface vmbr0:0 inet static
address 172.16.0.1/16l里面设置mac地址的那个,是因为某些环境在网关做了ip和mac绑定,所以不加这一行就会全部断网,比如ovh的虚拟机环境,把地址替换为对外网卡的mac。
到这里就完成了,重启一下,如果网络没断,则虚拟机的运行环境就完成了。当然,你需要确定bios里面打开了硬件虚拟化的设置,一般都是开的。如果重启了连不上,那就自行排查吧。。。
===========
补充一下,我记得有个virtinst的命令要执行一下,但是不执行也是可以的,我后续的机器是没有执行的。
下面这部分根据你自己喜好来,这是我存放iso的路径:
mkdir -p /iso chmod -R 644 /iso chown -R root:libvirt /iso chmod o+x /iso chown :libvirt /iso chmod g+x /iso chmod 755 /iso ln -s /iso/ /root/iso
==============
然后是管理界面。
apt install -y cockpit cockpit-machines
然后如果你需要直接用root登录,需要编辑这个文件,把root注释掉:
nano /etc/cockpit/disallowed-users
安全考虑,这里需要改动一下绑定的地址:
nano /usr/lib/systemd/system/cockpit.socket
对应行改为
ListenStream=127.0.0.1:9090
最后重载、重启相关服务:
systemctl daemon-reload systemctl restart cockpit.socket systemctl restart cockpit
我是用nginx进行反代的,配置如下:
server {
# 监听公网 HTTPS 端口(443)
listen 443 ssl;
# 若需要 IPv6,添加:
listen [::]:443 ssl;
http2 on;
# 你的域名(或服务器公网 IP),例如 cockpit.tingtao.org
server_name 你的域名 ;
# SSL 证书路径(替换为你的证书文件)
ssl_certificate 证书 ;
ssl_certificate_key 证书 ;
# SSL 安全配置(推荐)
ssl_protocols TLSv1.2 TLSv1.3;
ssl_prefer_server_ciphers on;
ssl_ciphers "EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH";
ssl_session_cache shared:SSL:10m;
ssl_session_timeout 1d;
ssl_stapling on;
ssl_stapling_verify on;
# 反向代理到 Cockpit 本地监听地址
location / {
# 代理目标(Cockpit 本地地址)
proxy_pass https://127.0.0.1:9090;
# 保留客户端 IP 和请求头
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
# 支持 WebSocket(Cockpit 依赖 WebSocket 实时交互)
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
# 超时设置(适应长连接)
proxy_read_timeout 300s;
proxy_send_timeout 300s;
}
}
# 可选:将 HTTP 自动重定向到 HTTPS
server {
listen 80;
listen [::]:80;
server_name 你的域名 ;
return 301 https://$host$request_uri;
}
如果nginx重启没问题的话,就可以浏览器来进行管理了,还是比较方便的:




目前发现不太方便的地方:
1,硬盘扩容需要自己去执行命令
2,我是自己手工创建的网桥,这部分没有接受cockpit管理,因为不方便关闭现有虚拟机,所以不知道从这个界面创建网桥是怎么回事。不过这个不影响使用
3,快照的创建必须在虚拟机关闭的状态才能执行。
4,还有些细节,想不起来了
总体来说算是很不错的,虽然比pve差不少。
开盘了,回头继续补充
