---
title: "Aloje os seus itinerários de viagem com TREK e Docker"
description: "Aprenda a implantar o TREK usando Docker, a protegê-lo com Cloudflare R2 e Caddy, e a usar agentes de IA via MCP para planejar todas as viagens sem esforço."
canonical_url: "https://techvoyage.dev/pt/article/self-hosted-travel-planner-trek"
last_updated: "2026-09-03"
---

A parte mais cansativa do planejamento de uma viagem é que os PDFs de reservas de voo, as confirmações de hotéis, as conversas com os companheiros de viagem e as listas de locais a visitar ficam dispersos em múltiplos lugares. Quando chega a altura de calcular as despesas totais e dividir as contas, é necessário um esforço tremendo para analisar todo esse histórico de dados.

O TREK é um planejador de viagens de código aberto que pode ser autohospedado, integrando o seu itinerário, as suas reservas, o seu orçamento e as listas de bagagem num único local. O seu servidor MCP integrado permite que agentes de IA (como o Claude Desktop) manipulem diretamente os dados das suas viagens.

Este guia irá acompanhá-lo passo a passo, desde a implantação até à gestão completa de uma viagem real do início ao fim.

### 1. Como implantar o planejador de viagens TREK com Docker

#### Instalar o Docker num VPS Ubuntu

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

#### Gerar a chave de criptografia

O TREK utiliza uma chave para criptografar dados confidenciais. Utilize o comando seguinte ou esta [ferramenta online](/pt/tools/secret-key-hex) para gerar a sua chave de criptografia:

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

Guarde-a num local seguro; perdê-la significa perder o acesso aos dados criptografados.

#### Iniciar o contêiner

```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 deve estar definido corretamente** — o fluxo de descoberta OAuth do servidor MCP depende disso. Defina o seu endereço HTTPS público final desde o início.

A primeira execução demorará um pouco para descarregar a imagem:

![Logs de pull e run do Docker para o TREK](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-docker-pull-image.webp)Verifique se está em execução:

```bash
docker ps
```

![Verificando o status do container em execução via docker ps](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-docker-ps-status.webp)### 2. Configurar o encaminhamento de domínio e SSL com o proxy reverso Caddy

O protocolo HTTPS é obrigatório para as chaves de acesso (passkeys) e OAuth para MCP. O nome de domínio é alojado na Cloudflare, que oferece um certificado SSL gratuito e proteção DDoS.

O Caddy é configurado como o servidor de proxy reverso seguro apontando para a porta 3000. Eis um exemplo de Caddyfile:

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

### 3. Configuração inicial e criação do administrador seguro

Existem duas formas de criar a conta de administrador:

- **ADMIN_EMAIL e ADMIN_PASSWORD** são definidos como variáveis de ambiente; esses valores são usados diretamente.
- **O TREK cria o e-mail admin@trek.local, o nome de utilizador admin e uma senha gerada aleatoriamente que é impressa nos logs do contêiner. Execute docker logs trek para recuperá-la.**

Se não conseguir encontrar a senha nos logs, redefina-a com o comando:

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

Será solicitado que altere a senha no primeiro login.

![Prompt de login inicial e redefinição de senha do administrador](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-initial-login-password-prompt.webp)Clique em **Admin** e atualize o endereço de e-mail:![Configurando e-mail personalizado nas configurações de administrador do TREK](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-admin-email-update-panel.webp)

#### 3.1 Cópias de segurança (Backups)

Configure as cópias de segurança automáticas com uma política de retenção no painel de administração:
![Configurando agendamentos de backup automáticos e regras de retenção](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-admin-backup-retention-policy.webp)

#### 3.2 Armazenar ficheiros carregados no Cloudflare R2

Armazenar ficheiros carregados, fotos e backups no Cloudflare R2 mantém o disco do VPS limpo e leve. O TREK suporta backends compatíveis com S3, e o Cloudflare R2 encaixa-se perfeitamente nisto.

1. Crie um bucket R2 chamado `trek`.
2. Na secção **Account Details**, encontre o ID da sua conta:
  ![Localizando o ID da conta Cloudflare no portal](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/cloudflare-r2-account-details-id.webp)
3. Clique em **Manage API Tokens**:
  ![Tela de gerenciamento de tokens de API no portal Cloudflare](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/cloudflare-r2-manage-api-tokens-button.webp)
4. Clique em **Create Account API token** com permissões de leitura/escrita para o bucket:
  ![Criando token de acesso R2 com permissões de leitura e escrita](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/cloudflare-r2-create-token-permissions.webp)
5. Clique em **Storage** no painel de **ADMINISTRATION**:
  ![Navegando para as configurações de armazenamento no painel de controle do TREK](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-administration-storage-menu.webp)
6. Clique no botão **Add Backend** e preencha o endpoint, o bucket e as credenciais:
  ![Configurando o backend de armazenamento Cloudflare R2 compatível com S3](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-add-storage-backend-credentials.webp)
7. Clique em **Apply** e depois no botão **Test**. Deverá ver a mensagem "Connection OK":
  ![Teste de conexão de armazenamento bem-sucedido exibindo Connection OK](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-test-storage-backend-connection-ok.webp)
8. Altere todas as categorias de armazenamento para Cloudflare R2 e clique em **Save changes**:
  ![Roteando todas as categorias de armazenamento de arquivos para o Cloudflare R2](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-switch-storage-categories-r2.webp)

#### 3.3 Login com chaves de acesso (Passkeys)

O TREK suporta chaves de acesso, autenticação de dois fatores (2FA) e autenticação única (SSO) via OIDC. Para chaves de acesso, introduza o seu nome de domínio e as origens permitidas (allowed origins) nas definições e clique em **Save**:

![Registrando origens permitidas para autenticação segura com Passkey](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-passkey-allowed-origins-settings.webp)Sem configurar as **allowed origins**, o registo da chave de acesso falhará.

#### 3.4 Chave de API do Google Maps

Uma chave do Google Maps enriquece a pesquisa de locais com classificações, horários de funcionamento e fotos. O TREK reverte automaticamente para o OpenStreetMap caso não seja inserida nenhuma chave, contudo as classificações e fotos não estarão disponíveis.

Siga este [link](https://mapsplatform.google.com/maps-demo-key/) e clique em **Get demo key** para solicitar uma:                                                  ![Solicitando chave de API do Google Maps Platform](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/google-maps-get-demo-api-key.webp)

Cole a chave nas definições e clique em **Test** para confirmar a ligação:
![Verificando a conectividade da chave de API do Google Maps nas configurações](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-google-maps-key-test-connection.webp)

#### 3.5 Integração de IA

O modelo de IA é utilizado para recuperar e estruturar e-mails de confirmação e PDFs de reserva em dados de reserva estruturados.

Clique em **Addons** no menu esquerdo e ative **AI Parsing**. Selecione "OpenAI" (ou outro fornecedor compatível) e preencha as informações do mesmo:

![Ativando o addon de parsing de IA com integração com a OpenAI](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-addons-enable-ai-parsing-openai.webp)#### 3.6 Acesso MCP

Sob **Addons**, ative o **MCP**:

![Ativando o addon do servidor MCP do Model Context Protocol](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-addons-enable-mcp.webp)#### 3.7 Plugins

Os seguintes plugins são recomendados e vale a pena ativá-los:

![Lista de plugins e addons recomendados ativos](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-recommended-addons-plugins-activation.webp)#### 3.8 Criar o seu utilizador para o dia a dia

Planeie as viagens como um utilizador normal, não como administrador. Crie um utilizador regular e inicie sessão com ele:

![Criando uma conta de usuário comum no painel do TREK](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-create-regular-user-form.webp)Depois de iniciar sessão, adicione uma chave de acesso ou configure a autenticação de dois fatores (2FA) para reforçar a segurança da conta:

![Configurando as configurações de segurança do usuário com Passkeys e 2FA](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-user-security-passkey-2fa-setup.webp)Clique em **+ Add a passkey**, introduza a senha atual e confirme:

![Confirmando a senha para registrar um novo Passkey físico](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-add-passkey-confirm-password.webp)### 4. Testar a implantação: importar dados de viagens passadas

Uma excelente forma de explorar o TREK é registar o seu histórico de viagens.

#### 4.1 Criar a viagem

Clique em **+ New Trip** e configure a data de início (**Start Date**) e data de fim (**End Date**) com as datas passadas do seu passeio:

![Criando uma nova viagem com intervalos de datas personalizados](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-create-new-trip-details.webp)Adicione uma foto de capa (arraste uma ou cole do seu área de transferência) e clique em **Create New Trip**:

![Configurando uma imagem de capa de viagem de alta qualidade](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-trip-cover-image-upload.webp)#### 4.2 Importar as reservas

Arraste e solte todos os ficheiros de voos, comboios e outros meios de transporte:

![Área de arrastar e soltar para importar PDFs de viagem e reservas](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-import-travel-booking-files.webp)![Janela de processamento de reserva enviada exibindo a extração](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-import-booking-pdf-processing-status.webp)Com o modelo de IA ativado, os PDFs de confirmação de reservas são analisados e estruturados automaticamente.

Reveja o resultado do processamento e clique em **Add** para registar os detalhes da reserva:

![Revisando os detalhes de reserva estruturados extraídos pela IA](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-review-parsed-booking-details.webp)Se uma reserva estiver apenas num e-mail, exporte o e-mail como PDF e carregue-o — aplica-se o mesmo fluxo de extração por IA.

As capturas de ecrã seguintes mostram como as reservas são apresentadas:

![Exibição de linha do tempo abrangente das reservas de viagem](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-trip-bookings-timeline-view.webp)![Visualização detalhada de uma reserva de transporte confirmada](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-booking-confirmation-details.webp)

Na página **Plan**, todos os alojamentos serão indicados no mapa:

![Mapa interativo plotando todas as acomodações de hotel](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-plan-accommodations-map-display.webp)Clique em **Atlas** na barra de menu superior para aceder à lista (e mapa) de todos os países que já visitou:

![Visão geral do histórico de viagens no rastreador pessoal do Atlas](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-atlas-countries-visited-summary.webp)#### 4.3 Adicionar companheiros de viagem

Clique no botão **Share**:

![Abrindo o diálogo de compartilhamento de viagem no TREK](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-trip-share-options-button.webp)Na parte inferior de la janela, é possível adicionar convidados:

![Adicionando companheiros de viagem e convidados personalizados](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-trip-add-companions-guests.webp)#### 4.4 Registar as despesas

Clique em **Add expense** para registar despesas adicionais que não sejam reservas, tais como seguro de saúde, transporte local ou cartões SIM:

![Inserindo dados detalhados de gastos no formulário de despesas](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-add-custom-expense-form.webp)![Divisão de despesas e livro de rastreamento de custos](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-expenses-list-billing-split.webp)#### 4.5 Segmentos da viagem

Esta funcionalidade requer que o plugin Trip Segment esteja instalado.

As viagens longas são divididas de forma elegante em segmentos, cada etapa exibindo as suas próprias reservas, pontos turísticos e custos:

![Desmembrando um itinerário complexo em segmentos de viagem](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-trip-segments-overview-display.webp)![Segmento de viagem ativo exibindo locais e programações](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-trip-segment-itinerary-details.webp)![Mapeando diferentes trechos da viagem na linha do tempo](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-trip-segments-interactive-map.webp)#### 4.6 Criar um diário de viagem (Journey) e consultar o seu atlas

Agrupe as suas viagens num **Journey** (diário de rota) e escreva relatos para partilhar as aventuras com os seus amigos:

![Consolidando várias viagens em uma jornada visual (Journey)](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-create-new-journey-group.webp)![Escrevendo histórias visuais no painel de jornada](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-journey-timeline-story-writing.webp)![Coleção de mídias e grade de galeria dentro de uma jornada](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-journey-gallery-media-grid.webp)![Gerando links públicos de compartilhamento para jornadas colaborativas](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-journey-public-share-link.webp)### 5. Desenhar itinerários personalizados e listas de bagagem

Clique em **+ New Trip**, introduza um nome e configure as datas:

![Caixa de diálogo inicial para criar uma viagem sem data](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-planning-new-trip-setup.webp)**Se ainda não definiu as datas do seu roteiro, deixe ambos os campos em branco.** Irá surgir um campo indicando o "número de dias" (até 365). Planeie primeiro, defina as datas mais tarde.

#### 5.1 Adicionar locais

Este costuma ser o passo mais moroso de qualquer planeamento de viagem, e o TREK tem várias formas de acelerá-lo:

![Métodos multicanais para adicionar novos locais aos itinerários](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-add-places-methods-overview.webp)**1. Clique com o botão direito no mapa** para criar um local nessa posição exata (o endereço é geocodificado de forma reversa automaticamente):

![Clicando com o botão direito no mapa para fixar localizações](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-right-click-map-location.webp)![Geocodificação reversa automática das coordenadas selecionadas no mapa](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-right-click-reverse-geocode-address.webp)**2. Clique em + Add Place/Activity** e pesquise por nome:

![Buscando locais do mundo real usando entradas de texto](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-search-place-by-name-input.webp)![Exibindo resultados de busca de locais com sobreposição de endereços](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-select-place-search-results-list.webp)![Cartão de informações abrangente do local com avaliações e notas](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-place-details-rich-info-card.webp)**3. Cole um URL do Google Maps** (`maps.app.goo.gl/…` ou `maps.google.com/…`) no campo de pesquisa. O TREK extrairá o nome, o endereço e as coordenadas automaticamente:

![Extraindo localizações diretamente de links de compartilhamento copiados do Google Maps](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-paste-google-maps-share-link.webp)![Extração de coordenadas bem-sucedida a partir de URL do Maps](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-google-maps-parsed-location.webp)**4. Importação em lote** — o caminho mais simples. Se já tem uma lista de locais pendentes no Google Maps, exporte-a como `.gpx` (os formatos `.kml` e `.kmz` também funcionam) e clique em **Import file** no painel direito para carregar tudo de uma só vez:

![Realizando importações em lote de locais usando arquivos GPX ou KML](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-bulk-import-places-gpx-file.webp)Adicione primeiro todos os pontos de interesse, independentemente de caberem ou não na agenda. Pode distribuí-los por dias específicos mais tarde.

#### 5.2 Planos diários e notas

O plano diário organiza os locais por dias sequenciais. É uma lista desdobrável por cada dia, e tudo funciona com o recurso de arrastar e soltar:

![Personalizando rotas diárias com ações de arrastar e soltar](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-day-plan-drag-drop-ordering.webp)Os detalhes essenciais que fazem a diferença:

- **Transporte entre paragens**: o ícone de autocarro no canto superior esquerdo de um dia adiciona transportes intermédios (comboios, autocarros ou voos dentro do mesmo dia):
![Registrando o transporte de deslocamento entre os segmentos do dia](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-day-plan-commuting-transport-button.webp)
- **Notas do diárias**: o ícone de notas no canto inferior esquerdo adiciona notas identificadas com emojis — "arranque matinal hoje", "este museu necessita de reserva prévia":
![Adicionando notas personalizadas com ícones visíveis aos dias](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-day-plan-icon-tagged-notes-button.webp)
- **Horários definidos**: arraste um local do painel direito para um dia e atribua-lhe uma hora. Os locais com horário definido são ligados automaticamente no mapa:
![Rotas de trânsito calculadas automaticamente entre locais com horário definido](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-day-plan-timed-places-routing.webp)
- Consulte a [página wiki de Planos Diários e Notas](https://github.com/liketrek/TREK/wiki/Day-Plans-and-Notes) para mais informações sobre **Otimização de rotas** e o **Clima**.

#### 5.3 Coleções: listas de locais reutilizáveis

As Coleções permitem aos utilizadores guardar listas de locais independentemente de qualquer viagem. Podem ser partilhadas com amigos e estarem preparadas para a próxima jornada. Os locais são **copiados** para as viagens, pelo que a edição de um ponto num itinerário nunca altera a sua coleção original e vice-versa.

Clique em **Collections** na barra de menu superior:

![Acessando coleções personalizadas do usuário para locais salvos](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-dashboard-view.webp)Clique em **+ New list** para criar uma nova:

![Criando listas personalizadas nas coleções do usuário](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-create-new-list.webp)Clique em **+ Add a place** e preencha os dados:

![Entrada manual de formulário para preencher listas de coleções personalizadas](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-add-place-manually-form.webp)**Nota:** a barra de pesquisa dentro da janela "Add a place" parece não funcionar, pelo que terá de inserir os detalhes manualmente.

Si as coordenadas geográficas dos locais estiverem disponíveis, estes aparecerão no mapa:

![Visualizando locais das coleções personalizadas em um mapa interativo](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-map-places-display.webp)Para organizar os locais com etiquetas (labels), clique no ícone da **caixa de seleção**:

![Modo de seleção para etiquetagem em lote de locais salvos](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-select-places-tickbox.webp)Selecione os locais que pretende agrupar e clique em **Assign label**:

![Atribuindo etiquetas descritivas aos locais selecionados](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-group-assign-label.webp)Clique em **Manage labels** para criar as etiquetas de antemão:

![Criação e gerenciamento de etiquetas personalizadas](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-manage-custom-labels.webp)Selecione uma etiqueta e clique em **Assign label**:

![Aplicando etiquetas personalizadas a grupos de locais](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-collections-confirm-label-selection.webp)#### 5.4 Custos e orçamento

Podemos registar outras despesas para a viagem na página 'Costs'.

![Tabela abrangente de despesas e livro de acerto de contas](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-costs-budget-overall-expenses-list.webp)Os pagamentos efetuados por companheiros de viagem podem ser adicionados e divididos nessa mesma página.

O painel de acertos executa um algoritmo voraz (greedy) para calcular o **número mínimo de transferências** necessárias para liquidar as despesas entre os membros.

### 6. Aproveitar o Model Context Protocol (MCP) para Planeamento de Viagens com IA

O TREK possui um **servidor MCP (Model Context Protocol) integrado**, o que permite que agentes de IA leiam e editem diretamente os seus dados de viagem — com mais de 150 ferramentas e 30 recursos para itinerários, pontos de interesse, orçamentos, bagagem, reservas e colaboração.

#### 6.1 Cloudflare Zero Trust

Devido ao facto de o TREK correr atrás de uma rede [Cloudflare Zero Trust](/article/exposing-hermes-agent-to-private-network-using-cloudflare-warp), terá de adicionar o seu domínio à lista de inclusão do Split Tunnels. Caso contrário, terá problemas com a autorização OAuth. Consulte este ticket do GitHub: [issue do github](https://github.com/liketrek/TREK/issues/1463).

<article-card description="Aprenda a expor e acessar globalmente seu Hermes Agent de forma segura com o Cloudflare WARP e o Zero Trust, sem abrir portas de entrada em seu firewall." image="https://inimages.techvoyage.dev/articles/Exposing%20Hermes%20Agent%20to%20Private%20Network%20Using%20Cloudflare%20WARP/PT-Exposing-Hermes-Agent-to-Private-Network-Using-Cloudflare-WARP.webp" image-alt="Exposição segura do Hermes Agent em rede privada usando Cloudflare Zero Trust e túnel WARP" label="Guia relacionado" min-read="9" title="Expor o Hermes Agent em rede privada com Cloudflare WARP" to="/article/exposing-hermes-agent-to-private-network-using-cloudflare-warp">



</article-card>

![Adicionando domínios personalizados ao Split Tunnels do Cloudflare Warp](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/cloudflare-zero-trust-split-tunnels-domain.webp)#### 6.2 Claude Desktop

Clique em **+ New Client** para criar um novo cliente de agente de IA:
![Registrando um novo token de cliente personalizado nas configurações](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-register-new-mcp-client.webp)

Selecione o separador **Claude Desktop** e clique em **Register Client**:

![Gerando credenciais de cliente para o Claude Desktop](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-mcp-claude-desktop-client-credentials.webp)É apresentado um ID de cliente e segredo de cliente. Guarde-os num local seguro. De seguida, clique em **Client Configuration** para mostrar as definições do MCP:

![Obtendo o bloco de configuração pré-formatado do servidor MCP](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-mcp-client-configuration-block.webp)No Claude Desktop, clique em **Edit Config** para abrir o ficheiro local de configuração dos servidores MCP:

![Editando o arquivo JSON de configuração local do MCP do Claude Desktop](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/claude-desktop-mcp-config-json.webp)Cole a configuração do TREK, substituindo os marcadores de posição pelas suas credenciais:

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

Reinicie o Claude Desktop, e o servidor do TREK passará a ser exibido como ligado em **Local MCP servers**:

![Verificando o status de conexão ativa do TREK dentro da interface do Claude](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/claude-desktop-mcp-trek-server-connected.webp)Agora envie uma instrução (prompt):

![Instruindo o Claude em linguagem natural para manipular dados de viagem](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/claude-desktop-mcp-natural-language-prompt.webp)Vamos adicionar uma despesa usando linguagem natural:

```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 utilizando ferramentas para registrar uma despesa automaticamente](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/claude-desktop-mcp-add-expense-response.webp)Ao verificar a página **Costs**, a despesa surge criada com a indicação "Ninguém pagou ainda", uma vez que nenhum pagador foi mencionado na ordem:

![Confirmando a despesa de IA recém-analisada na visualização de custos](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-costs-page-mcp-parsed-expense.webp)Adicionar elementos à lista de bagagem funciona exatamente da mesma maneira:

![Claude adicionando itens de bagagem usando instruções em linguagem natural](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/claude-desktop-mcp-add-packing-items.webp)Atualize a página **Packing List** e verá os três elementos adicionados:

![Confirmando os itens de bagagem recém-analisados na página de lista de bagagem](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/trek-packing-list-mcp-parsed-items.webp)#### 6.3 Gemini CLI (registo dinâmico)

A Gemini CLI suporta **registo dinâmico**, pelo que não necessita de um cliente pré-criado. Adicione isto a `.gemini/settings.json`:

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

Execute `gemini` no terminal e clique em **Approve** quando a janela de autorização surgir:
![Aprovando acesso OAuth para o servidor MCP do TREK](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/mcp-client-oauth-authorization-prompt.webp)

De seguida, comece com uma instrução simples:

![Instruindo a CLI do Gemini para buscar itinerários de viagem](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/gemini-cli-mcp-prompt-itinerary.webp)![CLI do Gemini exibindo com sucesso informações estruturadas de viagem](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/gemini-cli-mcp-display-itinerary.webp)#### 6.4 Kimi CLI (registo dinâmico)

A mesma abordagem — adicione ao ficheiro `mcp.json` na pasta `/Users/<user>/.kimi/`:

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

Execute `kimi mcp auth trek` no terminal e clique em **Approve**:
![Aprovando acesso OAuth para o servidor MCP do TREK](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/mcp-client-oauth-authorization-prompt.webp)

Uma vez autorizado, as ferramentas disponíveis são listadas:

![CLI do Kimi exibindo as ferramentas disponíveis após autorização bem-sucedida](https://inimages.techvoyage.dev/articles/Self%20hosted%20travel%20planner%20TREK/kimi-cli-mcp-authorized-tools-list.webp)### 7. Experiência móvel

O TREK é uma PWA (progressive web app) em dispositivos móveis. Um service worker guarda em cache os mapas e os dados das APIs, para que o seu itinerário continue legível mesmo sem ligação à Internet. No entanto, as notificações push podem apresentar alguma latência em comparação com uma aplicação nativa.

### Considerações finais

Ligar agentes de IA através de MCP poupa grande parte do cansativo trabalho de inserção manual de reservas de voos e hotéis. Além disso, os agentes podem sugerir pontos de interesse com base nas datas e na época do ano em que viaja. Uma única conversa com um agente de IA pode cobrir todo o processo, desde a pesquisa e criação do itinerario até ao controlo de orçamento e à preparação da bagagem.

Há alguns pequenos pormenores técnicos por ajustar. Por exemplo, ao importar reservas a partir de ficheiros PDF, a moeda assume por omissão a moeda base da viagem em vez da moeda efetivamente paga. Além disso, ao criar uma nova lista em Coleções, qualquer imagem de capa associada durante a criação desaparece ao guardar, embora possa ser readicionada manualmente na edição posterior.

Existe uma ligeira barreira técnica, pois necessita de alojar o sistema no seu próprio servidor. O TREK foi concebido principalmente para pessoas que viajam com frequência e têm elevadas expectativas sobre a organização dos seus dados de viagem. Sugerimos que experimente a demonstração oficial em [demo.liketrek.com](https://demo.liketrek.com/) antes de equacionar o autohospedamento.

### Referências:

- [Início rápido do TREK](https://github.com/liketrek/TREK/wiki/Quick-Start)
- [Resolução de problemas do TREK](https://github.com/liketrek/TREK/wiki/Troubleshooting)
- [Escopos MCP do TREK](https://github.com/liketrek/TREK/wiki/MCP-Scopes)
