一、環(huán)境說明

理論上,本教程的核心思想適用于所有可以使用 docker 的場(chǎng)景。但本人只有一個(gè)綠聯(lián)NAS設(shè)備,因此只能以此作為實(shí)驗(yàn)環(huán)境。

UGOS pro 版本:1.0.0.0980

Docker Compose 版本:UGOS Pro 默認(rèn)已經(jīng)安裝 Docker Compose。

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscaleUGOS Pro 自帶docker compose

二、申請(qǐng) Tailscale Auth key

為了后續(xù)方便 tailscale ?認(rèn)證登錄,使用 Auth key ?認(rèn)證的方法。

登錄 tailscale ?官網(wǎng),依次點(diǎn)擊 Settings - Keys - Generate auth key...?

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscaletailscale官網(wǎng)申請(qǐng)Auth key_1

在彈出的界面,Description ?填寫自己喜歡的名字,然后點(diǎn)擊 Generate key?,Auth key ?只會(huì)顯示一次,復(fù)制保存后可以關(guān)閉

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscaletailscale官網(wǎng)申請(qǐng)Auth key_2

三、拉取 docker 鏡像

在鏡像倉(cāng)庫(kù)輸入 tailscale?,選擇 tailscale/tailscale ?下載,默認(rèn) latest ?鏡像即可

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscale拉取tailscale鏡像

四、創(chuàng)建 tailscale 文件夾,并獲取 docker 真實(shí)目錄

UGOS Pro 開啟 docker 功能后,會(huì)自動(dòng)創(chuàng)建 docker ?文件夾。在共享文件夾里找到 docker ?文件夾,在其里面創(chuàng)建一個(gè) tailscale ?文件夾。

然后我們創(chuàng)建的 tailscale ?里再創(chuàng)建一個(gè) state ?文件夾,后續(xù)用于存儲(chǔ) tailscaled? 的狀態(tài),確保在 tailscale 容器重新啟動(dòng)時(shí),之前配置好的狀態(tài)保持不變

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscale創(chuàng)建tailscale容器相關(guān)文件夾

下面獲取 docker ?目錄的真實(shí)路徑。右鍵我們創(chuàng)建的 tailscale ?文件夾,查看 屬性?

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscale獲取 docker ?目錄的真實(shí)路徑_1

在 屬性 - 常規(guī) - 位置 ?末,點(diǎn)擊復(fù)制按鈕,然后隨便找個(gè)地方粘貼,可以看到 tailscale ?真實(shí)路徑類似 /volume[x]/docker/tailscale?。

如圖,所以我的 docker ?真實(shí)路徑是 /volume1/docker?。

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscale獲取 docker ?目錄的真實(shí)路徑_2

五、使用 root 用戶登錄 SSH

在 UGOS Pro 的控制面板打開 SSH 登錄后,用自己的用戶名和密碼登錄 SSH 后,輸入 sudo -i?,然后輸入自己的用戶密碼,切換 root ?權(quán)限。

更多有關(guān)內(nèi)容 key 參考礦神教程 : https://imnks.com/10101.html。

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscale使用 root 用戶登錄 SSH

六、通過 Docker Compose 創(chuàng)建容器

以下是 docker-compose.yaml ?說明,先閱讀完以下幾點(diǎn),確認(rèn)無誤后再?gòu)?fù)制到 ssh 中執(zhí)行。

  • 第 1 行:volume1 ?改為自己真實(shí)路徑中的 volume[x]?,注意實(shí)際是沒有符號(hào)[ ]。
  • 第 9 行:使用 AUTHKEY 登錄,替換成自己的 Auth key?;如果是使用 headscale?,則填入 headscale ?生成的 auth key?。
  • 第 10 行:如果我們希望配合自己搭建的 headscale ?使用,把 --login ?前的符號(hào) # 刪除,并把 http://headscaleserver.com ?替換成自己的服務(wù)器地址。
  • 第 12 行:如果需要開啟內(nèi)網(wǎng)轉(zhuǎn)發(fā),訪問內(nèi)網(wǎng)其它設(shè)備,把 TS_ROUTES ?前的符號(hào) # 刪除,并把 192.168.10.0/24 ?改為自己的內(nèi)網(wǎng)網(wǎng)段。

cat >/volume1/docker/docker-compose.yaml <

services:

tailscale:

image: tailscale/tailscale:latest

container_name: tailscale

network_mode: "host" # 使用本地網(wǎng)絡(luò), 方便連接各子網(wǎng)的客戶端

privileged: true # 開啟特權(quán)模式

environment:

TS_AUTHKEY: tskey-auth-kGr12345ym11CNTRL-X67890QPnLSLxgPnFh4aMSytAxixihaha

TS_EXTRA_ARGS: --netfilter-mode=off #--login-server=http://headscaleserver.com

TS_STATE_DIR: /var/lib/tailscale # 存儲(chǔ) tailscale 狀態(tài)的目錄, 后面映射到宿主機(jī), 確保在容器重新啟動(dòng)時(shí)配置保持不變

#TS_ROUTES: 192.168.10.0/24

TS_HOSTNAME: ugospro # 節(jié)點(diǎn)名字, 可自定義

volumes:

- ./tailscale/state:/var/lib/tailscale # 映射 tailscale 狀態(tài)目錄到我們創(chuàng)建的tailscale/state內(nèi)

- /dev/net/tun:/dev/net/tun

- /usr/share/zoneinfo/Asia/Shanghai:/etc/localtime:ro

cap_add:

- net_admin

- sys_module

restart: unless-stopped

EOF

運(yùn)行該段命令后,會(huì)在 docker ?目錄下創(chuàng)建一個(gè) docker-compose.yaml ?文件,該文件的內(nèi)容就是上面第 2 行到第 21 行的內(nèi)容

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscale創(chuàng)建 docker-compose.yaml 文件

SSH 通過 cd ?命令進(jìn)入到 docker ?目錄。以下命令的 volume1 ?改為自己真實(shí)路徑中的 volume[x]?,注意實(shí)際是沒有[ ]符號(hào)

cd /volume1/docker?

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscalecd 命令進(jìn)入 docker 目錄

在 docker ?目錄下,輸入 docker compose up -d ?啟動(dòng)容器?

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscale啟動(dòng) tailscale 容器

回到在 UGOS Pro 的 Web 界面,打開 docker 應(yīng)用,可以看到 tailscale ?已經(jīng)啟動(dòng),并在運(yùn)行中?

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscaletailscale 容器成功運(yùn)行

七、允許 tailscale 登錄

回到 tailscale ?官網(wǎng),在 Machines ?欄可以看到 ugospro ?已經(jīng) Connected?,點(diǎn)擊 Connected ?右側(cè)的三個(gè)小點(diǎn),先點(diǎn)擊 Disable key expiry?,這樣 UGOS Pro 上的 tailscale 登錄永遠(yuǎn)不會(huì)超時(shí)。然后點(diǎn)擊 Edit route settings...?,在彈出的界面勾選自己的內(nèi)網(wǎng)網(wǎng)段,然后點(diǎn)擊 Save?,這樣就允許內(nèi)網(wǎng)轉(zhuǎn)發(fā)了?

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscale允許 tailscale 登錄_1
綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscale允許 tailscale 登錄_2

八、測(cè)試

測(cè)試網(wǎng)絡(luò)說明:工作室的電腦使用的是電信寬帶;綠聯(lián) NAS 放家里,用的是移動(dòng)寬帶。

首先測(cè)試一下使用官方 tailscale?。

?Windows ?打開終端,輸入 tailscale status?,可以看到 ugospro 在線,其中 relay ?說明是走官方 derp ?節(jié)點(diǎn),沒有打洞成功。

然后輸入 ping 100.86.190.34?,其中 100.86.190.34 ?是 tailscale ?分配給 IP,看到延時(shí)還是很大的,但又不是不能用,是吧。

最后輸入 ping 192.168.10.1?,其中 192.168.10.1 ?是我路由器內(nèi)網(wǎng) IP,延時(shí)好了一點(diǎn)點(diǎn),估計(jì)是網(wǎng)絡(luò)鏈接穩(wěn)定了

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscaletailscale 測(cè)試

然后測(cè)試使用自建 headscale?。

在 Windows 終端輸入 tailscale status?,紅框位置顯示 direct?,說明使用自建 headscale ?下打洞成功,兩者為何有區(qū)別沒有深入研究。

輸入 ping 192.168.10.1?,發(fā)現(xiàn)延時(shí)只有 10+ms,應(yīng)該是直連無疑?

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscaleheadscale 測(cè)試

九、最后

在最后,還想分享一些 Tips?。

1. 如果想從官方 tailscale 切換到自建 headscale,或者從自建 headscale 切換到 tailscale。我的做法是,

  • 先停止現(xiàn)在的 tailscale,然后在UGOS Pro的 docker 管理界面中刪除 tailscale 容器,刪除的時(shí)候注意不要勾選任何目錄數(shù)據(jù),直接點(diǎn)確認(rèn)刪除

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscale

  • 進(jìn)入之前創(chuàng)建的 /docker/tailscale/state,選中里面所有的內(nèi)容,右鍵刪除

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscale

  • 把前面在 docker 目錄下創(chuàng)建的 docker-compose.yaml 內(nèi)的 TS_AUTHKEY 替換成 tailscale 或 headscale 的 key。替換方法多種多樣,可以在 UGOS Pro 的應(yīng)用中心安裝文本編輯器,然后雙擊 docker-compose.yaml ,就會(huì)使用文本編輯器打開,找到 TS_AUTHKEY 并替換。當(dāng)然,高手可以通過 SSH 通過命令行修改

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscale

  • docker-compose.yaml 文件修改完成后,SSH 連接 NAS,參考步驟六,cd 命令進(jìn)入 docker 目錄,執(zhí)行 docker compose up -d 命令重新創(chuàng)建和運(yùn)行 tailscale 容器。之后就去 tailscale 官方后臺(tái)或者自建的 headscale 后臺(tái)允許登錄,允許子網(wǎng)轉(zhuǎn)發(fā)等。

2. docker-compose.yaml 下 environment 中的 TS_EXTRA_ARGS 可以填寫很多關(guān)鍵字,比如希望把 NAS 作為 exit-node,在 TS_EXTRA_ARGS 內(nèi)追加關(guān)鍵字 --advertise-exit-node 即可實(shí)現(xiàn)。

更多有關(guān) TS_EXTRA_ARGS 信息可以參考官方指南參考: Using Tailscale with Docker · Tailscale Docs

有關(guān) docker 下使用 tailscale 的更多信息,也可查看官方手冊(cè): Using Tailscale with Docker · Tailscale Docs。

3. 有關(guān) headscale 的搭建,可以參考這個(gè)教程,已經(jīng)很詳細(xì)了: https://zhuanlan.zhihu.com/p/689675885

這里面有一個(gè)需要注意的點(diǎn),就是下載 headscale 的配置文件模板 config.yaml 時(shí),要下載和你拉取 docker 鏡像相對(duì)應(yīng)版本的 config.yaml,否則 headscale 無法正常啟動(dòng)。所以拉取 headscale 時(shí)建議拉取指定的版本,然后再去代碼倉(cāng)找到版本對(duì)應(yīng) Tags 下的 config.yaml 文件

綠聯(lián)UGOS Pro通過Docker Compose安裝Tailscale,支持headscale

?

作者聲明本文無利益相關(guān),歡迎值友理性交流,和諧討論~

,

聲明:本站所有文章,如無特殊說明或標(biāo)注,均為本站原創(chuàng)發(fā)布。任何個(gè)人或組織,在未征得本站同意時(shí),禁止復(fù)制、盜用、采集、發(fā)布本站內(nèi)容到任何網(wǎng)站、書籍等各類媒體平臺(tái)。如若本站內(nèi)容侵犯了原著者的合法權(quán)益,可聯(lián)系我們進(jìn)行處理。