TREKは旅程、予約、費用を自分で運用する共同プランナー
リアルタイム コラボレーション、インタラクティブ マップ、PWA サポート、SSO、予算、パッキング リストなどを備えた自己ホスト型の旅行/旅行プランナーです。
ひと目でわかる
- これは何?
- liketrek/TREKは、地図、日程、予約、割り勘、共同編集を一つにまとめるセルフホスト型の旅行計画アプリです。公開範囲とプラグイン境界も含めて読み解きます。
- 誰に向いている?
- TREKは、旅行の予定表だけでなく、予約、支出、荷物、共同メモ、公開ページまで自分の環境でまとめたい人に向きます。Google Placesのキーがない場合はOpenStreetMapを使える一方、地図、天候、為替、公共交通など複数の外部サービスに依存するため、地域ごとの精度と停止時の影響を確かめる必要があります。
- 商用利用できる?
- 厳しい条件付きでできます。AGPL-3.0 はネットワーク型コピーレフトのライセンスで、改変版をホスティングサービスなどとしてネットワーク越しに利用させる場合、その利用者にソースコードを同じライセンスで提供する必要があります。
- 今もメンテナンスされている?
- されています。直近 1 日以内に新しいコミットがあります。
- 何の言語で書かれている?
- 主に TypeScript です(GitHub の言語統計による)。
回答はプロジェクトの GitHub データ(最終同期:2026年9月15日)と当サイトの分析に基づくもので、法的助言ではありません。
オープンソース詳細解説
旅程を日単位の編集面へ変える
TREKはセルフホスト型の旅行計画アプリで、READMEはリアルタイム共同編集、地図、予算、荷物、日記、AIを一つの計画面に置く構成を示しています。場所を日へドラッグし、同じ日の中で順番を変え、取り消しもできます。予約やメモも同じ操作で並べ替えられ、地図上のマーカーをそのまま日程へ置けます。旅行の日付を動かすと各日の日付を付け直し、予約を一緒に移動するか、別の基準へ付け替える方式を選べます。
地図はLeaflet、Mapbox GL、MapLibre GLに対応し、クラスタリング、写真マーカー、ルート線を扱います。3D建物と地形はMapboxに限られ、場所検索はキーを設定したGoogle Placesか、キー不要のOpenStreetMapです。場所の説明や写真候補はOpenStreetMap、Wikipedia、Wikidata、Wikimedia Commonsから補います。機能が多い分、地図サービスのトークン、料金、帰属表示、検索精度を自分の地域で別々に確認する必要があります。
予約、通貨、割り勘を旅程に接続する
予約は16種類の区分を持ち、状態、確認コード、旅行者、添付ファイルを記録できます。フライトと鉄道は複数区間、途中停車、区間ごとの時刻、到着地のタイムゾーンを持ち、キーなしで時刻を解決するために4,045の空港データを同梱します。EML、PDF、PKPass、HTML、TXTの確認書はKItineraryで取り込めますが、Dockerイメージに含まれるkitinerary-extractorが必要です。
費用は整数のセント単位で、均等割りと任意の割合、複数の支払者、精算候補、精算履歴、CSV出力に対応します。費用ごとに通貨を選び、入力時点の換算レートを固定します。レートはキー不要のFrankfurterから取得します。為替や外部サービスの現在性をアプリだけに任せず、精算前に金額とレートの基準日を確認できる運用が必要です。PDF出力には表紙、場所の写真、日メモ、予約、費用を含め、日ごとの改ページも選べます。
共同編集と公開リンクを分けて考える
WebSocketによるリアルタイム同期では、同じ旅行を開いている参加者へ編集が届きます。メンバーはメールやユーザー名で追加でき、所有権の移譲、ログインしないゲストの追加も可能です。16の旅行アクションごとに、管理者、所有者、メンバー、全員のいずれへ許可するかを管理者が割り当てます。招待リンクは旅行ごとに一つ作れ、期限を付けられます。
アカウントなしで開ける読み取り専用の公開旅行ページもあります。Collabを有効にすると、返信付きグループチャット、リアクション、リンクプレビュー、添付付き共有メモ、投票、次の予定一覧を個別に追加できます。公開リンクと編集権限は同じものではないため、家族向けの閲覧、参加者の変更、外部共有を別の設定として管理すべきです。添付ファイルや予約情報を含むページを公開する場合は、URLを知る人の範囲を記録してください。
オフにできるJourney、Atlas、Vacay
Lists、Costs、Documents、Collab、Vacay、Atlasは有効な状態で出荷され、Journey、Collections、MCP、AI Parsing、AirTrailは既定で無効と説明されています。Journeyを使うと、日付、文章、気分、天候、タグ、写真、動画を持つ記録を作れます。ImmichやSynology Photosのライブラリと接続し、地図表示、共同執筆者、公開リンクを加えることもできます。
AtlasはgeoBoundariesの境界を使い、訪問した国や地域、行きたい場所、旅行統計、連続旅行年数を表示します。Vacayは半日を含む休暇カレンダー、date.nager.atの祝日、16の欧州諸国の学校休暇、年をまたぐ繰り越し、共同または読み取り専用の共有に対応します。Collectionsは旅行の外に場所を保存し、ラベル、評価、独自画像、旅行へのコピー、招待共有を持ちます。これらは便利な追加面ですが、不要なら無効のままにしてデータ連携を増やさない選択もできます。
プラグインの許可と外部接続
TREKのプラグインは、公式レジストリから入れるか、ZIPをサイドロードできます。インスタンス単位で有効化され、ページは/plugins/<id>の下に作られます。各プラグインは子プロセスとして隔離され、付与できる権限は63種類です。管理者が外向きホストの許可リストを編集し、メモリとRPCの上限、AIと通知の一日上限も設定できます。
レジストリから取得したものはSHA-256で固定し、作者のminisign鍵で照合します。サイドロードしたZIPは未検証として表示され、TREK_PLUGINS_ENABLED=falseでプラグイン全体を停止できます。境界が設けられていることと、すべてのプラグインが安全であることは別です。許可するホスト、AIへの入力、通知の送信先、子プロセスが扱うファイルをプラグインごとに確認し、まず未検証のZIPを本番データへ接続しないことが重要です。
セルフホストの構成とAGPL-3.0
導入方法としてDocker Compose、HelmまたはKubernetes、PWA、リバースプロキシが案内されています。Dockerの例ではopensslで32バイトのENCRYPTION_KEYを作り、3000番ポートへ公開し、/app/dataと/app/uploadsを永続ボリュームへ接続します。バックエンドはNestJS 11、状態管理はZustand、認証はJWT、OAuth 2.1、OIDC、Passkeys、TOTP MFAの組み合わせです。天候はOpen-Meteo、地図はLeafletとMapbox GLを使います。
HTTPSを終端するリバースプロキシの背後でFORCEHTTPS=trueを設定すると、301リダイレクト、HSTS、CSPのupgrade-insecure-requests、セキュアCookie強制が追加されると説明されています。これはTLS終端を正しく置いた場合だけ使う設定です。ライセンスはAGPL-3.0で、MITのような単純な再配布条件ではありません。サーバーとして改変して提供する場合を含め、ソース公開義務と依存サービスの条件を確認してから運用範囲を決めるべきです。
編集部の結論
TREKは、旅行の予定表だけでなく、予約、支出、荷物、共同メモ、公開ページまで自分の環境でまとめたい人に向きます。Google Placesのキーがない場合はOpenStreetMapを使える一方、地図、天候、為替、公共交通など複数の外部サービスに依存するため、地域ごとの精度と停止時の影響を確かめる必要があります。リアルタイム編集やゲスト共有を開く場合は、権限、公開リンク、添付ファイル、プラグインの許可を分けて設定してください。READMEに書かれた構成は導入の手掛かりであり、実際の運用安全性や性能を保証する資料ではありません。
コミュニティノート