Skip to content

Deploying Snikket

Introduction

Snikket is a modern, user-friendly messaging platform built on the XMPP protocol. It packages the battle-tested Prosody XMPP server with beautiful mobile and web apps, making self-hosted instant messaging accessible to everyone—not just system administrators.

Unlike proprietary messaging apps that lock you into a single service, Snikket uses the federated XMPP standard, meaning you can communicate with users on other XMPP servers. Combined with end-to-end encryption via OMEMO, Snikket provides secure, private messaging under your control.

Key features of Snikket include:

  • User-Friendly: Designed for real people, not just developers
  • End-to-End Encryption: OMEMO encryption for secure conversations
  • Beautiful Apps: Native iOS, Android, and web applications
  • Federation: Communicate with any XMPP server worldwide
  • Voice and Video Calls: Built-in audio and video calling
  • Group Chats: Private group conversations with admin controls
  • File Sharing: Share photos, videos, and files securely
  • Message Sync: Seamless experience across all your devices
  • Invitation System: Easy user onboarding with invitation links
  • Admin Portal: Simple web-based administration
  • Push Notifications: Reliable notifications on mobile devices
  • Open Source: Based on Prosody XMPP server
  • Standards-Based: Full XMPP compliance for interoperability

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

Why Deploy Snikket on Klutch.sh

Deploying Snikket on Klutch.sh provides several advantages:

Complete Control: Own your messaging infrastructure and data.

Simplified Setup: Klutch.sh handles deployment complexity.

HTTPS by Default: Automatic SSL certificates for secure connections.

Persistent Storage: Your messages and files survive restarts.

Custom Domains: Use your own domain for professional messaging.

Always Available: 24/7 uptime for real-time communication.

Prerequisites

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

  • A Klutch.sh account
  • A GitHub account with a repository for your configuration
  • A custom domain with full DNS control
  • Basic familiarity with Docker and DNS configuration

Important DNS Requirements

Snikket requires specific DNS records for proper operation. You’ll need to configure:

  • A record for your main domain
  • SRV records for XMPP service discovery
  • Additional records for federation (optional)

Deploying Snikket on Klutch.sh

    Create a GitHub Repository

    Create a new GitHub repository for your Snikket deployment configuration.

    Create Your Dockerfile

    Create a Dockerfile:

    FROM snikket/snikket-server:stable
    ENV SNIKKET_DOMAIN=${SNIKKET_DOMAIN}
    ENV SNIKKET_ADMIN_EMAIL=${SNIKKET_ADMIN_EMAIL}
    ENV SNIKKET_TWEAK_TURNSERVER=0
    EXPOSE 80
    EXPOSE 443
    EXPOSE 5222
    EXPOSE 5269
    EXPOSE 5280
    EXPOSE 5281
    VOLUME /snikket
    CMD ["/start.sh"]

    Push Your Repository to GitHub

    Commit and push your Dockerfile.

    Configure DNS Records

    Set up the required DNS records for your domain:

    TypeNameValue
    A@Your server IP
    A*Your server IP
    SRV_xmpp-client._tcp0 5 5222 your-domain.com
    SRV_xmpp-server._tcp0 5 5269 your-domain.com

    Create a New Project on Klutch.sh

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

    Create a New App

    Create a new app and connect your GitHub repository.

    Configure Environment Variables

    Add the following environment variables:

    VariableValue
    SNIKKET_DOMAINYour domain (e.g., chat.example.com)
    SNIKKET_ADMIN_EMAILAdmin email address

    Configure Port Settings

    Snikket requires multiple ports:

    PortPurpose
    80HTTP (redirects to HTTPS)
    443HTTPS (web portal)
    5222Client connections (XMPP)
    5269Server-to-server (XMPP federation)

    Configure HTTP port 443 for the web interface.

    Attach Persistent Storage

    Add a persistent volume:

    Mount PathRecommended SizePurpose
    /snikket10 GB+All Snikket data

    Deploy Your Application

    Click Deploy to start the build process.

    Access Admin Portal

    Once deployed, access the web portal at your domain to complete setup.

    Create First User

    Use the admin portal to create invitation links for users.

Setting Up Users

Snikket uses an invitation-based system:

  1. Access the admin portal at your Snikket domain
  2. Log in with your admin credentials
  3. Create invitation links for new users
  4. Share links with users to invite them
  5. Users download the Snikket app and use the link to register

Snikket Apps

Users can access Snikket through:

  • Snikket iOS App: Available on the App Store
  • Snikket Android App: Available on Google Play and F-Droid
  • Web Portal: Browser-based access at your domain

Federation with Other XMPP Servers

Snikket can communicate with other XMPP servers:

  1. Ensure SRV records are properly configured
  2. Server-to-server connections use port 5269
  3. Users can message contacts on any XMPP server using full JID (user@domain.com)

Additional Resources

Conclusion

Deploying Snikket on Klutch.sh gives you a modern, secure messaging platform that you control. With beautiful native apps, end-to-end encryption, and XMPP federation, Snikket offers the features of commercial messengers while keeping your data private.

Whether for family, friends, or your organization, Snikket provides the privacy and control that centralized messaging services cannot offer.