Techvoyage
Beranda
Ilustrasi 3D minimalis premium dari dasbor perencana perjalanan self-hosted TREK dengan latar belakang kertas perkamen hangat.

Host Sendiri Rencana Perjalanan Anda dengan TREK dan Docker

Pelajari cara deploy TREK dengan Docker, amankan lewat Cloudflare R2 dan Caddy, serta gunakan agen AI via MCP untuk rencana perjalanan Anda yang lancar.

Sep 1, 2026 - Diperbarui Sep 3, 2026 - 22 MENIT BACA
Daftar isi

Bagian yang menjengkelkan dari merencanakan perjalanan adalah PDF pemesanan penerbangan, konfirmasi hotel, obrolan dengan rekan perjalanan, dan daftar tempat yang ingin dikunjungi tersebar di lokasi yang berbeda-beda. Saat tiba waktunya untuk menghitung total pengeluaran dan membagi tagihan, dibutuhkan usaha ekstra besar untuk menelusuri semua data perjalanan tersebut.

TREK adalah perencana perjalanan open-source yang dapat di-self-host, mengemas rencana perjalanan, pemesanan, anggaran, dan daftar bawaan Anda semua ke dalam satu tempat. Server MCP bawaan memungkinkan agen AI (seperti Claude Desktop) untuk langsung mengelola data perjalanan Anda.

Panduan ini akan memandu Anda melalui segalanya, mulai dari instalasi hingga mengelola perjalanan nyata sepenuhnya dari awal hingga selesai.

1. Cara Deploy Perencana Perjalanan TREK Menggunakan Docker

Instal Docker di VPS Ubuntu

# 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

Hasilkan Kunci Enkripsi

TREK menggunakan kunci untuk mengenkripsi data sensitif. Gunakan perintah berikut atau alat online ini untuk menghasilkan kunci enkripsi:

openssl rand -hex 32

Simpan di tempat yang aman; kehilangan kunci ini berarti Anda akan kehilangan akses ke data yang terenkripsi.

Jalankan Kontainer

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 harus diatur dengan benar — alur penemuan OAuth server MCP bergantung padanya. Atur ke alamat HTTPS publik akhir Anda sejak awal.

Proses pertama membutuhkan waktu beberapa saat untuk mengunduh image:

Verifikasi bahwa kontainer sedang berjalan:

docker ps

2. Mengonfigurasi Perutean Domain & SSL dengan Caddy Reverse Proxy

HTTPS diperlukan untuk passkey, dan OAuth untuk MCP. Nama domain di-host di Cloudflare yang menyediakan sertifikat SSL gratis dan perlindungan DDoS.

Caddy dikonfigurasi sebagai server reverse proxy yang aman untuk mengarah ke port 3000. Contoh file Caddyfile adalah sebagai berikut:

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

3. Konfigurasi Awal & Penyiapan Admin yang Aman

Ada dua cara untuk membuat akun admin:

  • ADMIN_EMAIL dan ADMIN_PASSWORD diatur sebagai variabel lingkungan (environment variables); nilai-nilai tersebut akan digunakan secara langsung.
  • TREK membuat email admin@trek.local, nama pengguna admin, dan kata sandi acak yang tercetak di log kontainer. Jalankan docker logs trek untuk mendapatkannya.

Jika kata sandi tidak dapat ditemukan di log, setel ulang dengan perintah:

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

Anda akan diminta untuk mengubah kata sandi pada log masuk pertama.

Klik pada Admin dan perbarui email:

3.1 Cadangan (Backups)

Konfigurasikan pencadangan otomatis dengan kebijakan retensi di panel admin:

3.2 Simpan File Unggahan ke Cloudflare R2

Menyimpan file unggahan, foto, dan cadangan di Cloudflare R2 menjaga penyimpanan VPS Anda tetap bersih dan ringan. TREK mendukung backend yang kompatibel dengan S3, dan Cloudflare R2 sangat cocok untuk ini.

  1. Buat bucket R2 bernama trek.
  2. Di bagian Account Details, temukan ID akun Anda:
  3. Klik Manage API Tokens:
  4. Klik Create Account API token dengan izin baca/tulis (read/write) untuk bucket tersebut:
  5. Klik Storage pada panel ADMINISTRATION:
  6. Klik tombol Add Backend dan isi endpoint, bucket, beserta kredensial Anda:
  7. Klik Apply, lalu klik tombol tautan Test. Anda harus melihat status "Connection OK":
  8. Alihkan semua kategori penyimpanan ke Cloudflare R2 dan klik Save changes:

3.3 Log Masuk Passkey

TREK mendukung passkey, autentikasi dua faktor (2FA), dan OIDC single sign-on. Untuk passkey, masukkan nama domain Anda dan asal yang diizinkan (allowed origins) di pengaturan, lalu klik Save:

Tanpa mengonfigurasi allowed origins, pendaftaran passkey akan gagal.

3.4 Google Maps API Key

Kunci Google Maps memperkaya pencarian tempat dengan peringkat, jam buka, dan foto. TREK secara otomatis menggunakan OpenStreetMap jika tidak ada kunci yang dimasukkan, hanya saja tanpa peringkat dan foto.

Ikuti tautan ini dan klik Get demo key untuk memintanya:

Tempel kunci di pengaturan and klik Test untuk mengonfirmasi koneksi:

3.5 Integrasi AI

Model AI digunakan untuk mengurai email konfirmasi pemesanan dan PDF menjadi data reservasi yang terstruktur.

Klik Addons di menu kiri dan aktifkan AI Parsing. Pilih "OpenAI" (atau penyedia lain yang kompatibel) dan isi detail penyedia:

3.6 Akses MCP

Di bawah Addons, aktifkan MCP:

3.7 Plugin

Plugin berikut sangat direkomendasikan dan layak untuk diaktifkan:

3.8 Buat Pengguna Harian Anda

Rencanakan perjalanan sebagai pengguna biasa, bukan sebagai admin. Buat pengguna reguler dan masuk dengannya:

Setelah masuk, tambahkan passkey atau siapkan 2FA untuk memperkuat keamanan akun:

Klik + Add a passkey, masukkan kata sandi saat ini, dan konfirmasi:

4. Menguji Deployment Anda: Mengimpor Data Perjalanan Historis

Cara yang baik untuk mempelajari TREK adalah dengan membangun riwayat perjalanan Anda.

4.1 Buat rencana perjalanan

Klik + New Trip dan atur Start Date dan End Date ke tanggal masa lalu dari perjalanan Anda:

Tambahkan gambar sampul (seret gambar ke dalam, atau tempel dari papan klip) dan klik Create New Trip:

4.2 Impor data pemesanan

Masukkan semua berkas penerbangan, kereta api, dan transportasi lainnya ke dalam:

Dengan mengaktifkan model AI, berkas PDF konfirmasi pemesanan akan diurai dan diekstrak menjadi reservasi terstruktur.

Tinjau hasil yang diurai dan klik Add untuk menyimpan detail pemesanan:

Jika pemesanan hanya ada di email, ekspor email tersebut sebagai PDF dan masukkan ke sistem — alur ekstraksi yang sama akan berlaku.

Tangkapan layar berikut menunjukkan bagaimana pemesanan ditampilkan:

Pada halaman Plan, semua akomodasi akan ditampilkan di peta:

Klik Atlas di bilah menu atas untuk melihat daftar (dan peta) dari setiap negara yang telah Anda kunjungi:

4.3 Tambahkan rekan perjalanan

Klik tombol Share:

Di bagian bawah dialog, tamu (guests) dapat ditambahkan:

4.4 Catat pengeluaran

Klik Add expense untuk menambahkan biaya selain pemesanan, seperti asuransi kesehatan, transportasi lokal, kartu SIM:

4.5 Segmen perjalanan

Fitur ini memerlukan plugin Trip Segment untuk diinstal.

Perjalanan panjang dapat dibagi menjadi segmen-segmen dengan rapi, di mana setiap bagian menampilkan pemesanan, tempat, dan biayanya sendiri:

4.6 Buat journey dan periksa atlas Anda

Kelompokkan perjalanan ke dalam Journey dan tulis cerita perjalanan untuk membagikan petualangan Anda dengan teman-teman:

5. Merancang Rencana Perjalanan dan Daftar Bawaan Kustom

Klik + New Trip, masukkan nama, dan atur tanggalnya:

Jika Anda belum menentukan tanggal pastinya, biarkan keduanya kosong. Kolom "jumlah hari" akan muncul (hingga 365 hari). Rencanakan dulu, jadwalkan belakangan.

5.1 Menambahkan tempat

Ini adalah langkah yang paling memakan waktu dalam perencanaan perjalanan apa pun, dan TREK memiliki beberapa cara untuk melakukannya:

1. Klik kanan pada peta untuk membuat tempat di lokasi persis tersebut — alamatnya akan di-reverse-geocode secara otomatis:

2. Klik + Add Place/Activity dan cari berdasarkan nama

3. Tempel URL Google Maps (maps.app.goo.gl/… atau maps.google.com/…) ke dalam kolom pencarian. TREK akan mengurai nama, alamat, dan koordinatnya:

4. Impor massal (Bulk import) — cara termudah dari semuanya. Jika Anda sudah memiliki daftar tempat "ingin dikunjungi" di Google Maps, ekspor sebagai .gpx (.kml dan .kmz juga didukung) dan klik Import file pada panel kanan untuk menarik semuanya sekaligus:

Tambahkan semua hal menarik terlebih dahulu, terlepas dari apakah itu sesuai dengan jadwal. Alokasikan tempat ke hari kunjungan nanti.

5.2 Rencana hari dan catatan

Rencana Hari (Day Plan) mengatur tempat ke dalam hari secara berurutan. Ini berupa daftar yang dapat diciutkan per hari, dan semuanya menggunakan metode seret-dan-lepas (drag-and-drop):

Detail yang membuatnya sangat berguna:

  • Transportasi antartempat: ikon bus di kiri atas bagian hari berfungsi untuk menambahkan moda transportasi (segmen kereta, bus, penerbangan dalam hari tersebut):
  • Catatan harian: ikon catatan di kiri bawah berfungsi untuk menyisipkan catatan ber-emoji — "berangkat pagi hari ini", "museum ini memerlukan reservasi":
  • Slot waktu: seret tempat dari panel kanan ke dalam hari, lalu tetapkan waktunya. Tempat dengan waktu yang ditentukan akan terhubung secara otomatis di peta:
  • Silakan merujuk ke halaman wiki Day Plans and Notes untuk Optimasi rute dan Cuaca.

5.3 Collections: Daftar tempat yang dapat digunakan kembali

Collections memungkinkan pengguna untuk menyimpan daftar tempat di luar rencana perjalanan mana pun. Ini dapat dibagikan dengan teman-teman, dan siap digunakan untuk perjalanan berikutnya. Tempat-tempat ini akan disalin ke dalam rencana perjalanan, sehingga mengedit entri dalam perjalanan tidak akan pernah mengubah koleksi Anda dan sebaliknya.

Klik Collections di bilah menu atas:

Klik + New list untuk membuatnya:

Klik + Add a place dan isi detailnya:

Catatan: pencarian di dalam dialog "Add a place" tampaknya tidak berfungsi, jadi Anda harus memasukkan detailnya secara manual.

Jika koordinat geografis dari tempat tersebut tersedia, tempat tersebut akan muncul di peta:

Untuk mengatur tempat dengan label, klik ikon kotak centang (tick-box):

Pilih tempat yang ingin dikelompokkan, lalu klik Assign label:

Klik Manage labels untuk membuat label terlebih dahulu:

Pilih label dan klik Assign label:

5.4 Biaya dan anggaran

Kita dapat menambahkan pengeluaran lain untuk perjalanan di halaman 'Costs'.

Pembayaran yang dilakukan oleh rekan perjalanan dapat ditambahkan dan dibagi di halaman yang sama.

Panel pelunasan menjalankan algoritma greedy-matching untuk menghitung jumlah transfer minimum mengenai siapa yang berutang kepada siapa, dan berapa nominalnya.

6. Memanfaatkan Model Context Protocol (MCP) untuk Perencanaan Perjalanan Berbasis AI

TREK memiliki server MCP (Model Context Protocol) bawaan, yang memungkinkan agen AI membaca dan menulis data perjalanan Anda secara langsung — mencakup lebih dari 150 alat dan 30 sumber daya terkait perjalanan, tempat, anggaran, daftar barang bawaan, pemesanan, dan kolaborasi.

6.1 Cloudflare Zero Trust

Karena TREK berjalan di belakang jaringan Cloudflare Zero Trust, Anda harus menambahkan domain ke dalam daftar inklusi split tunnel. Jika tidak, Anda akan mengalami masalah dengan otorisasi OAuth. Silakan merujuk ke isu GitHub ini: github issue.

Mengekspos Hermes Agent secara aman ke jaringan privat menggunakan Cloudflare Zero Trust dan terowongan WARP

Panduan terkait

Cara Mengekspos Hermes Agent secara Privat dengan WARP

Pelajari cara mengekspos dan mengakses Hermes Agent Anda secara global dengan aman menggunakan Cloudflare WARP dan Zero Trust tanpa membuka port firewall masuk.

8 MENIT BACA

6.2 Claude Desktop

Klik + New Client untuk membuat klien agen AI:

Pilih tab Claude Desktop dan klik Register Client:

Sepasang ID klien dan rahasia klien (client secret) akan ditampilkan. Salin keduanya di tempat yang aman. Kemudian klik Client Configuration untuk menampilkan konfigurasi MCP:

Di Claude Desktop, klik Edit Config untuk membuka berkas konfigurasi server MCP lokal:

Tempel konfigurasi TREK, ganti placeholder dengan kredensial Anda:

  "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>\"}"
      ]
    }
  },

Mulai ulang Claude Desktop, dan server TREK akan muncul sebagai terhubung di bawah Local MCP servers:

Sekarang jalankan sebuah perintah (prompt):

Mari kita tambahkan pengeluaran dalam bahasa alami:

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.

Saat memeriksa halaman Costs, pengeluaran dibuat dengan status "No one paid yet" (Belum ada yang membayar), karena tidak ada pembayar yang disebutkan:

Menambahkan ke daftar bawaan bekerja dengan cara yang sama:

Segarkan halaman Packing List dan ketiga barang tersebut sudah ada di sana:

6.3 Gemini CLI (Pendaftaran Dinamis)

Gemini CLI mendukung pendaftaran dinamis, yaitu tidak memerlukan klien yang dibuat sebelumnya. Tambahkan ini ke .gemini/settings.json:

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

Jalankan gemini di terminal dan klik Approve saat permintaan otorisasi muncul:

Kemudian mulai dengan perintah sederhana:

6.4 Kimi CLI (Pendaftaran Dinamis)

Pendekatan yang sama — tambahkan ke mcp.json di folder /Users/<user>/.kimi/ :

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

Jalankan kimi mcp auth trek di terminal dan klik Approve:

Setelah diotorisasi, alat yang tersedia akan dicantumkan:

7. Pengalaman Seluler

TREK adalah PWA (progressive web app) di perangkat seluler. Service worker akan menyimpan templat peta dan data API dalam tembolok (cache), sehingga rencana perjalanan Anda tetap dapat dibaca secara offline. Namun, notifikasi push mungkin mengalami beberapa keterlambatan (latency) dibandingkan dengan aplikasi asli.

Kesimpulan

Menghubungkan agen AI melalui MCP menghemat banyak pekerjaan membosankan dalam memasukkan pemesanan penerbangan dan akomodasi. Selain itu, agen dapat menyarankan tempat-tempat menarik berdasarkan tanggal perjalanan dan musim Anda. Satu percakapan dengan agen AI dapat mencakup seluruh rangkaian proses, mulai dari riset dan pembuatan rencana perjalanan hingga pelacakan anggaran dan pengepakan barang.

Ada beberapa kendala teknis kecil. Misalnya, saat mengimpor pemesanan dari berkas PDF, mata uang akan default ke mata uang dasar perjalanan, bukan mata uang yang sebenarnya dibayarkan. Selain itu, saat membuat daftar baru di Collections, gambar sampul apa pun yang ditambahkan selama pembuatan akan hilang saat disimpan, meskipun dapat ditambahkan kembali secara manual saat mengedit.

Ada sedikit hambatan teknis, karena Anda perlu meng-host aplikasi ini di server Anda sendiri. TREK terutama dirancang untuk orang yang sering begegian dan memiliki ekspektasi tinggi tentang bagaimana mereka mengatur data perjalanan mereka. Kami menyarankan untuk mencoba demo resmi di demo.liketrek.com sebelum mempertimbangkan self-hosting.

Referensi:

Artikel Terkait