Skip to content

Deploying Tailchat

Introduction

Tailchat is an open-source, pluggable team communication platform designed as an alternative to Slack or Discord. It features a modern interface, plugin architecture, and support for real-time messaging, voice, and video communication.

Key highlights of Tailchat:

  • Plugin System: Extend functionality with a powerful plugin architecture
  • Real-Time Messaging: Instant message delivery with WebSocket
  • Groups and Channels: Organize conversations in groups with channels
  • Voice and Video: Built-in voice and video calling
  • File Sharing: Share files and media in conversations
  • Markdown Support: Rich text formatting with Markdown
  • Bot Support: Create bots for automation
  • End-to-End Encryption: Optional E2EE for private conversations
  • Mobile Apps: Native mobile applications available
  • Open Source: Fully customizable and self-hosted

This guide walks through deploying Tailchat on Klutch.sh using Docker.

Why Deploy Tailchat on Klutch.sh

Deploying Tailchat on Klutch.sh provides several advantages:

Simplified Deployment: Klutch.sh automatically detects your Dockerfile and builds Tailchat without complex orchestration.

Persistent Storage: Attach persistent volumes for messages and uploads.

HTTPS by Default: Secure communication with automatic SSL certificates.

GitHub Integration: Connect your configuration repository for automatic redeployments.

Prerequisites

Before deploying Tailchat on Klutch.sh, ensure you have:

  • A Klutch.sh account
  • A GitHub account with a repository for your Tailchat configuration
  • Basic familiarity with Docker and containerization concepts
  • MongoDB database
  • Redis instance
  • (Optional) MinIO or S3 for file storage

Deploying Tailchat on Klutch.sh

    Create Your Repository

    Create a new GitHub repository with a Dockerfile for Tailchat:

    FROM moonrailgun/tailchat:latest
    ENV MONGO_URL=${MONGO_URL}
    ENV REDIS_URL=${REDIS_URL}
    ENV SECRET=${SECRET}
    ENV API_URL=${API_URL}
    EXPOSE 11000
    VOLUME ["/app/public/uploads"]

    Push to GitHub

    Initialize and push your repository to GitHub with your Dockerfile.

    Create a New Project on Klutch.sh

    Navigate to the Klutch.sh dashboard and create a new project.

    Create a New App

    Within your project, create a new app and connect your GitHub repository.

    Configure HTTP Traffic

    In the deployment settings:

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

    Set Environment Variables

    Configure the following environment variables:

    VariableValue
    MONGO_URLYour MongoDB connection string
    REDIS_URLYour Redis connection string
    SECRETGenerate with openssl rand -hex 32
    API_URLhttps://your-app.klutch.sh

    Attach Persistent Volumes

    Add the following volumes:

    Mount PathRecommended SizePurpose
    /app/public/uploads50 GBUploaded files and media

    Deploy Your Application

    Click Deploy to start the build process.

    Access Tailchat

    Once deployment completes, access Tailchat at your app URL.

Configuration

Initial Setup

Create your first account:

  1. Navigate to your Tailchat instance
  2. Click Register
  3. Create your account
  4. Create your first group

Creating Groups

Groups are the main organizational unit:

  1. Click Create Group
  2. Set a group name and avatar
  3. Invite team members
  4. Create channels for different topics

Installing Plugins

Extend functionality with plugins:

  1. Navigate to Settings > Plugins
  2. Browse available plugins
  3. Enable desired plugins
  4. Configure plugin settings

Bot Integration

Create bots for automation:

  1. Navigate to Settings > Open Platform
  2. Create a new bot application
  3. Configure bot permissions
  4. Use the API to send messages

Additional Resources

Conclusion

Deploying Tailchat on Klutch.sh gives you a powerful team communication platform with automatic builds, persistent storage, and secure HTTPS access. Build your own private messaging service with the flexibility of a plugin architecture.