gathio
Simple, federated, privacy-first event hosting platform
Alternative to: eventbrite, evite
gathio lets you create and share event pages without requiring guests to register for an account. It supports RSVPs, comments, and optional federation via ActivityPub, with self-destructing events for extra privacy. It is a lightweight, self-hostable alternative to commercial event pages like Eventbrite and Evite.
gathio Docker Compose example
Self-host gathio on your own server, homelab, or VPS starting from this Docker Compose example.
It runs gathio in Docker containers using the official ghcr.io/lowercasename/gathio:latest, mongo:latest images, with persistent volumes and automatic restarts preconfigured.
Review the environment variables and adjust them to your setup, save the file as compose.yml (or docker-compose.yml), and start the stack with docker compose up -d.
services:
gathio:
image: ghcr.io/lowercasename/gathio:latest
depends_on:
- mongo
volumes:
- ./config.toml:/app/config/config.toml:ro
- images:/app/public/events
restart: unless-stopped
environment:
# The domain (and optional :port) where your Gathio instance is reachable. Used to generate event links.
GATHIO_DOMAIN: "localhost:3000"
# Contact email address shown on the instance.
GATHIO_CONTACT_EMAIL: "contact@example.com"
# Display name of your instance.
GATHIO_SITE_NAME: "gathio"
mongo:
image: mongo:latest
volumes:
- mongodb_data:/data/db
restart: unless-stopped
volumes:
images:
mongodb_data: Extra files
The Docker Compose configuration above bind-mounts the following file. Save it next to your compose.yml,
keeping the same relative path.
config.toml
[general]
# The domain (and optional :port) where your Gathio instance is reachable. Used to generate event links.
domain = "${GATHIO_DOMAIN}"
port = "3000"
# Contact email address shown on the instance.
email = "${GATHIO_CONTACT_EMAIL}"
# Display name of your instance.
site_name = "${GATHIO_SITE_NAME}"
is_federated = true
# Events are deleted this many days after they end. Set to 0 to keep events forever.
delete_after_days = 7
email_logo_url = ""
show_kofi = false
show_public_event_list = false
max_comment_length = 5000
# Mail service used to send host/attendee emails: "nodemailer", "sendgrid", "mailgun", or "none".
mail_service = "none"
creator_email_addresses = []
[database]
mongodb_url = "mongodb://mongo:27017/gathio" Prefer a managed setup? WinterFlow installs, configures, and updates gathio for you using this same Docker Compose configuration.