---
title: "DockerとTREKで旅行プランをセルフホスト：日程、予約、旅費、持ち物リストを完全統合する究極のガイド"
description: "Dockerを使用してオープンソースの旅行プランナー「TREK」をデプロイし、CaddyリバースプロキシやCloudflare R2と連携させてセキュアに運用する方法を徹底解説。さらに、MCP経由でAIエージェントと接続し、自然言語で旅行の予約、旅費、持ち物リストを自動整理・一元管理してスマートに旅を計画しましょう。"
canonical_url: "https://techvoyage.dev/ja/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は機密データの暗号化にキーを使用します。以下のコマンドまたはこちらの[オンラインツール](/ja/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ディスカバリーフローは、このURLに依存しています。デプロイの初期段階から、最終的な公開HTTPSアドレスを設定してください。

初回起動時はイメージのプルに少し時間がかかります：

![TREKのDocker pullおよびrunのログ](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の設定

パスキーやMCP用のOAuthを利用するには、HTTPSの導入が必須です。ドメインは、無料のSSL証明書とDDoS保護機能を提供するCloudflareでホストされています。

ポート3000を指すセキュアなリバースプロキシサーバーとして、Caddyをセットアップします。Caddyfileの記述例は以下の通りです：

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

### 3. 初期設定と管理者アカウントのセキュアなセットアップ

管理者アカウントを作成する方法は2つあります：

- **環境変数`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 of TREKの確認](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. 管理画面のADMINISTRATION（管理）パネルでStorage（ストレージ）をクリックします：
  ![TREK管理パネルでのストレージ設定への移動](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-administration-storage-menu.webp)
6. Add Backend（バックエンドの追加）ボタンをクリックし、エンドポイント、バケット名、クレデンシャル情報を入力します：
  ![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 パスキーログイン

TREKはパスキー、2要素認証（2FA）、およびOIDCによるシングルサインオンをサポートしています。パスキーを有効にするには、設定画面でドメイン名と許可されたオリジン（Allowed Origins）を入力し、Save（保存）をクリックします：

![安全なパスキー認証のための許可されたオリジンの登録](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-passkey-allowed-origins-settings.webp)許可されたオリジンを正しく設定しないと、パスキーの登録が失敗します。

#### 3.4 Google Maps APIキー

Google MapsのAPIキーを登録すると、場所の検索時に評価、営業時間、写真などの情報が自動的に追加されます。キーを登録しない場合、TREKは自動的にOpenStreetMapを使用します（その場合、評価や写真は表示されません）。

こちらのリンクからGet demo keyをクリックしてキーを取得します：                                                  ![Google Maps PlatformのAPIキーの取得リクエスト](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/google-maps-get-demo-api-key.webp)

キーを設定画面に貼り付け、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」（またはその他の互換プロバイダー）を選択し、プロバイダーの詳細情報を入力します：

![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パネルでの一般ユーザーアカウント of TREKの作成](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-create-regular-user-form.webp)ログインしたら、パスキーを追加するか、2要素認証（2FA）を設定してセキュリティを強化しましょう：

![パスキーと2要素認証によるユーザーセキュリティ設定](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をクリックすると、これまでに訪れた国のリストと地図が表示されます：

![個人アトラストラッカーにおける旅行履歴の概要](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)ダイアログの下部でゲストを追加できます：

![カスタムの同行者やゲストの追加設定](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-trip-add-companions-guests.webp)#### 4.4 経費の記録

海外旅行保険、現地交通費、SIMカード代など、予約確認書以外の支出を記録するには、Add expense（経費を追加）をクリックします：

![経費入力フォームへの詳細な出費データの入力](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 ジャーニーの作成とアトラスの確認

複数の旅行を「**Journey**（ジャーニー）」としてまとめ、ストーリーを書いて友人たちに冒険を共有できます：

![複数の旅行を1つのビジュアルジャーニーに統合](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マップの共有URL**（`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)![GoogleマップのURLからの座標抽出に成功](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-google-maps-parsed-location.webp)**4. 一括インポート** — これが最も簡単な方法です。Googleマップでお気に入りのリスト（「行きたい場所」など）を作成している場合、それを`.gpx`（`.kml`や`.kmz`も対応）としてエクスポートし、右側パネル of **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（コレクション）をクリックします：

![保存済みスポットのカスタムコレクション画面](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)**注意:** 「Add a place」ダイアログ内の検索機能は、うまく機能しない場合があるため、その際は詳細を手動で入力する必要があります。

場所のジオ座標が利用可能な場合、それらは地図上に表示されます：

![インタラクティブマップ上でのカスタムコレクションスポットの可視化](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-map-places-display.webp)スポットをラベルで整理するには、チェックボックスのアイコンをクリックします：

![保存済みスポットの一括ラベル付け用の選択モード](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)ラベルを選択して、Assign labelをクリックします：

![グループスポットへのカスタムラベルの適用](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)同じページで、同行者が支払った金額を追加し、割り勘を設定することができます。

精算（Settlement）パネルは、グリーディー・マッチング（貪欲法）アルゴリズムを実行して、誰が誰にいくら支払うべきかを計算し、送金回数が最小限になる精算方法を提案します。

### 6. Model Context Protocol (MCP)を活用したAI駆動の旅行計画

TREKには**MCP（Model Context Protocol）サーバー**が内蔵されています。これにより、AIエージェントがあなたの旅行データに直接アクセスして、読み書きすることができます。旅行、スポット、予算、持ち物、予約、コラボレーションなど、150以上のツールと30の主要なリソースをカバーしています。

#### 6.1 Cloudflare Zero Trust

TREKを[Cloudflare Zero Trust](/article/exposing-hermes-agent-to-private-network-using-cloudflare-warp)環境の配下で運用している場合、ドメインをスプリットトンネル（Split Tunnels）のインクルージョンリスト（除外・バイパスリスト）に追加する必要があります。そうしないと、OAuth認証時に問題が発生する可能性があります。詳細については、こちらのGitHub Issueを参照してください：[GitHub Issue](https://github.com/liketrek/TREK/issues/1463)

<article-card description="ファイアウォールのインバウンドポートを開くことなく、Cloudflare WARPとZero Trustを使用してグローバルかつ安全にHermes Agentへアクセスし、プライベートネットワークに公開する方法を詳しく解説します。" image="https://inimages.techvoyage.dev/articles/Exposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP/JA-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スプリットトンネルへのカスタムドメインの追加](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)クライアントIDとクライアントシークレットのペアが表示されます。これらを安全な場所に保存してください。次に、Client Configuration（クライアント設定）をクリックして、MCP設定を表示します：

![フォーマット済みのMCPサーバー設定ブロックの取得](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-mcp-client-configuration-block.webp)Claude DesktopでEdit Configをクリックし、ローカルのMCPサーバー設定ファイルを開きます：

![Claude DesktopのローカルMCP設定JSONファイルの編集](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/claude-desktop-mcp-config-json.webp)TREKの設定を貼り付け、プレースホルダー部分をご自身の情報に置き換えます：

```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を再起動すると、ローカルMCPサーバー（Local MCP servers）に接続された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」ページを更新すると、3つのアイテムが追加されています：

![持ち物リスト画面での新しく解析された持ち物の確認](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)

シンプルなプロンプトから始めてみましょう：

![旅行日程を取得するための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/<user>/.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（Progressive Web App）として動作します。サービスワーカーがマップタイルやAPIデータをキャッシュするため、オフライン環境でも旅程を確認することができます。ただし、ネイティブアプリと比較すると、プッシュ通知に多少の遅延が発生する場合があります。

### おわりに

MCPを介してAIエージェントを接続することで、フライトや宿泊施設の予約データを手動で入力する手間を大幅に削減できます。また、AIエージェントは旅行日程や季節に応じたお勧めの観光スポットを提案することも可能です。AIエージェントとの一度の対話で、リサーチや旅程の作成から、予算管理、持ち物リストの整理まで、旅行計画のすべてのステップをカバーできます。

ただし、いくつか軽微な不具合も見受けられます。例えば、PDFから予約をインポートする際、実際に支払った通貨ではなく、旅行の基本通貨（デフォルト通貨）に自動設定されてしまうことがあります。また、「Collections」で新しいリストを作成する際、作成時に入力したカバー画像が保存後に消えてしまうことがあります（ただし、編集画面から手動で再追加することは可能です）。

また、ご自身のサーバーにこれをホストする必要があるため、導入には多少の技術的なハードルがあります。TREKは主に、頻繁に旅行に行き、旅のデータをこだわりを持って整理したい方向けに設計されています。セルフホストを検討する前に、demo.liketrek.comで公式デモを試してみることをお勧めします。

### 参考リンク:

- [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)
