Deploying Gathio
Introduction
Gathio is a privacy-focused, minimalist event hosting platform that allows users to create and share events without requiring accounts, tracking, or personal data collection. It provides a simple alternative to commercial event platforms for communities that value privacy.
Built with Node.js, Gathio offers essential event features like RSVPs, comments, and iCal export while maintaining a lightweight footprint. The application supports ActivityPub federation, allowing events to be shared across the fediverse.
Key highlights of Gathio:
- No Accounts Required: Create and attend events without registration
- Privacy-Focused: No tracking, analytics, or personal data collection
- Simple RSVPs: Guests can RSVP without creating accounts
- Event Comments: Discussion threads for each event
- iCal Export: Export events to calendar applications
- ActivityPub Support: Federate events across the fediverse
- Event Editing: Secret edit links for event organizers
- Time Zone Support: Proper handling of time zones
- Markdown Support: Rich text formatting for descriptions
- Self-Hostable: Complete control over your event data
- Open Source: Licensed under GPL-3.0
This guide walks through deploying Gathio on Klutch.sh using Docker.
Why Deploy Gathio on Klutch.sh
Deploying Gathio on Klutch.sh provides several advantages:
Privacy Infrastructure: Host events without relying on tracking-heavy platforms.
Always Accessible: Your event pages are available 24/7 for attendees.
HTTPS Security: Secure access for event creation and RSVPs.
Custom Domain: Use your own domain for professional event URLs.
Community Hosting: Provide event hosting for your community or organization.
Prerequisites
Before deploying Gathio on Klutch.sh, ensure you have:
- A Klutch.sh account
- A GitHub account with a repository for your configuration
- MongoDB database (deployed separately or external service)
- Basic familiarity with Docker
- (Optional) A custom domain for your Gathio instance
Understanding Gathio Architecture
Gathio has a straightforward architecture:
Express.js Backend: Handles HTTP requests, event management, and federation.
MongoDB: Stores events, RSVPs, and comments.
EJS Templates: Renders HTML pages with event information.
ActivityPub: Optional federation protocol for sharing events.
Preparing Your Repository
Create a GitHub repository with your Gathio configuration.
Repository Structure
gathio-deploy/├── Dockerfile└── .dockerignoreCreating the Dockerfile
FROM node:18-alpine
WORKDIR /app
# Clone GathioRUN apk add --no-cache git && \ git clone https://github.com/lowercasename/gathio.git . && \ npm install
# Set environment variablesENV NODE_ENV=productionENV DOMAIN=${DOMAIN}ENV MONGODB_URI=${MONGODB_URI}ENV EMAIL_HOST=${EMAIL_HOST}ENV EMAIL_PORT=${EMAIL_PORT}
# Expose web portEXPOSE 3000
# Health checkHEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \ CMD wget --no-verbose --tries=1 --spider http://localhost:3000 || exit 1
# Start applicationCMD ["npm", "start"]Environment Variables Reference
| Variable | Required | Description |
|---|---|---|
DOMAIN | Yes | Your Gathio domain (e.g., events.example.com) |
MONGODB_URI | Yes | MongoDB connection string |
PORT | No | HTTP port (default: 3000) |
EMAIL_HOST | No | SMTP server for notifications |
EMAIL_PORT | No | SMTP port |
EMAIL_USER | No | SMTP username |
EMAIL_PASS | No | SMTP password |
EMAIL_FROM | No | From address for emails |
ACTIVITYPUB | No | Enable ActivityPub federation |
Deploying Gathio on Klutch.sh
- Deploy MongoDB on Klutch.sh or use a managed service
- Create a database named “gathio”
- Note the connection string
- Select HTTP as the traffic type
- Set the internal port to 3000
Deploy MongoDB
Gathio requires MongoDB. Set up a MongoDB instance:
Push Your Repository to GitHub
Commit your Dockerfile to GitHub.
Create a New Project on Klutch.sh
Navigate to the Klutch.sh dashboard and create a new project named “gathio” or “events”.
Create a New App
Create a new app and connect your GitHub repository.
Configure HTTP Traffic
Set up HTTP traffic:
Set Environment Variables
| Variable | Value |
|---|---|
DOMAIN | your-app.klutch.sh |
MONGODB_URI | Your MongoDB connection string |
NODE_ENV | production |
Attach Persistent Volumes
| Mount Path | Size | Purpose |
|---|---|---|
/app/public/events | 5 GB | Event images and attachments |
Deploy Your Application
Click Deploy to build and launch Gathio.
Access Your Instance
Navigate to your app URL to start creating events.
Creating Events
New Event
- Visit your Gathio homepage
- Click “Create an event”
- Fill in event details:
- Title
- Start and end time
- Location
- Description (Markdown supported)
- Submit the form
Edit Link
After creating an event, you receive a secret edit link. Save this link to:
- Edit event details
- Delete the event
- Manage RSVPs and comments
Event URL
Each event gets a unique, shareable URL that attendees can use to view and RSVP.
RSVP System
Attending Events
Attendees can RSVP without accounts:
- Visit the event page
- Enter name (optional: email for reminders)
- Select attendance status:
- Attending
- Maybe
- Not Attending
- Submit RSVP
RSVP Privacy
- Names are visible to other attendees
- Email addresses are never displayed
- No account creation required
Event Comments
Adding Comments
- Scroll to comments section
- Enter your name
- Write your comment
- Submit
Comment Moderation
Event organizers can delete comments using the edit link.
Email Notifications
Configure SMTP for email features:
Reminder Emails: Attendees with emails receive event reminders.
RSVP Notifications: Organizers can receive RSVP notifications.
SMTP Configuration
EMAIL_HOST=smtp.example.comEMAIL_PORT=587EMAIL_USER=your-userEMAIL_PASS=your-passwordEMAIL_FROM=events@example.comActivityPub Federation
Enable federation to share events across the fediverse:
- Set
ACTIVITYPUB=truein environment - Events become available as ActivityPub actors
- Users can follow events from Mastodon, etc.
Fediverse Interaction
- Events appear as posts when created
- Updates federate to followers
- Comments can come from fediverse accounts
Calendar Integration
iCal Export
Each event provides an iCal file:
- Download individual events
- Subscribe to event calendars
- Import into Google Calendar, Outlook, etc.
Calendar URL
https://your-app.klutch.sh/event/EVENT_ID/icalCustomization
Branding
Customize appearance through environment variables or code modifications:
- Site name
- Logo
- Color scheme
Landing Page
Modify the homepage to reflect your community or organization.
Security Best Practices
Edit Link Security
- Store edit links securely
- Share only with trusted organizers
- Cannot be recovered if lost
Spam Prevention
Consider implementing:
- Rate limiting
- CAPTCHA for submissions
- Moderation tools
Troubleshooting
Events Not Saving
- Verify MongoDB connection
- Check database permissions
- Review application logs
Email Not Sending
- Verify SMTP credentials
- Check email server connectivity
- Review SMTP logs
Images Not Uploading
- Verify volume mount
- Check file permissions
- Review size limits
Additional Resources
Conclusion
Deploying Gathio on Klutch.sh provides a privacy-respecting event platform for your community. Without requiring accounts or collecting personal data, Gathio offers a refreshing alternative to commercial event services.
The combination of Gathio’s simplicity and Klutch.sh’s reliable hosting creates an ideal solution for communities and organizations that value privacy.