快轉到主要內容

使用ZeroTier + VNC架設免費Linux遠端桌面

Linux系統 Self-hosting自架 Remote Desktop ZeroTier VNC
🗓️ 民國112年 癸卯年
✍ 切換正體/簡體字
目錄

為了要讓手機遠端連線到家裡的電腦,曾經試過很多家的遠端桌面,後來還是覺得自己架比較好,不想再讓資料經過第三方的伺服器了。

這個方案就是ZeroTier + VNC伺服器。

個人使用的話花不到半毛錢,使用 內網穿透軟體ZeroTier,讓不同網路下的裝置連線到同一個虛擬區網。這樣要進行SSH、VNC遠端桌面就簡單多了。

Rustdesk Moonlight遠端桌面二個方案比較起來,VNC比較原始,但被廣泛使用於各大Linux系統。

作業系統:Arch Linux。桌面環境:KDE Plasma X11

1. 設定SSH
#

  1. 安裝SSHD,設定SSH開機自動啟動
sudo pacman -S openssh
sudo systemctl enable sshd
sudo systemctl start sshd
  1. 允許SSH通過防火牆
sudo ufw allow ssh
sudo ufw reload

2. 設定VNC伺服器
#

VNC方案有x11VNC和TigerVNC,x11VNC可讓遠端連線直接登入目前的工作階段(session)而非開一個新桌面,且斷線後桌面仍會持續運作。

但x11VNC的先決條件是要登入桌面,然後才能離開電腦(可以關閉螢幕電源)。如果要不登入桌面環境,從SSH啟動VNC伺服器的話,請改用TigerVNC。

2.1. x11VNC
#

x11VNC必須先在電腦前設定好,才可離開電腦。

  1. 安裝x11VNC
sudo pacman -S x11vnc net-tools
  1. 設定VNC伺服器密碼
x11vnc -storepasswd
  1. 新增~/.config/autostart/x11vnc.desktop,設定登入桌面後自動啟動x11vnc。用-geometry降低螢幕解析度節省頻寬。
[Desktop Entry]
Encoding=UTF-8
Type=Application
Name=X11VNC
Comment=
Exec=x11vnc -bg -auth guess -usepw -display :0 -forever -geometry 1280x720
StartupNotify=false
Terminal=false
Hidden=false
  1. 注意Exec這一段,若是使用SDDM+KDE桌面,就要改成下面這樣
Exec=x11vnc -bg -auth $(find /var/run/sddm/ -type f) -usepw -display :0 -forever -geometry 1280x720
  1. 防火牆開啟VNC通訊埠:
sudo ufw allow ssh
sudo ufw allow 5900:5910/tcp
sudo ufw reload

2.2. TigerVNC
#

TigerVNC可隨時從SSH終端機啟動,無需登入桌面環境。它也可以從遠端設定。

  1. 安裝TigerVNC
sudo pacman -S tigervnc
  1. 新增vncserver設定檔
vim ~/.vnc/config
  1. 填入以下內容
geometry=1280x720
alwaysshared
  1. 設定VNC伺服器執行的桌面環境
touch ~/.vnc/xstartup
chmod +x ~/.vnc/xstartup
vim ~/.vnc/xstartup
  1. 設定啟動VNC伺服器後,開啟KDE Plasma工作階段
#!/bin/bash
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADRESS
dbus-launch --exit-with-session startplasma-x11 &
  1. 防火牆開啟VNC通訊埠:
sudo ufw allow ssh
sudo ufw allow 5900:5910/tcp
sudo ufw reload
  1. SSH連線到電腦,從終端機執行以下指令,啟動VNC伺服器。通訊埠為5901。按CTRL+C中止。
vncserver :1

3. 連上ZeroTier
#

參見 ZeroTier使用教學,在電腦與手機安裝ZeroTier,並設定電腦開機自動啟動ZeroTier服務。

安裝好後重開機。

4. 遠端登入示例
#

4.1. 電腦VNC客戶端
#

  1. Flatpak安裝Remminna
flatpak install flathub org.remmina.Remmina
  1. 在位址欄選取VNC,輸入遠端Zerotier虛擬IP:5901連線

4.2. 手機VNC客戶端
#

  1. 手機安裝 AVNC Real VNC Viewer,在位址欄輸入遠端Zerotier虛擬IP:5901,登入遠端桌面。

  2. 另外,手機安裝 Termux,安裝openssh套件即可用ssh登入電腦:

ssh <使用者名稱>@<輸入ZeroTier的虛擬區網IP>

參考資料
#

相關文章

既然ZeroTier記IP太麻煩,不如使用自訂域名
Linux系統 Self-hosting自架 Docker ZeroTier
Linux系統用Docker跑ZeroTier One,進行內網穿透
Linux系統 Self-hosting自架 ZeroTier Docker
Linux如何安裝 & 使用ZeroTier建立虛擬區網
Linux系統 Self-hosting自架 Linux ZeroTier

留言板

此處提供二種留言板。點選按鈕,選擇您覺得方便的留言板。要討論程式碼請用Giscus,匿名討論請用Disqus。

這是Giscus留言板,需要Github帳號才能留言。支援markdown語法,若要上傳圖片請貼Imgur連結。您的留言會在Github Discussions向所有人公開。

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。