快轉到主要內容

利用Tailscale Funnel將Linux伺服器服務暫時公開到外網,提供HTTPS

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

Ivon討論如何利用Tailscale將Linux伺服器的服務公開到外網,並加上HTTPS,供他人存取。

1. 二個方案
#

根據官方文件,Tailscale要公開電腦上的服務,有兩種作法:

  1. 第一個是 Serve,監聽本機通訊埠,讓Tailscale網路的用戶都能存取你電腦上的服務。有點像是你公開一個網址,但只有連線到Tailscale VPN的人才能存取那個網址。Serve一次只能監聽一個服務的通訊埠。除監聽本機通訊埠之外,也能分享單一目錄,架設簡易檔案伺服器。

  2. 第二個是 Funnel,監聽本機通訊埠,且向公眾開放。這個功能很像Cloudflare Tunnel,將你的服務以隨機網址公開,別人不需要連線到Tailscale VPN也能存取。Funnel一次只能監聽一個服務的通訊埠。

看起來不錯?不是麼,但要注意幾點:Tailscale不允許使用自訂域名,只能用他們提供的域名連線,故你不應該用Tailscale架網站。還有這二個服務都不是單純的P2P,中間會經過Tailscale relay伺服器連線,延遲可能會很高,流量太大亦可能會受到限制。

目前Tailscale這二個服務的用途比較像是給Self-hosted的人士,或者小型組織內部測試程式使用的。那麼具體用在什麼地方呢?你可能會說,Tailscale的連線本身就有點對點加密,何需HTTPS?真的就有一些服務需要HTTPS呀!比如Ivon在架語言模型的 網頁聊天程式Open WebUI的時候,沒有HTTPS瀏覽器會顯示「不安全」,且若網頁程式要存取客戶端的相機、麥克風,那麼HTTPS是必不可少的。

SSL憑證安裝看似複雜,其實不然,只要裝好Tailscale的客戶端,再執行幾行指令,它就會自動註冊好。

2. 取得SSL憑證
#

不論是Serve,還是Funnel,二種操作都需要先執行Tailscale的指令,安裝SSL憑證啟用HTTPS才可以使用。

Tailscale會自動幫我們跟Let’s Encrypt申請憑證,憑證相關檔案都是存放在本機,不是在Tailscale伺服器。

  1. 於Linux 安裝Tailscale

  2. 參考 Enabling HTTPS · Tailscale Docs,到Tailscale網頁後台設定,啟用「MagicDNS」和「HTTPS」

  3. 執行以下指令,取得SSL憑證

sudo tailscale cert
  1. 之後Linux電腦便會以畫面上顯示的網址公開,網址應為taild.ts.net結尾,子網域部份是MagicDNS賦予的裝置名稱,可以自訂。

Tailscale取得的SSL憑證並非全部裝置都能用,只對這台電腦有效。如果其他電腦需要憑證,那麼要再跑一次指令。每部裝置的SSL憑證90天後就會過期,需要手動更新。

Tailscale取得的憑證似乎沒辦法直接用在MagicDNS的樣子,比如輸入http://裝置名稱.taild.ts.net能連線,但https://裝置名稱.taild..ts.net無法正常連線,必須用下面談的Serve和Funnel明確指定要公開哪個服務才可以。

3. 使用Tailscale Serve
#

只對Tailscale網路的用戶開放服務。

Ivon跑的服務Open WebUI預設使用通訊埠為3000,使用以下指令監聽3000通訊埠

sido tailscale serve 3000

之後,其他連上Tailscale VPN的裝置應該就能透過網址存取服務。

關閉Serve請按下CTRL+C。

4. 使用Tailscale Funnel
#

對任意用戶開放服務。注意Tailscale不提供任何認證機制,暴露到公網的服務必須設定強力密碼防止被駭入。

我跑的服務Open WebUI預設使用通訊埠為3000,使用以下指令監聽3000通訊埠,依照畫面指示啟用Funnel:

sudo tailscale funnel 3000

嘗試用沒有Tailscale連線的裝置連線看看,輸入https://裝置名稱.taild.ts.net網址應該能存取服務。

Funnel會跟著tailscaled服務一直在背景執行,若要關閉,執行以下指令:

sudo tailscale funnel --https=443 off

相關文章

Tailscale設定Subnet Routers,從跳板機存取區網的裝置
分類   Linux系統 Self-hosting自架
標籤   Tailscale
RustDesk + Tailscale內網穿透,IP直連到遠端桌面
分類   Linux系統 Self-hosting自架
標籤   RustDesk Tailscale
自架服務(Self-hosting)需要的硬體與常用工具
分類   Linux系統 Self-hosting自架
標籤   Tailscale

留言板

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

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

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