
使用Docker與TREK自託管您的個性化智能旅行日程:一站式深度規劃並輕鬆管理預訂、財務和行李清單
本文詳細介紹如何使用Docker部署開源旅行規劃系統TREK。我們將帶您配置Caddy反向代理和Cloudflare R2物件儲存,實現資料的安全備份與圖片的高效載入。此外,還將演示如何利用MCP(模型上下文協定)連接Claude等AI代理,通過自然语言對話一鍵生成您的專屬旅行日程,開啟完美旅程。
目錄
在規劃旅行時,最繁瑣的部分莫過於那些零散的資料:機票預訂PDF、酒店確認信、旅伴之間的聊天記錄、想去的景點清單等,都散落在不同的角落。而當需要匯總總花費、拆分帳單時,又得在海量的出行記錄中不停翻找,極為耗費精力。
TREK是一款可以自託管的開源旅行規劃系統,能夠將您的行程、預訂、財務預算和行李清單一站式整合到同一個平台中。其內建的MCP(Model Context Protocol)伺服器還允許AI代理(如Claude Desktop)直接操作您的出行資料。
本教學將帶您一步步完成從系統部署到完整管理一次真實旅行的全過程。
1. 如何使用Docker部署TREK旅行規劃器
在Ubuntu VPS上安裝Docker
# Add Docker's official GPG key and set up the Docker repository
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Add the official Docker repository
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Update package list
sudo apt update
# Install Docker Engine, Docker Community Edition, and containerd runtime
sudo apt install docker-ce docker-ce-cli containerd.io -y
# Verify docker is installed
docker --version
# Starts automatically when your system boots
sudo systemctl enable docker
生成加密金鑰
TREK使用一个專門的金鑰來加密敏感資料。您可以使用以下指令或這個線上工具來生成加密金鑰:
openssl rand -hex 32
請務必將其妥善保存在安全的地方。如果遺失該金鑰,您將無法存取已加密的資料。
啟動容器
docker run -d \
--name trek \
-p 3000:3000 \
-e ENCRYPTION_KEY="<generated_key>" \
-e APP_URL="https://trek.pafor.me" \
-v ./data:/app/data \
-v ./uploads:/app/uploads \
--restart unless-stopped \
mauriceboe/trek:latest
- 必須正確設定
APP_URL—— 因為MCP伺服器的OAuth授權探索流程完全依賴於它。請在一開始就將其設定為您最終的公開HTTPS網址。
首次執行需要一些時間來拉取映像檔:

驗證容器是否成功執行:
docker ps

2. 使用Caddy反向代理設定網域路由與SSL憑證
通行鑰(Passkeys)功能和MCP所需的OAuth授權都強制要求HTTPS加密。我們的網域託管在提供免費SSL憑證和DDoS保護的Cloudflare上。
我們將Caddy配置為安全的反向代理伺服器,用來指向容器的3000連接埠。Caddyfile設定範例如下:
{$TREK_DOMAIN} {
encode zstd gzip
reverse_proxy host.docker.internal:3000
}
3. 初始配置與安全的管理員設定
建立管理員帳戶有兩種方式:
- 在環境配置中直接設定
ADMIN_EMAIL和ADMIN_PASSWORD變數,系統將直接使用該憑證。 - TREK會自動生成一個信箱
admin@trek.local、使用者名稱admin,以及一個隨機生成的密碼,並列印到容器日誌中。執行docker logs trek即可獲取。
如果您在日誌中找不到密碼,可以透過以下指令進行手動重置:
docker exec -it -e RESET_ADMIN_EMAIL=admin@trek.local -e RESET_ADMIN_PASSWORD='YourNewPassword' trek node server/reset-admin.js
在首次登入時,系統會提示您修改初始密碼。

按一下 Admin(管理員) 索引標籤並更新您的電子信箱:
3.1 備份策略
在管理員後台,可以非常方便地配置帶有保留策略的自動備份方案:

3.2 將上傳的檔案儲存到Cloudflare R2
將上傳的檔案、照片和備份資料保存在Cloudflare R2中,能夠讓您的VPS磁碟保持乾淨和輕量。TREK全面支援S3相容的儲存後端,而Cloudflare R2正是這一需求的完美解決方案。
- 新建一個名為
trek的R2儲存桶。 - 在 Account Details(帳戶詳情) 區域,找到您的帳戶ID:

- 按一下 Manage API Tokens(管理API權杖):

- 按一下 Create Account API token(建立帳戶API權杖),並授予針對該桶的讀寫權限:

- 在管理員面板中,按一下 Storage(儲存) 配置頁:

- 按一下 Add Backend(新增後端) 按鈕,填入您的Endpoint(端點)、Bucket(儲存桶名稱)和API憑證:

- 按一下 Apply(套用),然後按一下 Test(測試) 連結。當看到「Connection OK」字樣时,說明連線測試成功:

- 将所有儲存類別切換為Cloudflare R2并按一下 Save changes(儲存修改):

3.3 通行鑰(Passkey)登入
TREK支援通行鑰、雙重身份驗證(2FA)以及基於OIDC的單一登入。如果想開啟通行鑰,請在設定中輸入您的網域名稱和Allowed Origins(允許的來源),然後儲存即可:

如果沒有正確配置 Allowed Origins,通行鑰註冊將會失敗。
3.4 Google Maps API金鑰
配置Google Maps金鑰可以讓您的地點檢索功能變得更豐富,自動補充評分、營業时间和地點實景圖。如果您不配置金鑰,TREK會預設降級使用免費的OpenStreetMap(只是不顯示評分和實景照片)。
造訪此連結並按一下 Get demo key 即可申請一個測試金鑰: 
將獲取到的API Key貼上到設定中,然後按一下 Test 驗證連線是否通暢:

3.5 AI整合
內建的AI解析引擎主要用於處理您的預訂確認郵件和PDF,將它們自動轉換為結構化的預訂資料。
按一下左側選單中的 Addons(附加元件) 並啟用 AI Parsing。選擇「OpenAI」(或其他相容的AI提供商)並填寫相應的憑證資訊:

3.6 MCP存取權限
同樣在 Addons 選項中,開啟 MCP 協定:

3.7 外掛推薦
以下幾款官方外掛非常推薦您順手啟用:

3.8 建立您的日常使用帳戶
在平時規劃旅行時,建議使用一般使用者帳戶,而非管理員帳戶。讓我們在後台建立一個日常帳戶並登入:

登入後,建議立刻綁定通行鑰或設定2FA來強化該帳戶的安全層級:

按一下 + Add a passkey,輸入目前密碼,然後按照瀏覽器提示完成安全確認:

4. 測試您的部署:匯入歷史出行資料
快速上手並熟悉TREK系統的一個極佳方式是,將您過去走過的旅行足跡錄入其中。
4.1 建立旅行計劃
按一下 + New Trip(新建旅行),並根據那次歷史旅行的真實起止時間設定 Start Date 和 End Date:

上傳一張好看的封面圖(可以直接將圖片拖入或從剪貼簿貼上),接著按一下 Create New Trip:

4.2 匯入預訂資訊
將您當時留存的機票、火車票和其他交通工具預訂確認檔案直接拖放到上傳區域:


由於我們已經啟用了AI解析引擎,預訂確認PDF檔案會被自動分析,提取出結構化的預訂日程。
檢查解析結果無誤后,按一下 Add 將其正式寫入預訂資料中:

如果有些預訂確認僅保存在郵件中,您可以將其匯出為PDF格式并上傳,同樣可以走這套提取流程。
在系統中,已匯入的預訂資訊會以極具現代感的方式呈現:


在 Plan(日程規劃) 頁面中,所有的飯店和住宿點都會在地圖上被優雅地標註出來:

按一下上方的 Atlas(旅行足跡),您將能从清單和世界地圖上直觀地看到所有已拜訪的国家:

4.3 新增旅行同伴
按一下 Share(分享) 按鈕:

在彈出的對話方塊底部,可以直接新增旅行同伴為Guest(嘉賓):

4.4 記錄旅行費用
按一下 Add expense(新增開銷),來記錄那些無法透過PDF預訂單自動解析的雜項支出,例如境外險、當地公共交通費、臨時SIM卡等:


4.5 拆分旅行階段
該功能需要提前在後台激活“Trip Segment”外掛。
對於那些超長週期的旅程,將其拆分為不同的階段能讓脈絡更清晰,每個階段都可以有自己獨立的預訂項目、待辦事項和成本帳單:



4.6 建立Journal(日誌)並查看旅行足跡(Atlas)
您還可以將幾次旅行串聯成一個 Journey(旅程),並圖文並茂地撰寫遊記故事,方便分享給您的朋友們:




5. 設計自訂行程與行李清單
按一下 + New Trip,輸入旅行的專屬名稱並指定起止日期:

如果具體的出行時間還沒有敲定,可以將日期項留空。 此時系統會顯示一個「天數配置(最高支援365天)」欄位,您可以先設計每日的遊玩內容,等後續買好機票後再一鍵錨定日期。
5.1 新增地點/景點
這是旅行規劃中最耗時的一步,但TREK提供了四種極具效率的方式來協助您新增地點:

1. 直接在地圖上右鍵點擊: 會該座標處直接建立新地點,其標準地址會被系統自動逆地理編碼解析出來:


2. 按一下 + Add Place/Activity: 在搜尋框中直接透過關鍵字進行檢索



3. 直接貼上Google地圖分享連結: (如 maps.app.goo.gl/… 或 maps.google.com/…)貼上到檢索欄中。TREK會自動抓取該地點的名稱、地址和經緯度:


4. 批次匯入資料: 這是最輕鬆的方案。如果您在Google Maps中維護著自己的「想去清單」,可以將其匯出為 .gpx 檔案(.kml 或 .kmz 格式亦支援),然後按一下右側面板的 Import file,一鍵拉取所有資料:

推薦您可以先把所有感興趣的項目都新增進來。至於如何將它們科學地歸入到每一天的日程中,後續可以直接在面板裡拖拽處理。
5.2 每日日程與備忘
Day Plan(每日計劃)的核心邏輯是將所有的目的地按每日訪問順序進行排序。整個介面是一個可以折疊、支援任意拖放的模組:

這些細節機制設計得極其精妙實用:
- 中間移動方式:按一下每日日程左上角的公車圖示,可以設定各節點之間的過渡交通方式(如地鐵、自駕、甚至是直達航班):

- 每日備忘:按一下左下角的便簽圖示可以附加各種客製化提醒(例如:「今天需要提早出發」、「美術館門票需提前預約」):

- 指定時間段:從右側拖拽地點並給它分配一個開始時間。設定了時間的地點會自動在地圖上生成推薦的行進路線:

- 關於智慧路線優化(Route optimisation)以及氣候(Weather),您可以查閱 Day Plans and Notes的Wiki文件。
5.3 收藏夾:可重複使用的地點清單
Collections(收藏夾)允許使用者在具體的旅行專案之外,保存並分類管理自己精心收集的寶藏地點。您可以將其打包分享給朋友。這些地點在加入旅行時是採用複製的方式,因此在旅行日程中對其進行的任何個性化標註,都不會破壞您收藏夾裡的原始乾淨資料。
按一下頂部選單列中的 Collections:

按一下 + New list 建立新的分類列表:

按一下 + Add a place 並填入該地點的詳細情況:

注意: 收藏夾內的搜尋元件偶爾可能會因網路原因失效,如果發生該情況,您可以透過手動輸入來建立。
當地點帶有準確的GPS座標時,它們會精美地展示在地圖中:

如需批次整理這些地標,可以按一下 checkbox(勾選框) 圖示:

多選目標後,按一下 Assign label(分配標籤):

在分配之前,先按一下 Manage labels(管理標籤) 來新建一些醒目的彩色分組標籤:

按一下一個具體標籤,接著選擇一鍵綁定:

5.4 費用與預算
在 Costs(財務管理) 頁面中,我們可以錄入其他的預備預算和旅途支出。

在結伴出行時,您可以在此頁記錄每個人的墊付帳單,並選定分攤規則。
系統的結算後台採用了一種貪心匹配演算法,計算並生成最簡化的轉帳精算方案,幫大家用最少的轉帳次數輕鬆對齊帳目。
6. 利用Model Context Protocol(MCP)實現AI驅動的旅行規劃
TREK內建了 MCP(模型上下文協定)伺服器。這意味著,AI代理可以直接「讀寫」您的行程規劃資料。它提供了超過150个精細的原子工具和30個核心資料源,全方位覆蓋行程、地點、帳目、行李、預訂和多人協作。
6.1 Cloudflare Zero Trust網路配置
由於我們的自託管服務執行在 Cloudflare Zero Trust 內網環境下,我們需要在「Split Tunnels(分流隧道)」配置中,將該服務的網域加入到 Inclusion List(包含/直連白名單)中。否則在進行 OAuth 登入授權探索時,介面呼叫會被網路策略阻斷。具體的配置排障可以參考這個 GitHub 討論貼:GitHub Issue。

相關指南
教學:使用 Cloudflare WARP 安全地將 Hermes Agent 暴露至私有網路
本文深入探討如何使用 Cloudflare WARP 與 Zero Trust 技術,在完全不需要開啟任何防火牆入站連接埠的情況下,安全地將您的 Hermes Agent 暴露到私有網路中,從而實現全球範圍內的安全存取。這為您構建專屬私有遠端 AI 基礎架構打下堅實基礎。
5 分鐘閱讀
6.2 Claude Desktop用戶端配置
按一下 + New Client 創設一個新的 AI 用戶端介面:

選擇 Claude Desktop 項目,然後按一下 Register Client(註冊用戶端):

系統此時會展示唯一的 Client ID 和 Client Secret,請妥善保存。接著按一下 Client Configuration(用戶端配置) 調出我們需要在本地寫入的 JSON 程式碼片段:

在 Claude Desktop 軟體中,按一下 Edit Config 會在編輯器中打開您本地的 MCP server 檔案:

將 TREK 的 MCP 程式碼區塊貼上進去,並把佔位符部分替換為上一步生成的用戶端憑證:
"mcpServers": {
"trek": {
"command": "npx",
"args": [
"mcp-remote",
"https://trek.pafor.me/mcp",
"--static-oauth-client-info",
"{\"client_id\": \"<your_client_id>\", \"client_secret\": \"<your_client_secret>\"}"
]
}
},
重新啟動 Claude Desktop 用戶端。此時在 Local MCP servers(本地MCP服務)列表中就會看到 TREK 已經成功連線:

現在,您可以直接用日常口語來下達規劃指令了:

例如,我们用純中文錄入一筆非標準化的日常開支:
For the West Europe trip, the Grab from KLIA1 to the hotel cost RM115.90 on 26/4/2025. Please add it as an expense without split to the trip.

回到後台,重新整理 Costs 面板。我們可以看到這筆打車費用已經被精確地記錄下來,且因為命令中並未提及“由誰付款”,系統體貼地將付款人項歸納為了“No one paid yet(尚未有人支付)”:

管理行李清單的方式也完全一致:

再次重新整理 Packing List 頁面,指定的这三樣出行裝備已經被整齊地加入到了清單之中:

6.3 Gemini CLI(動態註冊)
Gemini CLI 對 Dynamic Registration(動態註冊機制) 提供了極佳的支援,這使得您完全無需在系統後台手動預註冊任何用戶端憑證。直接將以下程式碼追加到您本地的 .gemini/settings.json 檔案中:
"trek": {
"httpUrl": "https://trek.pafor.me/mcp",
"oauth": {
"enabled": true
}
}
在終端機執行 gemini 指令,並在隨後拉起的網頁授權頁面中按一下 Approve(批准) 即可:

現在便可以透過極簡的命令列終端機向 AI 提問了:


6.4 Kimi CLI(動態註冊)
原理基本相同。請在本地 /Users/<您的用戶名>/.kimi/ 目錄下找到 mcp.json 並寫入以下連線配置:
"trek": {
"type": "http",
"url": "https://trek.pafor.me/mcp",
"auth": "oauth"
}
在終端機執行 kimi mcp auth trek 並在網頁上按一下 Approve 完成快速授權:

完成授權後,您將網頁在命令列直接呼叫所有關聯的微服務工具:

7. 行動端使用體驗
在手機和行動裝置上,TREK是以 PWA(漸進式Web應用程式)的形式呈現的。其內建的 Service Worker 能夠將地圖網格瓦片和日程 API 資料離線快取,確保在野外或沒有網路訊號的極佳狀態下,您依然能夠流暢查看已制定的全部行程。不過,離線狀態下的推播通知回應速度相較原生應用程式會有微小的延遲。
結語
透過 MCP 將 AI 代理接入您的日常旅行規劃,可以幫您省去那些因手動鍵入繁多的航班和酒店確認單而產生的大量枯燥勞動。不僅如此,AI 還能根據您指定的具體出行節點和所處季節,智慧推薦周邊的特色景點。僅僅透過幾句隨意的對話,AI 就能輕鬆打通從前期靈感檢索、行程路線設計,再到後期預算拆分和行李打包的完整全鏈路。
不過在目前的版本中,依然存在一些微小的體驗瑕疵。例如:透過 PDF 智慧解析匯入訂單時,帳單貨幣會預設對齊到旅行專案的主貨幣,而不是當時實際刷卡結算的付款貨幣。此外,在 Collections 收藏夾中新建清單列表時,如果在列表尚未保存時就給它配置封面,該封面可能在保存後失效(您需要在列表正式建立後,點擊「編輯」來重新添加並保存,即可解決)。
此外,因為它需要您擁有一定的 VPS 運維基礎來親自執行這套程序,對一般使用者確實存在一些上手門檻。TREK 更適合那些重度旅行愛好者、數位游牧以及對於自身出行資料隱私和排版有著高水準要求的極客使用者。我們由衷地建議您在下定決心搭建自託管服務之前,可以先在 demo.liketrek.com 上完整試用一下官方提供的公測 DEMO,看它是否切中您的日常痛點。
參考資料:
相關文章

協作
自建 Block 旗下 Buzz 協作平台:輕鬆構建人類與 AI 智能體高效協同工作的全新共享工作空間
本教學將手把手帶您在 Ubuntu VPS 上部署自託管的 Block 旗下 Nostr 中繼 Buzz,並配置 Cloudflare DNS 安全網路。我們將幫助您搭建起一個安全性的共享工作空間,讓您的團隊成員與多個 AI 智能體(如 Claude、Kimi)能夠基於加密身份進行高效溝通、共享專案上下文並實現無縫協作。
11 分鐘閱讀
Cloudflare
基於Cloudflare Workers與MCP協定構建個人專屬AI持久化記憶系統,完美解決Context空白痛點
學習如何利用Cloudflare Workers、Vectorize與MCP協定自行架設AI持久化記憶系統(Second Brain)。在Claude、Gemini與Obsidian之間完美共享上下文。
35 分鐘閱讀
AI 與智能體
從傳統初始化範本腳本到智慧體:AI Agent 技能如何優雅地取代 Nuxt 應用程式的腳手架建構腳本
輕鬆在 Cloudflare Workers 上快速建構 Nuxt 應用程式腳手架。深入剖析並學習我們如何使用功能強大、極具靈活性、能根據意圖決策且支援自我修復的 AI 智慧體技能,來徹底取代脆弱且難以維護的傳統 Shell 腳本,並詳細演示如何透過 npx skills 命令行工具將其無缝安裝到您的本地開發工作流中。
2 分鐘閱讀
上一篇
從傳統初始化範本腳本到智慧體:AI Agent 技能如何優雅地取代 Nuxt 應用程式的腳手架建構腳本
輕鬆在 Cloudflare Workers 上快速建構 Nuxt 應用程式腳手架。深入剖析並學習我們如何使用功能強大、極具靈活性、能根據意圖決策且支援自我修復的 AI 智慧體技能,來徹底取代脆弱且難以維護的傳統 Shell 腳本,並詳細演示如何透過 npx skills 命令行工具將其無缝安裝到您的本地開發工作流中。

下一篇
自建 Block 旗下 Buzz 協作平台:輕鬆構建人類與 AI 智能體高效協同工作的全新共享工作空間
本教學將手把手帶您在 Ubuntu VPS 上部署自託管的 Block 旗下 Nostr 中繼 Buzz,並配置 Cloudflare DNS 安全網路。我們將幫助您搭建起一個安全性的共享工作空間,讓您的團隊成員與多個 AI 智能體(如 Claude、Kimi)能夠基於加密身份進行高效溝通、共享專案上下文並實現無縫協作。