---
title: Jetson Nano 多人遠端桌面
tags: jetson, tailscale, vnc
slideOptions:
theme: night
transition: fade
highlight: monokai
---
<style>
.reveal h1 { font-size: 3.2vw; letter-spacing: -0.02em; }
.reveal h2 { font-size: 2.4vw; color: #7ec8c8; border-bottom: 1px solid #ffffff22; padding-bottom: 0.3em; }
.reveal section, .reveal p, .reveal li, .reveal blockquote { font-size: 1.8vw; }
.reveal table th { background: #1a1a2e; color: #7ec8c8; font-size: 1.6vw; }
.reveal table td { font-size: 1.6vw; }
.reveal code { font-size: 1.2vw; }
.reveal pre { font-size: 1.2vw; }
.reveal .slides section { text-align: left; }
</style>
# Jetson Nano 多人遠端桌面
Tailscale + TigerVNC + noVNC
---
## 架構總覽
三台使用者電腦透過 Tailscale VPN 連到 Jetson,每人各自對應一個獨立的 VNC 桌面。
<div style="text-align: center">

</div>
---
## Tailscale 安裝
建立加密的私有網路,讓使用者不需要公網 IP 就能連到 Jetson。每台機器都需安裝並用**各自的帳號**登入。
```bash
# Jetson Nano 上安裝
curl -fsSL https://tailscale.com/install.sh | sh
# 登入(會開啟認證連結)
sudo tailscale up
# 查詢本機 Tailscale IP
tailscale ip -4
```
使用者端前往 [tailscale.com/download](https://tailscale.com/download) 下載並登入,管理者從 admin console 發出邀請。
---
## VNC + noVNC 安裝
TigerVNC 在 Jetson 上建立虛擬桌面;noVNC 將 VNC 轉成 WebSocket,讓使用者直接用瀏覽器連線,不需安裝任何客戶端。
```bash
# 安裝 TigerVNC
sudo apt install tigervnc-standalone-server -y
# 以 jetson 使用者身份設定 VNC 密碼
su - jetson
vncpasswd
exit
# 安裝 noVNC
git clone https://github.com/novnc/noVNC.git \
/home/jetson/noVNC
git clone https://github.com/novnc/websockify \
/home/jetson/noVNC/utils/websockify
```
---
## 開機自啟動設定
將 VNC 和 noVNC 寫入 `/etc/rc.local`,讓 Jetson 重開機後自動啟動三個桌面,不需手動執行。
**`/etc/rc.local`**
```bash
#!/bin/bash
sleep 10
su -l jetson -c \
"vncserver :1 -geometry 1920x1080 -depth 24 -localhost no"
su -l jetson -c \
"vncserver :2 -geometry 1920x1080 -depth 24 -localhost no"
su -l jetson -c \
"vncserver :3 -geometry 1920x1080 -depth 24 -localhost no"
sleep 5
su -l jetson -c \
"/home/jetson/noVNC/utils/novnc_proxy \
--vnc localhost:5901 --listen 6080 &"
su -l jetson -c \
"/home/jetson/noVNC/utils/novnc_proxy \
--vnc localhost:5902 --listen 6081 &"
su -l jetson -c \
"/home/jetson/noVNC/utils/novnc_proxy \
--vnc localhost:5903 --listen 6082 &"
exit 0
```
```bash
sudo chmod +x /etc/rc.local
sudo systemctl enable rc-local
```
---
## Port 對應表
每位使用者對應固定的 port,連線時在瀏覽器輸入對應網址即可。
| 使用者 | VNC Display | noVNC Port | 連線網址 |
|--------|-------------|------------|----------|
| User A | `:1` | `6080` | `http://100.x.x.x:6080/vnc.html` |
| User B | `:2` | `6081` | `http://100.x.x.x:6081/vnc.html` |
| User C | `:3` | `6082` | `http://100.x.x.x:6082/vnc.html` |
將 `100.x.x.x` 換成 `tailscale ip -4` 查到的實際 IP。
---
## 連線步驟
Jetson 設定完成後,使用者端只需要這四步。
1. 安裝 Tailscale,並用自己的帳號登入
2. 接受管理者從 admin console 發出的邀請
3. 打開瀏覽器,前往對應的連線網址
4. 輸入 VNC 密碼,完成連線
---
## 維護指令
日常確認服務狀態或手動重啟時使用。
```bash
# 查看目前運行的 VNC session
vncserver -list
# 手動停止特定 session
vncserver -kill :1
# 確認 noVNC 是否運行
ps aux | grep novnc_proxy
# 確認 Tailscale 連線狀態
tailscale status
```
---
# 完成
三人各自登入 Tailscale,開機後服務自動啟動,用瀏覽器即可連線。