Sign inSign up

antonshubin/mig

By antonshubin

•Updated about 13 hours ago

Tiny self-hosted meeting scheduler. One owner, one URL, one feature: book a time slot.

Image
0

1.4K

antonshubin/mig repository overview

⁠mig

mig is a tiny self-hosted meeting scheduler. One owner, one URL, one feature: a visitor picks a time slot and both of you get an email with a calendar invite and a cancel link.

No database, no accounts, no admin UI. mig reads its configuration from environment variables and keeps bookings in one JSON file. The server is built on web standards (Fetch, Web Crypto, Streams, ES modules) and runs on Deno 2 in a small Debian-based image, as a non-root user.

⁠Tags

  • latest: the most recent stable release.
  • vX.Y.Z: one release, for example v0.4.1. Pin one of these in production.
  • vX.Y.Z-rc.N: a pre-release. It never moves latest.

⁠Quick start

mkdir -p ./data && sudo chown 1993:1993 ./data
docker run -d --name mig -p 8080:8080 -v ./data:/data:z \
  -e HOST_NAME="Jane Doe" \
  -e HOST_EMAIL="[email protected]" \
  -e HOST_TZ="Europe/Berlin" \
  -e MEETING_URL="https://meet.example.com/room" \
  -e WEEKLY_AVAILABILITY="MON-FRI 09:00-17:00" \
  -e SLOT_DURATION_MIN=30 \
  -e SMTP_HOST=smtp.example.com -e SMTP_PORT=587 \
  -e [email protected] -e SMTP_PASSWORD='change-me' \
  -e SMTP_FROM="Bookings <[email protected]>" \
  -e CANCEL_SECRET="$(openssl rand -base64 32)" \
  -e PUBLIC_URL=https://meet.example.com \
  antonshubin/mig:latest

The container runs as uid/gid 1993, so ./data must be writable by that user. Every variable is in configuration.md⁠; Docker Compose, Podman and reverse proxies in self-hosting.md⁠; embedding in your own site in embedding.md⁠; upgrade notes in the CHANGELOG⁠.

⁠License

AGPL-3.0. Made by Anton Shubin, antonshubin.com⁠.

Tag summary

Content type

Image

Digest

sha256:98f7d5eb6…

Size

77.2 MB

Last updated

about 13 hours ago

docker pull antonshubin/mig