Skip to content

Latest commit

 

History

History
47 lines (35 loc) · 2.1 KB

File metadata and controls

47 lines (35 loc) · 2.1 KB

Self-Hosting

You can run Compass on infrastructure you control instead of using the hosted version on compasscalendar.com

Start with Run Compass on a server. It walks through a small VPS setup with your own domain, HTTPS, and the Compass services running behind a reverse proxy.

If you only want to run Compass on your own computer, use the normal local development flow with Bun instead of the self-host installer.

Compass architecture

When you self-host Compass on a server, you get a stack of small services. Only the public website and API are reachable from your browser. The databases stay private inside Docker.

flowchart TD
    browser[Your browser]
    indexeddb[(Browser IndexedDB<br/>offline events)]
    caddy[Caddy<br/>HTTPS]
    web[web container<br/>127.0.0.1:9080]
    backend[backend container<br/>127.0.0.1:3000/api]
    sync[sync container<br/>127.0.0.1:3010]
    mongo[(MongoDB<br/>prod_calendar + compass_sync)]
    supertokens[SuperTokens Core<br/>signup, login]
    postgres[(Postgres<br/>auth data)]
    google[Google Calendar]

    browser -->|loads Compass| caddy
    caddy -->|web traffic| web
    caddy -->|API traffic| backend
    caddy -->|/sync/* OAuth + webhooks| sync
    browser -->|caches events locally| indexeddb
    backend -->|Docker volume| mongo
    backend -->|calendar/event reads + writes| sync
    backend --> supertokens
    sync -->|Docker volume, own database| mongo
    sync <-->|OAuth, push notifications| google
    supertokens -->|Docker volume| postgres
Loading

Compass Sync owns Google Calendar sync end to end (OAuth, webhooks, and incremental pulls) in its own isolated database on the same bundled MongoDB — the backend never reads Google credentials directly. Sign-in with Google is the one exception: it stays a direct backend↔Google exchange, separate from calendar sync.

Start here

Ready to get this setup on your infrastructure? See Run Compass on a server


Have an idea on how we can make self-hosting easier? Let us know in this GitHub Discussion.