---
title: "使用Docker與TREK自託管您的個性化智能旅行日程：一站式深度規劃並輕鬆管理預訂、財務和行李清單"
description: "本文詳細介紹如何使用Docker部署開源旅行規劃系統TREK。我們將帶您配置Caddy反向代理和Cloudflare R2物件儲存，實現資料的安全備份與圖片的高效載入。此外，還將演示如何利用MCP（模型上下文協定）連接Claude等AI代理，通過自然语言對話一鍵生成您的專屬旅行日程，開啟完美旅程。"
canonical_url: "https://techvoyage.dev/tw/article/self-hosted-travel-planner-trek"
last_updated: "2026-09-03"
---

在規劃旅行時，最繁瑣的部分莫過於那些零散的資料：機票預訂PDF、酒店確認信、旅伴之間的聊天記錄、想去的景點清單等，都散落在不同的角落。而當需要匯總總花費、拆分帳單時，又得在海量的出行記錄中不停翻找，極為耗費精力。

TREK是一款可以自託管的開源旅行規劃系統，能夠將您的行程、預訂、財務預算和行李清單一站式整合到同一個平台中。其內建的MCP（Model Context Protocol）伺服器還允許AI代理（如Claude Desktop）直接操作您的出行資料。

本教學將帶您一步步完成從系統部署到完整管理一次真實旅行的全過程。

### 1. 如何使用Docker部署TREK旅行規劃器

#### 在Ubuntu VPS上安裝Docker

```bash
# 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使用一个專門的金鑰來加密敏感資料。您可以使用以下指令或這個[線上工具](/tw/tools/secret-key-hex)來生成加密金鑰：

```bash
openssl rand -hex 32
```

請務必將其妥善保存在安全的地方。如果遺失該金鑰，您將無法存取已加密的資料。

#### 啟動容器

```bash
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網址。

首次執行需要一些時間來拉取映像檔：

![TREK 的 Docker 拉取与執行日誌](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-docker-pull-image.webp)驗證容器是否成功執行：

```bash
docker ps
```

![透過 docker ps 驗證執行中的容器狀態](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-docker-ps-status.webp)### 2. 使用Caddy反向代理設定網域路由與SSL憑證

通行鑰（Passkeys）功能和MCP所需的OAuth授權都強制要求HTTPS加密。我們的網域託管在提供免費SSL憑證和DDoS保護的Cloudflare上。

我們將Caddy配置為安全的反向代理伺服器，用來指向容器的3000連接埠。Caddyfile設定範例如下：

```json
{$TREK_DOMAIN} {
  encode zstd gzip
  reverse_proxy host.docker.internal:3000
}
```

### 3. 初始配置與安全的管理員設定

建立管理員帳戶有兩種方式：

- **在環境配置中直接設定 ADMIN_EMAIL 和 ADMIN_PASSWORD** 變數，系統將直接使用該憑證。
- TREK會自動生成一個信箱 `admin@trek.local`、使用者名稱 `admin`，以及一個**隨機生成的密碼，並列印到容器日誌中**。執行 `docker logs trek` 即可獲取。

如果您在日誌中找不到密碼，可以透過以下指令進行手動重置：

```bash
docker exec -it -e RESET_ADMIN_EMAIL=admin@trek.local -e RESET_ADMIN_PASSWORD='YourNewPassword' trek node server/reset-admin.js
```

在首次登入時，系統會提示您修改初始密碼。

![初始登入與管理員密碼重設提示](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-initial-login-password-prompt.webp)按一下 **Admin（管理員）** 索引標籤並更新您的電子信箱：![在 TREK 管理員設定中設定自訂電子郵件](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-admin-email-update-panel.webp)

#### 3.1 備份策略

在管理員後台，可以非常方便地配置帶有保留策略的自動備份方案：
![設定自動備份排程與保留規則](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-admin-backup-retention-policy.webp)

#### 3.2 將上傳的檔案儲存到Cloudflare R2

將上傳的檔案、照片和備份資料保存在Cloudflare R2中，能夠讓您的VPS磁碟保持乾淨和輕量。TREK全面支援S3相容的儲存後端，而Cloudflare R2正是這一需求的完美解決方案。

1. 新建一個名為 `trek` 的R2儲存桶。
2. 在 **Account Details（帳戶詳情）** 區域，找到您的帳戶ID：
  ![在主控台中定位 Cloudflare 帳戶 ID](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/cloudflare-r2-account-details-id.webp)
3. 按一下 **Manage API Tokens（管理API權杖）**：
  ![Cloudflare 主控台中的管理 API 權杖畫面](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/cloudflare-r2-manage-api-tokens-button.webp)
4. 按一下 **Create Account API token（建立帳戶API權杖）**，並授予針對該桶的讀寫權限：
  ![建立具有讀寫權限的 R2 存取權杖](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/cloudflare-r2-create-token-permissions.webp)
5. 在管理員面板中，按一下 **Storage（儲存）** 配置頁：
  ![導覽至 TREK 控制面板中的儲存設定](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-administration-storage-menu.webp)
6. 按一下 **Add Backend（新增後端）** 按鈕，填入您的Endpoint（端點）、Bucket（儲存桶名稱）和API憑證：
  ![設定 S3 相容的 Cloudflare R2 儲存端](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-add-storage-backend-credentials.webp)
7. 按一下 **Apply（套用）**，然後按一下 **Test（測試）** 連結。當看到「Connection OK」字樣时，說明連線測試成功：
  ![儲存端連線測試成功，顯示 Connection OK](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-test-storage-backend-connection-ok.webp)
8. 将所有儲存類別切換為Cloudflare R2并按一下 **Save changes（儲存修改）**：
  ![將所有檔案儲存分類路由至 Cloudflare R2](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-switch-storage-categories-r2.webp)

#### 3.3 通行鑰（Passkey）登入

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

![註冊用於安全金鑰（Passkey）身分驗證的允許來源](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-passkey-allowed-origins-settings.webp)如果沒有正確配置 **Allowed Origins**，通行鑰註冊將會失敗。

#### 3.4 Google Maps API金鑰

配置Google Maps金鑰可以讓您的地點檢索功能變得更豐富，自動補充評分、營業时间和地點實景圖。如果您不配置金鑰，TREK會預設降級使用免費的OpenStreetMap（只是不顯示評分和實景照片）。

造訪此[連結](https://mapsplatform.google.com/maps-demo-key/)並按一下 **Get demo key** 即可申請一個測試金鑰：                                                  ![申請 Google Maps Platform API 金鑰](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/google-maps-get-demo-api-key.webp)

將獲取到的API Key貼上到設定中，然後按一下 **Test** 驗證連線是否通暢：
![在設定中驗證 Google Maps API 金鑰的連通性](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-google-maps-key-test-connection.webp)

#### 3.5 AI整合

內建的AI解析引擎主要用於處理您的預訂確認郵件和PDF，將它們自動轉換為結構化的預訂資料。

按一下左側選單中的 **Addons（附加元件）** 並啟用 **AI Parsing**。選擇「OpenAI」（或其他相容的AI提供商）並填寫相應的憑證資訊：

![啟用附帶 OpenAI 整合的 AI 解析外掛](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-addons-enable-ai-parsing-openai.webp)#### 3.6 MCP存取權限

同樣在 **Addons** 選項中，開啟 **MCP** 協定：

![啟用 Model Context Protocol MCP 伺服器外掛](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-addons-enable-mcp.webp)#### 3.7 外掛推薦

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

![活躍的推薦外掛與擴充功能列表](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-recommended-addons-plugins-activation.webp)#### 3.8 建立您的日常使用帳戶

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

![在 TREK 面板中建立一般使用者帳戶](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-create-regular-user-form.webp)登入後，建議立刻綁定通行鑰或設定2FA來強化該帳戶的安全層級：

![使用安全金鑰（Passkey）與雙重認證設定使用者安全設定](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-user-security-passkey-2fa-setup.webp)按一下 **+ Add a passkey**，輸入目前密碼，然後按照瀏覽器提示完成安全確認：

![確認密碼以註冊新的硬體安全金鑰](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-add-passkey-confirm-password.webp)### 4. 測試您的部署：匯入歷史出行資料

快速上手並熟悉TREK系統的一個極佳方式是，將您過去走過的旅行足跡錄入其中。

#### 4.1 建立旅行計劃

按一下 **+ New Trip（新建旅行）**，並根據那次歷史旅行的真實起止時間設定 **Start Date** 和 **End Date**：

![建立具有自訂日期範圍的新旅行](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-create-new-trip-details.webp)上傳一張好看的封面圖（可以直接將圖片拖入或從剪貼簿貼上），接著按一下 **Create New Trip**：

![設定高品質的旅行封面圖片](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-trip-cover-image-upload.webp)#### 4.2 匯入預訂資訊

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

![用於匯入旅行 PDF 與預訂檔案的拖放區域](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-import-travel-booking-files.webp)![已上傳預訂的處理視窗，顯示擷取狀態](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-import-booking-pdf-processing-status.webp)由於我們已經啟用了AI解析引擎，預訂確認PDF檔案會被自動分析，提取出結構化的預訂日程。

檢查解析結果無誤后，按一下 **Add** 將其正式寫入預訂資料中：

![審查由 AI 擷取的結構化預訂細節](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-review-parsed-booking-details.webp)如果有些預訂確認僅保存在郵件中，您可以將其匯出為PDF格式并上傳，同樣可以走這套提取流程。

在系統中，已匯入的預訂資訊會以極具現代感的方式呈現：

![旅行預訂的完整時間軸展示](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-trip-bookings-timeline-view.webp)![已確認交通預訂的詳細檢視](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-booking-confirmation-details.webp)

在 **Plan（日程規劃）** 頁面中，所有的飯店和住宿點都會在地圖上被優雅地標註出來：

![標有所有飯店住宿的互動式地圖](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-plan-accommodations-map-display.webp)按一下上方的 **Atlas（旅行足跡）**，您將能从清單和世界地圖上直觀地看到所有已拜訪的国家：

![個人 Atlas 追蹤器中的旅行歷史概述](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-atlas-countries-visited-summary.webp)#### 4.3 新增旅行同伴

按一下 **Share（分享）** 按鈕：

![在 TREK 中開啟旅行分享對話方塊](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-trip-share-options-button.webp)在彈出的對話方塊底部，可以直接新增旅行同伴為Guest（嘉賓）：

![新增自訂旅行同伴與隨行客人](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-trip-add-companions-guests.webp)#### 4.4 記錄旅行費用

按一下 **Add expense（新增開銷）**，來記錄那些無法透過PDF預訂單自動解析的雜項支出，例如境外險、當地公共交通費、臨時SIM卡等：

![在支出表單中輸入詳細的消費數據](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-add-custom-expense-form.webp)![分攤帳單明細與費用追蹤帳本](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-expenses-list-billing-split.webp)#### 4.5 拆分旅行階段

該功能需要提前在後台激活“Trip Segment”外掛。

對於那些超長週期的旅程，將其拆分為不同的階段能讓脈絡更清晰，每個階段都可以有自己獨立的預訂項目、待辦事項和成本帳單：

![將複雜的行程拆分為旅行段](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-trip-segments-overview-display.webp)![顯示地點與計劃的活躍旅行段](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-trip-segment-itinerary-details.webp)![在時間軸上繪製不同的旅行航段](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-trip-segments-interactive-map.webp)#### 4.6 建立Journal（日誌）並查看旅行足跡（Atlas）

您還可以將幾次旅行串聯成一個 **Journey（旅程）**，並圖文並茂地撰寫遊記故事，方便分享給您的朋友們：

![將多次旅行合併為一個視覺化的旅程](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-create-new-journey-group.webp)![在旅程面板中撰寫視覺化故事](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-journey-timeline-story-writing.webp)![旅程內部的媒體收集與畫廊網格](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-journey-gallery-media-grid.webp)![為協同旅程產生公開分享連結](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-journey-public-share-link.webp)### 5. 設計自訂行程與行李清單

按一下 **+ New Trip**，輸入旅行的專屬名稱並指定起止日期：

![建立未定日期旅行的初始提示對話方塊](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-planning-new-trip-setup.webp)**如果具體的出行時間還沒有敲定，可以將日期項留空。** 此時系統會顯示一個「天數配置（最高支援365天）」欄位，您可以先設計每日的遊玩內容，等後續買好機票後再一鍵錨定日期。

#### 5.1 新增地點/景點

這是旅行規劃中最耗時的一步，但TREK提供了四種極具效率的方式來協助您新增地點：

![向行程新增新地點的多種途徑](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-add-places-methods-overview.webp)**1. 直接在地圖上右鍵點擊：** 會該座標處直接建立新地點，其標準地址會被系統自動逆地理編碼解析出來：

![在地圖介面右鍵點擊以精確定位](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-right-click-map-location.webp)![所選地圖座標的自動逆地理編碼](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-right-click-reverse-geocode-address.webp)**2. 按一下 + Add Place/Activity：** 在搜尋框中直接透過關鍵字進行檢索

![使用文字輸入搜尋真實地點](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-search-place-by-name-input.webp)![顯示附帶地址標註的地點搜尋結果清單](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-select-place-search-results-list.webp)![包含評論與評分的完整地點資訊卡](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-place-details-rich-info-card.webp)**3. 直接貼上Google地圖分享連結：** （如 `maps.app.goo.gl/…` 或 `maps.google.com/…`）貼上到檢索欄中。TREK會自動抓取該地點的名稱、地址和經緯度：

![直接從貼上的 Google 地圖分享連結解析地點](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-paste-google-maps-share-link.webp)![成功從地圖 URL 中擷取座標](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-google-maps-parsed-location.webp)**4. 批次匯入資料：** 這是最輕鬆的方案。如果您在Google Maps中維護著自己的「想去清單」，可以將其匯出為 `.gpx` 檔案（`.kml` 或 `.kmz` 格式亦支援），然後按一下右側面板的 **Import file**，一鍵拉取所有資料：

![使用 GPX 或 KML 檔案批次匯入地點](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-bulk-import-places-gpx-file.webp)推薦您可以先把所有感興趣的項目都新增進來。至於如何將它們科學地歸入到每一天的日程中，後續可以直接在面板裡拖拽處理。

#### 5.2 每日日程與備忘

Day Plan（每日計劃）的核心邏輯是將所有的目的地按每日訪問順序進行排序。整個介面是一個可以折疊、支援任意拖放的模組：

![使用拖放操作自訂每日路線順序](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-day-plan-drag-drop-ordering.webp)這些細節機制設計得極其精妙實用：

- **中間移動方式**：按一下每日日程左上角的公車圖示，可以設定各節點之間的過渡交通方式（如地鐵、自駕、甚至是直達航班）：
![登記日行程各段之間的通勤交通方式](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-day-plan-commuting-transport-button.webp)
- **每日備忘**：按一下左下角的便簽圖示可以附加各種客製化提醒（例如：「今天需要提早出發」、「美術館門票需提前預約」）：
![為天行程新增顯眼的、帶有圖示的自訂備註](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-day-plan-icon-tagged-notes-button.webp)
- **指定時間段**：從右側拖拽地點並給它分配一個開始時間。設定了時間的地點會自動在地圖上生成推薦的行進路線：
![帶時間點的地點之間自動計算的交通路線](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-day-plan-timed-places-routing.webp)
- 關於智慧路線優化（**Route optimisation**）以及氣候（**Weather**），您可以查閱 [Day Plans and Notes的Wiki文件](https://github.com/liketrek/TREK/wiki/Day-Plans-and-Notes)。

#### 5.3 收藏夾：可重複使用的地點清單

Collections（收藏夾）允許使用者在具體的旅行專案之外，保存並分類管理自己精心收集的寶藏地點。您可以將其打包分享給朋友。這些地點在加入旅行時是採用**複製**的方式，因此在旅行日程中對其進行的任何個性化標註，都不會破壞您收藏夾裡的原始乾淨資料。

按一下頂部選單列中的 **Collections**：

![存取儲存地點的自訂使用者收藏夾](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-dashboard-view.webp)按一下 **+ New list** 建立新的分類列表：

![在收藏夾中建立自訂清單](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-create-new-list.webp)按一下 **+ Add a place** 並填入該地點的詳細情況：

![手動輸入表單以填充自訂收藏清單](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-add-place-manually-form.webp)**注意：** 收藏夾內的搜尋元件偶爾可能會因網路原因失效，如果發生該情況，您可以透過手動輸入來建立。

當地點帶有準確的GPS座標時，它們會精美地展示在地圖中：

![在互動式地圖上視覺化自訂收藏中的地點](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-map-places-display.webp)如需批次整理這些地標，可以按一下 **checkbox（勾選框）** 圖示：

![批次標記已儲存地點的選擇模式](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-select-places-tickbox.webp)多選目標後，按一下 **Assign label（分配標籤）**：

![為選定的收藏地點分配描述性標籤](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-group-assign-label.webp)在分配之前，先按一下 **Manage labels（管理標籤）** 來新建一些醒目的彩色分組標籤：

![建立與管理自訂標籤](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-manage-custom-labels.webp)按一下一個具體標籤，接著選擇一鍵綁定：

![套用自訂標籤至分群的地點](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-confirm-label-selection.webp)#### 5.4 費用與預算

在 **Costs（財務管理）** 頁面中，我們可以錄入其他的預備預算和旅途支出。

![完整的支出表格與餘額結算帳本](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-costs-budget-overall-expenses-list.webp)在結伴出行時，您可以在此頁記錄每個人的墊付帳單，並選定分攤規則。

系統的結算後台採用了一種貪心匹配演算法，計算並生成**最簡化的轉帳精算方案**，幫大家用最少的轉帳次數輕鬆對齊帳目。

### 6. 利用Model Context Protocol（MCP）實現AI驅動的旅行規劃

TREK內建了 **MCP（模型上下文協定）伺服器**。這意味著，AI代理可以直接「讀寫」您的行程規劃資料。它提供了超過150个精細的原子工具和30個核心資料源，全方位覆蓋行程、地點、帳目、行李、預訂和多人協作。

#### 6.1 Cloudflare Zero Trust網路配置

由於我們的自託管服務執行在 [Cloudflare Zero Trust](/article/exposing-hermes-agent-to-private-network-using-cloudflare-warp) 內網環境下，我們需要在「Split Tunnels（分流隧道）」配置中，將該服務的網域加入到 Inclusion List（包含/直連白名單）中。否則在進行 OAuth 登入授權探索時，介面呼叫會被網路策略阻斷。具體的配置排障可以參考這個 GitHub 討論貼：[GitHub Issue](https://github.com/liketrek/TREK/issues/1463)。

<article-card description="本文深入探討如何使用 Cloudflare WARP 與 Zero Trust 技術，在完全不需要開啟任何防火牆入站連接埠的情況下，安全地將您的 Hermes Agent 暴露到私有網路中，從而實現全球範圍內的安全存取。這為您構建專屬私有遠端 AI 基礎架構打下堅實基礎。" image="https://inimages.techvoyage.dev/articles/Exposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP/TW-Exposing-Hermes-Agent-to-Private-Network-Using-Cloudflare-WARP.webp" image-alt="透過 Cloudflare Zero Trust 和 WARP 隧道安全地將 Hermes Agent 暴露至私有網路" label="相關指南" min-read="5" title="教學：使用 Cloudflare WARP 安全地將 Hermes Agent 暴露至私有網路" to="/article/exposing-hermes-agent-to-private-network-using-cloudflare-warp">



</article-card>

![向 Cloudflare Warp 分流隧道（Split Tunnels）新增自訂網域名稱](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/cloudflare-zero-trust-split-tunnels-domain.webp)#### 6.2 Claude Desktop用戶端配置

按一下 **+ New Client** 創設一個新的 AI 用戶端介面：
![在設定中註冊新的自訂用戶端權杖](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-register-new-mcp-client.webp)

選擇 **Claude Desktop** 項目，然後按一下 **Register Client（註冊用戶端）**：

![產生 Claude Desktop 用戶端憑據](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-mcp-claude-desktop-client-credentials.webp)系統此時會展示唯一的 Client ID 和 Client Secret，請妥善保存。接著按一下 **Client Configuration（用戶端配置）** 調出我們需要在本地寫入的 JSON 程式碼片段：

![取得預先格式化的 MCP 伺服器組態組塊](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-mcp-client-configuration-block.webp)在 Claude Desktop 軟體中，按一下 **Edit Config** 會在編輯器中打開您本地的 MCP server 檔案：

![編輯 Claude Desktop 的本機 MCP 設定檔 json](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/claude-desktop-mcp-config-json.webp)將 TREK 的 MCP 程式碼區塊貼上進去，並把佔位符部分替換為上一步生成的用戶端憑證：

```json
"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 已經成功連線：

![在 Claude 介面中驗證活躍的 TREK 連線狀態](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/claude-desktop-mcp-trek-server-connected.webp)現在，您可以直接用日常口語來下達規劃指令了：

![使用自然語言提示 Claude 操作旅行資料](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/claude-desktop-mcp-natural-language-prompt.webp)例如，我们用純中文錄入一筆非標準化的日常開支：

```text
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.
```

![Claude 呼叫工具自動記錄一筆支出](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/claude-desktop-mcp-add-expense-response.webp)回到後台，重新整理 **Costs** 面板。我們可以看到這筆打車費用已經被精確地記錄下來，且因為命令中並未提及“由誰付款”，系統體貼地將付款人項歸納為了“No one paid yet（尚未有人支付）”：

![在費用檢視中確認最新由 AI 解析的支出](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-costs-page-mcp-parsed-expense.webp)管理行李清單的方式也完全一致：

![Claude 使用自然語言提示新增打包清單物品](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/claude-desktop-mcp-add-packing-items.webp)再次重新整理 **Packing List** 頁面，指定的这三樣出行裝備已經被整齊地加入到了清單之中：

![在打包清單頁面中確認最新解析的打包物品](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-packing-list-mcp-parsed-items.webp)#### 6.3 Gemini CLI（動態註冊）

Gemini CLI 對 **Dynamic Registration（動態註冊機制）** 提供了極佳的支援，這使得您完全無需在系統後台手動預註冊任何用戶端憑證。直接將以下程式碼追加到您本地的 `.gemini/settings.json` 檔案中：

```json
"trek": {
      "httpUrl": "https://trek.pafor.me/mcp",
      "oauth": {
        "enabled": true
      }
    }
```

在終端機執行 `gemini` 指令，並在隨後拉起的網頁授權頁面中按一下 **Approve（批准）** 即可：
![批准針對 TREK MCP 伺服器的 OAuth 存取授權](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/mcp-client-oauth-authorization-prompt.webp)

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

![使用 Gemini CLI 提示獲取旅行行程](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/gemini-cli-mcp-prompt-itinerary.webp)![Gemini CLI 成功展示結構化的旅行資訊](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/gemini-cli-mcp-display-itinerary.webp)#### 6.4 Kimi CLI（動態註冊）

原理基本相同。請在本地 `/Users/<您的用戶名>/.kimi/` 目錄下找到 `mcp.json` 並寫入以下連線配置：

```json
"trek": {
      "type": "http",
      "url": "https://trek.pafor.me/mcp",
      "auth": "oauth"
    }
```

在終端機執行 `kimi mcp auth trek` 並在網頁上按一下 **Approve** 完成快速授權：
![批准針對 TREK MCP 伺服器的 OAuth 存取授權](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/mcp-client-oauth-authorization-prompt.webp)

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

![授權成功後 Kimi CLI 顯示的可用工具清單](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/kimi-cli-mcp-authorized-tools-list.webp)### 7. 行動端使用體驗

在手機和行動裝置上，TREK是以 PWA（漸進式Web應用程式）的形式呈現的。其內建的 Service Worker 能夠將地圖網格瓦片和日程 API 資料離線快取，確保在野外或沒有網路訊號的極佳狀態下，您依然能夠流暢查看已制定的全部行程。不過，離線狀態下的推播通知回應速度相較原生應用程式會有微小的延遲。

### 結語

透過 MCP 將 AI 代理接入您的日常旅行規劃，可以幫您省去那些因手動鍵入繁多的航班和酒店確認單而產生的大量枯燥勞動。不僅如此，AI 還能根據您指定的具體出行節點和所處季節，智慧推薦周邊的特色景點。僅僅透過幾句隨意的對話，AI 就能輕鬆打通從前期靈感檢索、行程路線設計，再到後期預算拆分和行李打包的完整全鏈路。

不過在目前的版本中，依然存在一些微小的體驗瑕疵。例如：透過 PDF 智慧解析匯入訂單時，帳單貨幣會預設對齊到旅行專案的主貨幣，而不是當時實際刷卡結算的付款貨幣。此外，在 Collections 收藏夾中新建清單列表時，如果在列表尚未保存時就給它配置封面，該封面可能在保存後失效（您需要在列表正式建立後，點擊「編輯」來重新添加並保存，即可解決）。

此外，因為它需要您擁有一定的 VPS 運維基礎來親自執行這套程序，對一般使用者確實存在一些上手門檻。TREK 更適合那些重度旅行愛好者、數位游牧以及對於自身出行資料隱私和排版有著高水準要求的極客使用者。我們由衷地建議您在下定決心搭建自託管服務之前，可以先在 [demo.liketrek.com](https://demo.liketrek.com/) 上完整試用一下官方提供的公測 DEMO，看它是否切中您的日常痛點。

### 參考資料:

- [TREK Quick Start](https://github.com/liketrek/TREK/wiki/Quick-Start)
- [TREK Troubleshooting](https://github.com/liketrek/TREK/wiki/Troubleshooting)
- [TREK MCP Scopes](https://github.com/liketrek/TREK/wiki/MCP-Scopes)
