自分で · Self-host

Run Musubi on your own server.

One docker-compose.yml: a prebuilt API image and an embedded Postgres. No cloning, no build step. Your calendar data stays on infrastructure you control — MIT-licensed, yours to keep.

# 1 — grab the compose file and an env file next to it
curl -O https://raw.githubusercontent.com/frgtn-dot-dev/musubi/main/docker-compose.yml
curl -o .env https://raw.githubusercontent.com/frgtn-dot-dev/musubi/main/.env.example

# 2 — set POSTGRES_PASSWORD, BETTER_AUTH_SECRET and BETTER_AUTH_URL in .env

# 3 — start it
docker compose up -d

The hosted service stays free during the open beta — self-hosting is for when you'd rather run it yourself.

構成 · What runs

What you're running.

Two containers
The prebuilt frgtndev/musubi API image and a Postgres 17 database. The API migrates the schema on startup — nothing to run by hand.
Your data, your keys
Everything lives in a Postgres volume on your machine. No telemetry home, no accounts on our servers, no third parties in the loop.
Simple upgrades
Pull the new image and restart — docker compose pull && docker compose up -d. One API process per database, enforced by an advisory lock.
必要なもの · Requirements

What you need.

  • Docker with Compose v2 — that's the whole requirement for the comfortable path above.
  • A domain and a reverse proxy (Caddy, nginx, Traefik) if you want HTTPS. Point it at the published port (7531 by default) and set BETTER_AUTH_URL to your public https:// origin.
  • Building from source instead? Node 22.12+, Corepack and Postgres 15+. Comment out the image: line in the compose file and uncomment the build: block.
その先へ · Going further

Going further.

Deploying with Dokploy? Use docker-compose.dokploy.yml from the repo instead of the plain stack. The full walkthrough — environment variables, HTTPS, backups and upgrades — lives in the self-hosting runbook. Stuck? Open an issue on GitHub or ask in the Discord.