Tiny self-hosted meeting scheduler. One owner, one URL, one feature: book a time slot.
1.4K
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.
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.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.
AGPL-3.0. Made by Anton Shubin, antonshubin.com.
Content type
Image
Digest
sha256:98f7d5eb6…
Size
77.2 MB
Last updated
about 13 hours ago
docker pull antonshubin/mig