使用 Websockify 並連結 noVNC 網頁端

前言

在上一篇文章中,我們使用了 Cloudflare Zero Trust 來讓 VNC 能在瀏覽器上控制。但假設我今天就沒有使用 Zero Trust 的習慣,我能不能創造出一個獨立的 VNC 平台,提供他人或自己使用?

因此這篇文章我們就要使用 Github 上的 novnc/noVNC 將他打造出來,而這個文章將會在 Linux 上操作。

下載 Repo

我們需要在一個資料夾中將他給 clone 進來,而我的習慣是將他放在 /var 底下,你也可以自己改變他。

mkdir /var/vnc && cd /var/vnc

使用 git clonenovnc/noVNC 下載進來。

git clone https://github.com/novnc/noVNC .

安裝 Websockify

當我們將他 clone 進來之後,他預設是沒有 Websockify 的,但是透過執行在 utils 底下的 novnc_proxy,他就會自己去將 Websockify 給 clone 回來。

/bin/bash /var/vnc/utils/novnc_proxy

當他跑完之後,使用 Ctrl + C 退出即可。

開始使用

接著,我們就可以開始使用他啦!這邊我們會需要使用到該目錄底下的 utils/websockify,而使用命令大概如下。

/bin/bash /var/vnc/utils/websockify/run --web /var/vnc 0.0.0.0:8080 10.10.10.1:5910

--web /var/vnc 的部分,是我們需要將他開成網頁伺服器,並指定目錄到 /var/vnc

0.0.0.0:8080 是網頁伺服器的埠號,那這邊我們就將他開在 8080,你也可以依照你的喜好開在 80443 之類的。

10.10.10.1:5910 則是 PVE 伺服器的 IP 及我們開出來的 VNC 埠號。

當命令送出後,我們就可以訪問這個網站啦。打開瀏覽器並前往這台 Linux 的 8080 Port,選擇 vnc.html,你應該就能看到這個畫面。

001.jpg

當你按下 Connect 之後,你應該就能看到你虛擬主機的畫面囉!旁邊也有一些控制項能夠使用。

002.jpg

順帶一提,如果你不滿意 noVNC 呈現的畫面、選項,你可以直接更改 /var/vnc/vnc.html 這個檔案,把他變成你喜歡的樣子。

包成服務

但是,當我們需要使用他的時候,我們就必須要執行這個命令。因此,我們可以將他包成服務,並把他丟在背景處理,之後我們就可以透過命令來控制他囉。

/etc/systemd/system 底下建立一個檔案 myvnc.service,你也可以將它命名為你想要的樣子。

vim /etc/systemd/system/myvnc.service

貼上以下內容:

[Unit]
Description=My VNC Server
After=multi-user.target

[Service]
Type=simple
ExecStart=/bin/bash /var/vnc/utils/websockify/run --web /var/vnc 0.0.0.0:8080 10.10.10.1:5910
Restart=on-failure
RestartSec=5s

[Install]
WantedBy=multi-user.target

保存退出後,執行以下命令讓系統重新讀取。

sudo systemctl daemon-reload

現在,你可以透過以下命令來控制這項服務囉!

sudo systemctl start myvnc    #啟動服務
sudo systemctl restart myvnc  #重新啟動服務
sudo systemctl stop myvnc     #停止服務
sudo systemctl enable myvnc   #開機自動執行此服務
sudo systemctl disable myvnc  #開機不執行此服務(預設)