selfhost.directory

The index of self-hostable projects — ranked, categorized and served with live updates.
Own your data and stop giving it to big tech.

surmai logo

Self-host surmai

v0.5.6

Personal travel organizer with collaborative planning

BetaOpen SourceMIT
Updated9 hours ago
LanguageTypescript
Setup difficultyModerate
MobilePWA
ThemeDark mode
Stars
287
Port
8080 (HTTP server)
Docker
ghcr.io/rohitkumbhar/surmai
Install with Docker Compose
Dark mode home screenLight mode OAuth2 login screenDark mode user profile screenLight mode attachments screenMobile organization screenMobile preferences screenMobile transportation screen

What is surmai?

Surmai is a personal and family travel organizer that helps users plan trips collaboratively, access travel data offline, and keep their data private. It runs as a Progressive Web App installable on mobile devices. The application uses PocketBase as its backend platform with SQLite storage and React with Mantine for the frontend. It supports OAuth2/OIDC authentication with providers like Google, Apple, Microsoft, and custom OIDC providers such as Authentik and Keycloak. Features include collaborative trip planning, offline access via data sync, calendar integration through iCal export, flight information from adsbdb.com and FlightAware AeroAPI, expense tracking, import/export functionality, and multi-language support via Weblate. Self-hosting uses Docker Compose with the image from ghcr.io/rohitkumbhar/surmai, with optional Litestream backup replication to S3-compatible storage. The project is in alpha stage and under active development.

Should you self-host surmai?

surmai scores 44/100 on selfhost.directory (how scoring works) and ranks #6 of 8 in Travel. It has 287 GitHub stars.

It shipped 14 stable releases in the past year. The latest, v0.5.6, came out on 1 October 2026. New versions land roughly every 2 weeks.

Setup is moderate: expect some configuration beyond a single command. An official Docker image is available. It is MIT-licensed and written mostly in Typescript.

Its closest alternative on selfhost.directory is TREK (76/100, 15 179 stars). It scores higher overall, so compare the two before you pick. See surmai vs TREK side by side.

Features

  • Calendar integration (iCal export)
  • Collaborative trip planning
  • Email notifications
  • Expense Tracking
  • Flight information integration
  • Import/Export trips
  • Multi-language Support
  • OAuth2/OIDC Authentication
  • Offline Access
  • Optional Litestream backup to S3Optional, disabled by default
  • Privacy-focused
  • Progressive Web App (PWA)
  • User Registration Control

surmai README

How to install surmai

Install surmai with Docker Compose

Docker and Docker Compose
Environment variables
SURMAI_ADMIN_EMAIL, SURMAI_ADMIN_PASSWORD, PB_DATA_DIRECTORY, plus optional Litestream backup vars

volumes: surmai_data:

services: surmai_server: container_name: surmai_server # latest images point to released versions # For the yet unreleased updates, use the main tag i.e. # image: ghcr.io/rohitkumbhar/surmai:main image: ghcr.io/rohitkumbhar/surmai:latest volumes: - surmai_data:/pb_data ports: - "9090:8080" restart: always environment: SURMAI_ADMIN_EMAIL: admin@surmai.app # Add your default administrator email SURMAI_ADMIN_PASSWORD: ChangeMe123#@! # Admin password. Minimum 9 characters with mixed case, numbers, and special characters PB_DATA_DIRECTORY: /pb_data # Must match volume directory above

Host port 9090 maps to container port 8080

How to configure surmai

  • PB_DATA_DIRECTORYREQUIRED: Data directory set in the volume mapping

    REQUIRED: Data directory set in the volume mapping

  • SURMAI_ADMIN_EMAILREQUIRED: E-Mail address for the administrative user

    REQUIRED: E-Mail address for the administrative user

  • SURMAI_ADMIN_PASSWORDREQUIRED: Password for the administrative user. Minimum 9 characters with mixed case, numbers, and special characters

    REQUIRED: Password for the administrative user. Minimum 9 characters with mixed case, numbers, and special characters

  • SURMAI_DB_BKP_ACCESS_KEY_IDREQUIRED: Access key with write access to the bucket

    REQUIRED: Access key with write access to the bucket

  • SURMAI_DB_BKP_ACCESS_KEY_SECRETREQUIRED: Secret associated with the access key

    REQUIRED: Secret associated with the access key

  • SURMAI_DB_BKP_BUCKET_NAMEREQUIRED: Name of the bucket

    REQUIRED: Name of the bucket

  • SURMAI_DB_BKP_BUCKET_PATHOPTIONAL: Path inside the bucket

    OPTIONAL: Path inside the bucket

  • SURMAI_DB_BKP_ENABLEDunsetSet to true to enable backup

    Set to true to enable backup

    values: true/false

  • SURMAI_DB_BKP_ENDPOINT_URLREQUIRED: Bucket endpoint URL

    REQUIRED: Bucket endpoint URL

  • SURMAI_DB_BKP_REGIONREQUIRED: Region for the endpoint

    REQUIRED: Region for the endpoint

surmai releases & version history

FAQ

Why not use other existing solutions?

The developer wanted to learn React/TypeScript and build the UI themselves rather than use an existing tool.

Why so ugly tho?

The developer has a backend engineering background and prioritizes function over form.

Rate this project

Click to rate — no account needed.

0 comments

Posting as guest
Loading comments…