Debian 10 安装 webvirtcloud管理KVM并安装windows server 2019虚拟机,映射远程桌面,服务器篇
公网安装webvirtcloud来管理kvm虚拟机
因为需要败了一台实体香港服务器。同时呢因为特殊需求需要在服务器上装个windows server 2019
废话不多说 走起
kvm这玩意我不是很懂。在加上服务器的系统没有UI界面。所以最好由个web系统来管理虚拟机。找来找去相中了 webvirtcloud这个开源项目,因为新。。我喜欢新的 八百年没人维护的项目不敢用。。
项目地址:https://github.com/retspen/webvirtcloud
readme有安装说明。。不过这玩意按照作者的安装说明装完了有权限问题。。。第一次安装失败了 各种报错找不到原因的大坑。。这次调整方案(下面是官方的安装方式)
Install WebVirtCloud panel (Ubuntu 18.04+ LTS):
sudo apt-get -y install git virtualenv python3-virtualenv python3-dev python3-lxml libvirt-dev zlib1g-dev libxslt1-dev nginx supervisor libsasl2-modules gcc pkg-config python3-guestfs libsasl2-dev libldap2-dev libssl-dev
git clone https://github.com/retspen/webvirtcloud
cd webvirtcloud
cp webvirtcloud/settings.py.template webvirtcloud/settings.py
# now put secret key to webvirtcloud/settings.py
sudo cp conf/supervisor/webvirtcloud.conf /etc/supervisor/conf.d
sudo cp conf/nginx/webvirtcloud.conf /etc/nginx/conf.d
cd ..
sudo mv webvirtcloud /srv
sudo chown -R www-data:www-data /srv/webvirtcloud
cd /srv/webvirtcloud
virtualenv -p python3 venv
source venv/bin/activate
pip install -r conf/requirements.txt
python3 manage.py migrate
python3 manage.py collectstatic --noinput
sudo chown -R www-data:www-data /srv/webvirtcloud
sudo rm /etc/nginx/sites-enabled/default
看到了需要用到www-data这个用户。。
因为服务器登录直接是root用户 懒得再搞其他用户了 直接用这个www-data吧。我是Debian 记得装 sudo .
apt install sudo
需要切换到 www-data用户 。但是这个内置的用户是无法登录的 所以
因为我又比较懒 搞了个宝塔面板。。所以上面的命令需要调整一下(如果没有www-data可能是因为没装nginx 用宝塔装一个)
vi /etc/passwd
原来啥样的忘记了。。反正我就改成这个样子了
记得给www-data弄个密码 要不sodu命令用不了
sudo apt-get -y install git virtualenv python3-virtualenv python3-dev python3-lxml libvirt-dev zlib1g-dev libxslt1-dev libsasl2-modules gcc pkg-config python3-guestfs libsasl2-dev libldap2-dev libssl-dev
# 将nginx和 supervisor 暂时删掉 因为宝塔里有。。而且还再用着 怕冲突
git clone https://github.com/retspen/webvirtcloud
cd webvirtcloud
cp webvirtcloud/settings.py.template webvirtcloud/settings.py
cd ..
sudo mv webvirtcloud /srv
sudo chown -R www-data:www-data /srv/webvirtcloud
cd /srv/webvirtcloud
virtualenv -p python3 venv
source venv/bin/activate
pip install -r conf/requirements.txt
python3 manage.py migrate
python3 manage.py collectstatic --noinput
sudo chown -R www-data:www-data /srv/webvirtcloud
#python 如果报错有依赖问题就把markdown降低一下版本 装的时候没截图就不放了
去宝塔创建个web
记得换成自己的域名并且解析。
确认以后点config 中文版忘记叫啥了。。我讨厌绑定手机号 。。所以就用个英文版。。要是英文的也绑手机号我就不用面板了。或者自己写一套
server {
listen 80;
server_name kvm.xxx.com;
#access_log /var/log/nginx/webvirtcloud-access_log;
access_log /home/www-data/webvircloudlogs/kvm.xxx.com-access_log.log;
error_log /home/www-data/webvircloudlogs/kvm.xxx.com.error.log;
location /static/ {
root /srv/webvirtcloud;
expires max;
}
location / {
proxy_pass http://127.0.0.1:8000;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-for $proxy_add_x_forwarded_for;
proxy_set_header Host $host:$server_port;
proxy_set_header X-Forwarded-Proto $remote_addr;
proxy_set_header X-Forwarded-Ssl off;
proxy_connect_timeout 1800;
proxy_read_timeout 1800;
proxy_send_timeout 1800;
client_max_body_size 1024M;
}
location /novncd/ {
proxy_pass http://wsnovncd;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
location /socket.io/ {
proxy_pass http://wssocketiod;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}
}
upstream wsnovncd {
server 127.0.0.1:6080;
}
upstream wssocketiod {
server 127.0.0.1:6081;
}
把这个配置文件复制进去 。。其实就是webvirtcloud的nginx配置文件 修改了监听域名 添加了个日志而已。。其实我感觉不用再面板设置一遍反向代理 直接改这个配置文件就行。。但是不知道为什么 我就是不好使 。。添了一个反向代理以后再改配置文件就可以用了 也不知道是什么原因 懒得研究了
www-data@S202305087692:~$ ssh-keygen #创建密钥
然后三步回车 好像是 如果让你输入密码的话别输入 直接回车。。要不web那边ssh登录root会不好使。而且还没提示
全部默认设置
接下来继续输入
# 刚才密钥保存目录
cat > /home/www-data/.ssh/config << EOF
Host *
StrictHostKeyChecking no
EOF
ssh-copy-id root@你的Ip
然后输入你的root密码这个应该必须是root用户。。因为创建虚拟机什么的用的是libvirtd 需要root权限才能执行
登录完了
接着设置 supervisor,这个软件宝塔有 可以自己再 应用商店下载。。但是配置应该跟原始的不一样。。如果不用宝塔 直接按照官方的配置文件复制过去就完了。。
打开 webvirtcloud/conf/supervisor/webvirtcloud.conf 看看都是咋写的
按照相应的格式写进去 一共3个
都配置好了以后
然后到宝塔的防火墙设置把6080, 6081,放开否则 noVnc会不好使
然后安装下面这个
wget -O - https://bit.ly/36baWUu | sudo sh
如果卡住了试试输入下 www-data的密码试试。。不知道为啥在我这没有让我输入密码 直接卡住了。。当时懵了好一会
然后输入web的网址进入web管理界面 默认密码是 admin
保存 正常的话就应该是下面这样
然后就可以去创建实例了
随便选一个
需要提前自己准备好 系统的安装镜像 和 virtio-win 镜像 上传到刚才创建好的iso目录
virtio-win镜像下载地址: 点击下载
点设置
分别点击挂在 把iso文件挂在上 virtio-win是磁盘驱动 否则win2019会找不到硬盘
返回电源 点击开机
访问->控制台
网页端这个玩意非常的卡。。先凑合把系统装上
找不到硬盘 我们早有准备 点击加载驱动程序
点击浏览
已经找到驱动了点击下一步
剩下的就不用再教了。。装系统而已。。
设置Administrator密码。。就算是win10你也得搞它。。因为网页端实在是太卡了 我们得弄个远程桌面
先点那个 。。地下人家告诉你了。。。我始终感觉微软特么脱裤子放屁。。服务器当然是再机房里面。。就不能默认开启远程桌面一类的玩意?
在外网是无法访问这个远程桌面的 需要配置端口转发。。
先去宝塔把3389端口放开。。
然后去虚拟机看看ip是多少
到PowerShell里输入命令 ipconfig
确认IP。。 如果有需要可以设置固定IP 这里就用这个凑合用吧。。反正几乎也不会变
然后回到宿主机 linux系统 写两条 iptables规则
sudo iptables -t nat -I PREROUTING -p tcp --dport 3389 -j DNAT --to-destination 192.168.122.46:3389
sudo iptables -t nat -I POSTROUTING -p tcp --dport 3389 -j SNAT --to-source 10.0.0.1
将10.0.0.1 换成你自己的Ip
用自己的电脑远程桌面连接就行 IP地址是公网IP
正常情况加就应该就可以可以了。。不过我这有点不正常。。记录一下。。
iptables -t nat -L -n -v
查看iptables 的nat规则
主要是这两条 因为我这个有Docker 所以上面的命令要用 -I 添加。。这是iptables的规则。。。我就不说了。。
当时我就这样 规则都正常 各种抓包折腾了好久 就是转发不过去。。
直到后来突然特么开窍了 于是
iptables -L FORWARD -v -n
Chain FORWARD (policy DROP 0 packets, 0 bytes)
pkts bytes target prot opt in out source destination
74 3848 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:10022 LOG flags 0 level 4
0 0 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:22 LOG flags 0 level 4
0 0 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp spt:23389 LOG flags 0 level 4
15 780 LOG tcp -- * * 0.0.0.0/0 0.0.0.0/0 tcp dpt:23389 LOG flags 0 level 4
674K 1243M ACCEPT all -- * virbr0 0.0.0.0/0 192.168.122.0/24 ctstate RELATED,ESTABLISHED
522K 28M ACCEPT all -- virbr0 * 192.168.122.0/24 0.0.0.0/0
5 1640 ACCEPT all -- virbr0 virbr0 0.0.0.0/0 0.0.0.0/0
214 11068 REJECT all -- * virbr0 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
0 0 REJECT all -- virbr0 * 0.0.0.0/0 0.0.0.0/0 reject-with icmp-port-unreachable
61332 18M DOCKER-USER all -- * * 0.0.0.0/0 0.0.0.0/0
61332 18M DOCKER-ISOLATION-STAGE-1 all -- * * 0.0.0.0/0 0.0.0.0/0
35505 13M ACCEPT all -- * br-9111c0593d6c 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
174 10307 DOCKER all -- * br-9111c0593d6c 0.0.0.0/0 0.0.0.0/0
17841 3611K ACCEPT all -- br-9111c0593d6c !br-9111c0593d6c 0.0.0.0/0 0.0.0.0/0
164 9837 ACCEPT all -- br-9111c0593d6c br-9111c0593d6c 0.0.0.0/0 0.0.0.0/0
2686 417K ACCEPT all -- * docker0 0.0.0.0/0 0.0.0.0/0 ctstate RELATED,ESTABLISHED
0 0 DOCKER all -- * docker0 0.0.0.0/0 0.0.0.0/0
5115 526K ACCEPT all -- docker0 !docker0 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- docker0 docker0 0.0.0.0/0 0.0.0.0/0
11 564 ufw-before-logging-forward all -- * * 0.0.0.0/0 0.0.0.0/0
11 564 ufw-before-forward all -- * * 0.0.0.0/0 0.0.0.0/0
11 564 ufw-after-forward all -- * * 0.0.0.0/0 0.0.0.0/0
11 564 ufw-after-logging-forward all -- * * 0.0.0.0/0 0.0.0.0/0
11 564 ufw-reject-forward all -- * * 0.0.0.0/0 0.0.0.0/0
11 564 ufw-track-forward all -- * * 0.0.0.0/0 0.0.0.0/0
0 0 ACCEPT all -- * * 0.0.0.0/0 192.168.122.0/24 state
注意看到 virbr0 的两条 REJECT
virbr0 是KVM的网关。。应该叫这个吧 。。 把这两条删掉
iptables -D FORWARD 9
iptables -D FORWARD 8
9和8是行。。先删大数。。删小的就执行两次8
我的是删掉以后就可以了。。
好了 就到这里把。。
这篇博客很多东西都是错的。。
反正错了也能用。我也是临时用一下。
www-data的权限问题。。root在web端ssh会不会有安全问题等等。。如果生产环境这是妥妥的准备跑路的干法。。不过也就是临时凑合用一下。临时记录一下
更多推荐
所有评论(0)