↓ 快轉到主要內容

解鎖戶外寫程式的終極浪漫:code-server + Tailscale + 平板 實戰指南

·4244 個字·9 分鐘·
目錄

前言
#

實際範例圖片

☕ 拋開笨重筆電!解鎖戶外寫程式的終極浪漫:Linux + code-server + Tailscale HTTPS + 平板 實戰指南

想像一下這個畫面:午後微風徐徐,你坐在綠意盎然的戶外咖啡廳,手裡只拿著一台輕便的平板。沒有發熱風扇狂轉的厚重筆電,沒有隨時會沒電的焦慮,但你卻正在遠端使用著強大的 Linux + 你的專案,享受低延遲、流暢的遠端 Coding 體驗!程式碼與開發環境都留在 Linux 伺服器上,平板則透過瀏覽器操作,讓輕便的行動裝置也能擁有完整的開發工作流。

除此之外,這也很適合外出寫 Hugo 部落格文章,本站是 Hugo 架構,部分文章也是我用平板 + Tailscale 炸出來的!

要達成這種神仙級的體驗,我們只需要三個神隊友:

  1. 實體或雲端 Linux 電腦:提供強大運算、執行資源、程式碼儲存空間的後盾。
  2. code-server:打造完全自架(Self-Hosted)的網頁版 VS Code!將熟悉的開發環境一手掌控在自己的伺服器上,搬進瀏覽器裡。
  3. Tailscale + HTTPS:提供免公網 IP、免對外開 Port、自動配置 SSL 憑證的安全極速通道。

這套平板寫程式的方案:

flowchart TD
    A[平板瀏覽器] -->|Tailscale 私有網路| B[Tailscale Serve HTTPS]
    B --> C[Linux 主機]
    C --> D[code-server]
    D --> E[專案檔案]

code-server 的 repo: https://github.com/coder/code-server

為什麼選擇自架網頁版 VS Code?
#

相較於官方的 vscode.dev 或 GitHub Codespaces,自架 code-server 意味著你擁有 100% 的主導權!所有的程式碼專案、擴充套件(Extensions)、專案環境與擴充空間,甚至連執行的環境,都安安全全地躺在妳自己的伺服器上,完全不受第三方平台的資源限制與收費綁定!(⁠๑♡3♡๑⁠)✨

code-server 支援終端機、Git 版本控制及許多 VS Code 擴充套件,也能搭配部分 AI 程式開發工具。不過,擴充套件的相容性、登入方式與功能完整度,仍可能受到發佈平台、版本及授權條件影響,建議依照實際使用需求測試。


接下來,就讓我們一步一步把這個終極行動開發環境搭建起來吧!(⁠◍⁠>⁠ω⁠<⁠◍⁠)💖

第一步:部署 code-server,自架專屬的網頁版 VS Code
#

首先,請登入你的 Linux 雲端或實體主機(例如 Ubuntu / Debian 系統)。

1. 一鍵安裝 code-server
#

開發者提供了非常方便的安裝腳本,打開終端機執行以下指令:

curl -fsSL https://code-server.dev/install.sh | sh

2. 啟動並設定開機自啟
#

安裝完成後,使用 systemctl 讓 code-server 在背景執行並隨開機自動啟動:

# 設定目前使用者的 code-server 服務開機自啟
sudo systemctl enable --now code-server@$USER

3. 修改設定檔(可選)
#

預設情況下,code-server 只會監聽 127.0.0.1:8080,密碼會隨機產生在設定檔中。你可以查看或修改它:

nano ~/.config/code-server/config.yaml
bind-addr: 127.0.0.1:8080
auth: password
password: {生成的密碼}
cert: false

註:因為我們後續會透過 Tailscale 進行反向代理,這裡保持預設監聽 127.0.0.1:8080 即可,既安全又不需要對外暴露連接埠!


第二步:設定 Tailscale 打造安全虛擬網域
#

Tailscale 是一種基於 WireGuard 的 Mesh VPN 技術,能讓你的平板與遠端 Linux 伺服器建立點對點的安全連線,而且通常流量不會經過 Tailscale 伺服器,他們的伺服器只是幫忙牽線,所以相對安全。

Tailscale 請先註冊、設定、連線好所有所需裝置,這裡不多贅述,網路上都有豐富的教學。

1. 在 Linux 伺服器安裝 Tailscale
#

官方一鍵安裝指令:

curl -fsSL https://tailscale.com/install.sh | sh

安裝後啟動 Tailscale 並進行帳號綁定:

sudo tailscale up

此時終端機會顯示一串驗證網址,打開瀏覽器登入你的 Tailscale 帳號完成認證即可!

2. 在平板上安裝 Tailscale App
#

  • 請至 App Store 或 Google Play 下載 Tailscale。
  • 打開 App 並登入與伺服器相同的 Tailscale 帳號。
  • 啟用 VPN 連線,此時妳的平板與 Linux 伺服器就已經進入同一個安全的私人區域網路囉!(⁠≧⁠▽⁠≦⁠)✨

第三步:啟用 Tailscale Serve(輕鬆搞定 HTTPS)
#

code-server 的有些功能、擴充模組會在沒有 https 的連線下無法使用,平板瀏覽器中許多功能(如 PWA 貼上剪貼簿、Websocket 穩定連線、PWA 安裝)都強制要求 HTTPS 環境。所以我們用 Tailscale Serve 反代功能來升級 https。

Tailscale 提供了內建的反向代理的魔法功能(類似 Nginx,但是是在自己的私人網路中),Tailscale 會自己申請 Let’s Encrypt,也不用設定複雜的 Nginx!

1. 開啟 MagicDNS 與 HTTPS 憑證功能
#

前往 Tailscale Admin Console:

  • 確保 MagicDNS 功能已開啟。
  • 在 HTTPS Certificates 選項中點擊啟用(Enable)。

2. 使用 Tailscale Serve 綁定 code-server
#

在 Linux 伺服器上執行以下指令,直接將 code-server 的 8080 連接埠映射到 Tailscale 的安全 HTTPS 網址,為了避免和主機上的其他服務打架,我代理到 5487 端口:

sudo tailscale serve --bg --https=5487 http://127.0.0.1:8080

執行後,Tailscale 會自動為妳申請好 Let’s Encrypt SSL 憑證,並給妳一個專屬網址,例如: https://your-server-name.your-domain.ts.net:5487

注意! 這雖然看起來是個公網的網域,但還是只能在你自己的 Tailscale 虛擬網路裡面存取喔!Tailscale Serve 可以讓你在不必直接向公網開放 code-server 連接埠的情況下,透過 Tailnet 存取 HTTPS 服務。實際可存取的裝置與使用者,仍取決於 Tailscale 網路的存取控制設定,以及伺服器本身的安全配置。!

備註:想關掉反代伺服器請執行:

tailscale serve --https=5487 off

第四步:平板完美體驗設定與戶外姿勢推薦
#

現在,所有的架設設定都搞定啦!(⁠๑♡3♡๑⁠)🎉

1. 平板存取與 PWA 化
#

  1. 在平板上記得開啟 Tailscale App,連線。
  2. 打開平板上的瀏覽器(大部分瀏覽器應該都能正常使用),輸入剛剛獲得的 HTTPS 網址:https://your-server-name.your-domain.ts.net:5487 (這是範例)。
  3. 輸入 config.yaml 中的密碼,熟悉的 VS Code 畫面就出來囉!
    code-server 輸入密碼
    code-server 介面
  4. 加入主畫面 (PWA):點擊 Safari 的「分享」按鈕,選擇「加入主畫面」。或 Chrome, Firefox 的安裝按鈕。這樣 code-server 就會變成一個獨立的 App,隱藏瀏覽器網址列,全螢幕寫 Code 超舒服!

2. 戶外寫 Code 最佳姿勢指南
#

  • 輕量化裝備:一台平板 + 輕薄藍牙鍵盤 + 可調角度支架,背包輕盈零負擔!
  • 避開強光:選擇樹蔭下或戶外咖啡廳陽傘座位,保護眼睛與螢幕可讀性。
  • 快捷鍵優化:搭配 外接鍵盤(如 iPad 外接 Smart Keyboard / Magic Keyboard),VS Code 的快捷鍵(Ctrl+C, Ctrl+V, Command+P 等)都能完美映射!

示範

3. code-server 使用
#

code-server 基本就是 VS Code 的開源自架網頁版,功能、操作都和原版的差不多。

可以正常安裝大部分模組、正常用 GitHub Copilot (AI) 等等。

code-server 中,開啟資料夾是開啟伺服器上的檔案、資料夾喔!而且終端機也是直接用伺服器上的終端機,連 ssh 都免了!

code-server 開啟資料夾


常見問題與故障排查(FAQ)
#

在架設 Linux + code-server + Tailscale 的過程中,偶爾可能會遇到服務無法啟動、HTTPS 網址打不開,或平板操作不如預期等問題。以下整理幾個常見的檢查方式,方便大家快速定位問題!

1. code-server 網頁打不開,該怎麼辦?
#

首先,確認 code-server 是否正常執行:

systemctl status "code-server@$USER"

如果服務沒有正常啟動,可以查看最近的日誌:

journalctl -u "code-server@$USER" -n 50 --no-pager

接著,確認服務是否能在 Linux 主機本機正常回應:

curl -I http://127.0.0.1:8080

如果本機就無法正常連線,應優先檢查 code-server 的服務狀態、設定檔與日誌;如果本機正常,但平板無法開啟,則繼續檢查 Tailscale 與 Serve 的設定。

2. Tailscale 已經連線,為什麼還是無法開啟網頁?
#

Tailscale VPN 已連線,不代表 code-server 的 HTTPS 入口一定正常。

請先在 Linux 主機執行:

tailscale status

確認主機已連上 Tailnet,再檢查 Serve 的設定:

tailscale serve status

確認 HTTPS 入口指向正確的本機服務 127.0.0.1:8080,並且使用的是正確的 HTTPS 網址與連接埠。

另外,也請確認平板已連上相同的 Tailnet,且該裝置有權限存取這台主機。

3. HTTPS 網址打不開,或瀏覽器顯示憑證錯誤?
#

請先確認 MagicDNS 與 Tailscale HTTPS 憑證功能已正確設定,並查看 Serve 的實際狀態:

tailscale serve status

接著,使用指令輸出中顯示的完整 HTTPS 網址開啟網頁,包含必要的連接埠。

如果使用自訂 HTTPS 連接埠,例如 5487,網址通常需要包含 :5487;如果使用標準 HTTPS 連接埠 443,則一般不需要特別標示。

若仍然無法連線,請確認憑證申請狀態、DNS 解析、系統時間,以及目前使用的 Tailscale 版本與設定是否正常。

4. 為什麼平板上的部分功能或快捷鍵無法正常使用?
#

code-server 雖然提供網頁版 VS Code 的操作體驗,但瀏覽器、作業系統與外接鍵盤仍可能影響部分功能。

例如:

  • iPadOS 或 Android 的系統快捷鍵可能與 VS Code 快捷鍵衝突。
  • 部分瀏覽器功能受到剪貼簿權限或安全來源限制。
  • 某些 VS Code 擴充套件可能不完全支援 Web 環境。
  • 行動裝置的輸入法、虛擬鍵盤與外接鍵盤可能有不同的操作行為。

建議優先使用最新版的相容瀏覽器、確認網址使用有效的 HTTPS 連線,並逐一測試有問題的快捷鍵。

如果某個快捷鍵經常衝突,也可以在 VS Code 的 Keyboard Shortcuts 設定中調整對應的按鍵組合。

5. Linux 主機重新啟動後,為什麼無法使用 code-server?
#

請先確認 code-server 是否已設定開機自動啟動:

systemctl is-enabled "code-server@$USER"

再查看服務目前的狀態:

systemctl status "code-server@$USER"

如果服務沒有執行,請檢查啟動日誌,確認是否有設定錯誤、權限問題或其他啟動失敗原因。

接著,確認 Tailscale 是否已重新連線:

tailscale status

最後,檢查 Serve 設定是否仍然存在:

tailscale serve status

如果 code-server、Tailscale 與 Serve 都正常,但平板仍無法連線,就需要進一步檢查網路、DNS 與裝置存取權限。

6. 為什麼遠端操作有時會變得很慢?
#

Tailscale 不保證每次連線都能建立直接的點對點連線。如果網路環境限制了直接連線,流量可能會透過 DERP 中繼節點傳輸,造成延遲增加。

可以使用以下指令檢查連線狀態:

tailscale status

也可以進一步檢查特定裝置的連線路徑:

tailscale ping <裝置名稱或 Tailscale IP>

如果延遲明顯增加,建議確認平板與伺服器的網路品質、Wi-Fi 或行動網路訊號,以及目前是否使用中繼連線。

另外,遠端開發的流暢度也會受到伺服器 CPU、記憶體、磁碟效能與專案大小影響,不一定完全是網路造成的。

7. 忘記 code-server 密碼怎麼辦?
#

code-server 的密碼通常可以在目前使用者的設定檔中查看:

nano ~/.config/code-server/config.yaml

確認自己讀取的是實際執行 code-server 的那個 Linux 使用者的設定檔。

如果需要修改密碼,請更新 password 設定並依照目前的服務管理方式重新啟動 code-server,再重新登入測試。

總結
#

透過 Linux + code-server + Tailscale HTTPS 的黃金組合:

  • 安全性:完全不需要開啟公網 Port,也不用害怕 IP 暴露。
  • 相容性:真正的原生 HTTPS,瀏覽器功能完全解鎖。
  • 自由度:只要有網路、平板,隨處都是你的開發辦公室!

快帶著充飽電的平板,去戶外享受一邊喝咖啡、一邊寫 Code 的極致浪漫吧~!(⁠≧⁠▽⁠≦⁠)💕

備註:寫這篇文章時我在聽這首歌:

征け / ワンダーランズ×ショウタイム × 鏡音リン

這套方案我的實際體驗
#

很舒服,雖然螢幕比電腦小了點,但是非常方便啊!!!真要說缺點的話,就是平板的某些快捷鍵會打架而已,其他功能都 OK 喔!

除了寫程式,在平板上用 code-server 寫 Markdown 或 Hugo 這類的部落格框架也很適合,因為:

  1. 本站的「心碎的 635 天:讓人又愛又恨的青春戀情」

    這篇文章裡面有提到:「是我在畢業旅行中,在遊覽車上拿著平板打出來的。我在寫這段文字的同時,我在遊覽車上,她就坐在我後面的座位,距離我不到2公尺。」啊,確實,這篇萬字感情長文,大部分內容是我在平板上用著 code-server 打出來的,所以我也可以很方便的把文章上傳、部署到我的這個 Hugo 架構的網站中。

  2. 高鐵或大眾運輸上的「移動式靈感爆發」

    畫面感:坐在高速行駛的高鐵靠窗座位,窗外風景飛速倒退,突然有一個超棒的專案架構、文章靈感。 高鐵上的折疊小桌板放筆電常常卡得要命,但放一台平板剛剛好!利用行動網路(搭配 Tailscale 的強韌連線),直接在平板上開個終端機把想法刻出來。高鐵還沒到站,新功能已經被 push 上去了,在遠端伺服器默默跑起來了!

相關文章

我自己做了一套零成本、可自架的匿名問答系統!完全免費、採用零伺服器架構

·3852 個字·8 分鐘
我自己做了一套開源、可自架的匿名問答系統!採用 Cloudflare Workers + Google Sheets 零成本打造,且零伺服器架構。支援防機器人驗證、解析來源 IP 、留言專屬識別碼,還能一鍵生成漂亮的 IG 限動圖卡。