TREK is a travel planner on a Seed of your own, for you alone or for your whole travel group. You lay out each day of the trip on a map, import booking confirmations for flights, trains and accommodation, and split expenses in several currencies between travelers. There are also packing lists, to-dos, a group chat and polls. When one member changes something, everyone else sees it right away. On your phone, you can install TREK as an app straight from the browser. TREK is open source and free of license fees.
After the first boot
On first boot, the Seed installs Docker and starts TREK together with Caddy, which accepts HTTPS connections and passes them on to TREK. TREK is reachable 2 to 4 minutes later. You then find the address in /root/ready.txt and your login details in /root/trek-credentials.txt. If /root/failed.txt appears instead, it gives the reason. The complete log is in /root/trek-install.log. As long as neither file exists, the setup is still running. You read these files over SSH or in the Seed's console.
Sign in with the email address from ADMIN_EMAIL and the password from /root/trek-credentials.txt. On your first sign-in you set a password of your own. Under Settings > Account you can later change your email address and turn on two-factor sign-in.
After the installation, registration is closed. Under Admin > Users you create an invite link and pass it on to your travel companions. Anyone with an account can be added to a trip by email address or username. If everyone with the address should be able to register themselves, turn on Password Registration under Admin > Settings. For notifications and forgotten passwords, TREK needs a mail server. Enter its details under Admin > Notifications and check them with a test email.
On your phone, you install TREK as an app from the browser, on iOS through Share > Add to Home Screen and on Android through Menu > Install app. This needs a valid certificate, which the Seed gets from Let's Encrypt with LETSENCRYPT=on. Since all travel companions store the address of TREK on their devices, we recommend using your own domain from the start. Once your domain's A record points to the Seed's IPv4 address, switch TREK over with seed-tls domain trips.example.com via SSH. From then on, invite links use the domain, and the previous address redirects to it. Do this before anyone creates passkeys, because a passkey only works for the address it was created on.
In /opt/trek, compose.yaml defines the containers trek and caddy. The .env file holds the images with their versions, the address of TREK, the time zone and the initial admin password, which TREK reads only on its first start. /opt/trek/data holds the database and the key TREK uses to encrypt stored credentials such as the SMTP password. /opt/trek/uploads holds uploaded files and photos. Include both directories in your backups. Under Admin > Backup you create a ZIP with the database, uploads and key, or let Auto-Backup create one daily. These backups are stored in /opt/trek/data/backups on the same Seed, and each one contains all uploads again. So download them or choose an external target under Admin > Storage. Since the ZIP contains the key, keep it as safe as your credentials.
Before an update, read the TREK release notes and take a snapshot of the Seed. Then replace the entire value of TREK_IMAGE in .env, including the @sha256 part, with the new version, for example docker.io/mauriceboe/trek:5.1.1, and run docker compose pull followed by docker compose up -d in /opt/trek. CADDY_IMAGE updates Caddy the same way. Docker itself updates with apt update && apt upgrade. Both containers start automatically when the Seed reboots.
For place and address search, route calculation and place details, TREK uses its own services, run by the TREK project on servers sponsored by dataforest. Your Seed registers with them on its first search, so there is nothing to set up. TREK asks you as admin once whether it may share the place details your members enter, such as opening hours or phone numbers, with the TREK project. Without your consent, TREK sends none of them, and you can change your choice at any time under Share place details in Admin > Settings.
Suitable models
Entry
The entry point for low CPU load
Shared vCPUsStandard
All-rounder for variable production load
Shared vCPUsPerformance
Exclusive compute for sustained load
Dedicated vCPUsFull performance under sustained loadShow all 15 suitable models
Entry
| Model | CPU | RAM | Storage | Network | Price | Configure |
|---|---|---|---|---|---|---|
| S | 1 vCPU | 2 GB | 20 GB | 10 TB traffic | 0,005848 € / Hour | |
| M | 2 vCPUs | 4 GB | 40 GB | 10 TB traffic | 0,011694 € / Hour | |
| L | 4 vCPUs | 8 GB | 80 GB | 10 TB traffic | 0,023389 € / Hour | |
| XL | 8 vCPUs | 16 GB | 160 GB | 10 TB traffic | 0,038312 € / Hour |
Standard
| Model | CPU | RAM | Storage | Network | Price | Configure |
|---|---|---|---|---|---|---|
| XS | 1 vCPU | 4 GB | 40 GB | 20 TB traffic | 0,014303 € / Hour | |
| S | 2 vCPUs | 8 GB | 80 GB | 20 TB traffic | 0,024579 € / Hour | |
| M | 4 vCPUs | 16 GB | 160 GB | 20 TB traffic | 0,049158 € / Hour | |
| L | 8 vCPUs | 24 GB | 240 GB | 20 TB traffic | 0,093740 € / Hour | |
| XL | 10 vCPUs | 32 GB | 360 GB | 20 TB traffic | 0,120608 € / Hour | |
| XXL | 16 vCPUs | 64 GB | 500 GB | 20 TB traffic | 0,188623 € / Hour |
Performance
| Model | CPU | RAM | Storage | Network | Price | Configure |
|---|---|---|---|---|---|---|
| S | 2 vCPUs | 16 GB | 80 GB | 20 TB traffic | 0,070561 € / Hour | |
| M | 4 vCPUs | 32 GB | 160 GB | 20 TB traffic | 0,141122 € / Hour | |
| L | 8 vCPUs | 64 GB | 240 GB | 20 TB traffic | 0,277666 € / Hour | |
| XL | 16 vCPUs | 128 GB | 360 GB | 20 TB traffic | 0,548467 € / Hour | |
| XXL | 32 vCPUs | 192 GB | 500 GB | 20 TB traffic | 1,011118 € / Hour |
Create it via the Public API
A single call creates this Seed. Replace the placeholders starting with $ with your own values, such as your API token and the IDs from your account. Go to the Public API
curl -X POST "https://api.dataforest.net/api/v1/public/seeds" \
-H "Authorization: Bearer $TOKEN" \
-H "Content-Type: application/json" \
-d '{
"plan": "lines/standard/models/standard-c2-m4-s80",
"location": "fra01",
"source": {
"type": "app",
"ref": "apps/trek/versions/trek-v5.1.0"
},
"project_id": "$PROJECT_ID",
"name": "trek"
}'