快轉到主要內容

Linux設定TigerVNC遠端桌面,用Systemd執行vncserver

分類   Linux系統 Self-hosting自架
標籤   VNC Remote Desktop
🗓️ 民國113年 甲辰年
✍ 切換正體/簡體字
目錄

請參考: Linux開源免費的遠端桌面列表

適用系統:Ubuntu 24.04與Debian 12以上

VNC實作有x11VNC、TigerVNC、RealVNC、TurboVNC等,其中TigerVNC為一款知名的開源VNC伺服器軟體。

作為TightVNC的分叉版,它會啟動一個Xvnc,建立虛擬X伺服器,能夠從SSH命令行啟動遠端桌面,適用沒接上螢幕(headless)的Linux電腦,例如樹莓派、Ubuntu Server等等。

TigerVNC沒有傳輸音效和GPU加速的功能,每次啟動的桌面工作階段都是獨立的。如果你想要的是「遠端接續離開電腦前的工作」,請改用 x11VNC

給舊版Ubuntu用戶的提示
#

本文討論的都是「TigerVNC server」的設定方式,不可用vncserver指令來啟動。Ubuntu 24.04與Debian 12以上的系統使用vncserver可能會變成執行「RealVNC server」,所以請注意電腦有無安裝realvnc-vnc-server套件。

若要查看vncserver指向的是哪個VNC伺服器,可以用ls -l /usr/bin/vncserver指令查看。

另外, TigerVNC開發者推薦用Systemd service管理VNC伺服器服務,而非直接執行tigervncserver :0指令。

1. 安裝桌面環境
#

TigerVNC可以啟動Linux現有的X11桌面環境,例如Ubuntu Desktop安裝的是GNOME。

不過遠端連線很吃頻寬,且有的Ubuntu Server並沒有桌面環境。

所以裝個輕量點的桌面環境來用吧,例如XFCE4:

sudo apt install xfce4 xfce4-goodies

2. 安裝TigerVNC
#

注意:這裡使用的都是TigerVNC的指令。

  1. 安裝TigerVNC server
sudo apt install tigervnc-standalone-server
  1. 設定六位數VNC密碼
tigervncpasswd
  1. 新增TigerVNC設定檔
vim ~/.vnc/tigervnc.conf
  1. 填入以下內容,設定開啟XFCE工作階段、解析度、斷線後仍保留工作階段、允許外部連線
$session="xfce4-session";
$geometry="1920x1080";
$AlwaysShared="yes";
$localhost="no";
  1. 防火牆開啟VNC通訊埠:
sudo ufw allow 5900/tcp
sudo ufw reload
  1. 參考 Github範本,給目前使用者新增Systemd service
vim ~/.config/systemd/user/[email protected]
  1. 填入以下內容。這裡執行的內容是先中止舊有的VNC伺服器,再啟動新的。
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target

[Service]
Type=forking
ExecStartPre=/bin/sh -c '/usr/bin/tigervncserver -kill %i > /dev/null 2>&1 || :'
ExecStart=/usr/bin/tigervncserver %i
ExecStop=/usr/bin/tigervncserver -kill %i

[Install]
WantedBy=default.target
  1. 啟動VNC伺服器服務,@後面的數字是要使用的通訊埠,從5900開始算
systemctl --user daemon-reload

systemctl --user start vncserver@:0.service
  1. 如此一來其他電腦就能用Linux電腦IP:5900連線了。VNC伺服器的除錯訊息用以下指令查看
systemctl --user status vncserver@:0.service
  1. 停止VNC伺服器的指令:
systemctl --user stop vncserver@:0.service
  1. 開機自動啟動VNC伺服器的指令:
systemctl --user enable vncserver@:0.service

4. 開放外部連線
#

我使用 內網穿透軟體

這樣Linux電腦會分配到一個虛擬IP。

5. 安裝VNC連線客戶端
#

  1. 電腦:安裝 Remmina RealVNC Viewer,在位址欄選取VNC,輸入虛擬區域IP:5900連線

  2. 手機:安裝 AVNC Real VNC Viewer,在位址欄輸入虛擬區域IP:5900,登入遠端桌面。

  3. 網頁:安裝 noVNC

參考資料
#

相關文章

使用內網穿透軟體 + x11VNC架設免費Linux遠端桌面
分類   Linux系統 Self-hosting自架
標籤   Remote Desktop ZeroTier VNC
Sunshine:Linux版Moonlight教學,自架免費雲端串流遊戲服務+遠端桌面
分類   Linux系統 Self-hosting自架 Linux玩遊戲
標籤   Moonlight Game Streaming Cloud Gaming Remote Desktop Steam Linux
RustDesk使用教學:開源免費遠端桌面,可自架
分類   Linux系統 Self-hosting自架
標籤   RustDesk Remote Desktop Linux Windows MacOS

留言板

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

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

這是Disqus留言板,您可能會看到Disqus強制投放的廣告。為防止垃圾內容,有時留言可能會被系統判定需審核,導致延遲顯示,請見諒。若要上傳圖片請善用圖床網站。