Skip to content

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
└── .dockerignore

Creating the Dockerfile

FROM node:18-alpine
WORKDIR /app
# Clone Gathio
RUN apk add --no-cache git && \
git clone https://github.com/lowercasename/gathio.git . && \
npm install
# Set environment variables
ENV NODE_ENV=production
ENV DOMAIN=${DOMAIN}
ENV MONGODB_URI=${MONGODB_URI}
ENV EMAIL_HOST=${EMAIL_HOST}
ENV EMAIL_PORT=${EMAIL_PORT}
# Expose web port
EXPOSE 3000
# Health check
HEALTHCHECK --interval=30s --timeout=10s --start-period=30s --retries=3 \
CMD wget --no-verbose --tries=1 --spider http://localhost:3000 || exit 1
# Start application
CMD ["npm", "start"]

Environment Variables Reference

VariableRequiredDescription
DOMAINYesYour Gathio domain (e.g., events.example.com)
MONGODB_URIYesMongoDB connection string
PORTNoHTTP port (default: 3000)
EMAIL_HOSTNoSMTP server for notifications
EMAIL_PORTNoSMTP port
EMAIL_USERNoSMTP username
EMAIL_PASSNoSMTP password
EMAIL_FROMNoFrom address for emails
ACTIVITYPUBNoEnable ActivityPub federation

Deploying Gathio on Klutch.sh

    Deploy MongoDB

    Gathio requires MongoDB. Set up a MongoDB instance:

    1. Deploy MongoDB on Klutch.sh or use a managed service
    2. Create a database named “gathio”
    3. Note the connection string

    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:

    • Select HTTP as the traffic type
    • Set the internal port to 3000

    Set Environment Variables

    VariableValue
    DOMAINyour-app.klutch.sh
    MONGODB_URIYour MongoDB connection string
    NODE_ENVproduction

    Attach Persistent Volumes

    Mount PathSizePurpose
    /app/public/events5 GBEvent 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

  1. Visit your Gathio homepage
  2. Click “Create an event”
  3. Fill in event details:
    • Title
    • Start and end time
    • Location
    • Description (Markdown supported)
  4. Submit the form

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:

  1. Visit the event page
  2. Enter name (optional: email for reminders)
  3. Select attendance status:
    • Attending
    • Maybe
    • Not Attending
  4. Submit RSVP

RSVP Privacy

  • Names are visible to other attendees
  • Email addresses are never displayed
  • No account creation required

Event Comments

Adding Comments

  1. Scroll to comments section
  2. Enter your name
  3. Write your comment
  4. 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.com
EMAIL_PORT=587
EMAIL_USER=your-user
EMAIL_PASS=your-password
EMAIL_FROM=events@example.com

ActivityPub Federation

Enable federation to share events across the fediverse:

  1. Set ACTIVITYPUB=true in environment
  2. Events become available as ActivityPub actors
  3. 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/ical

Customization

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

  • 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.