If you run a community, manage a team, or simply value control over your communication tools, the idea of hosting your own chat platform is compelling. Discord dominates the group chat space, but it comes with trade-offs: closed source, opaque data practices, arbitrary server limits, and the risk of sudden bans or policy changes.
Revolt is an open source, self-hostable chat platform designed from the ground up to look and feel like Discord while giving you full ownership of your data, your infrastructure, and your community. In this guide, we’ll cover what Revolt is, why you’d want to self-host it, and how to get a production-ready instance running with docker Compose.
Why Self-Host Your Chat Platform
Running someone else’s service is convenient until it isn’t. Here’s why taking control of your chat infrastructure makes sense:
- Full data ownership. Your messages, files, and user data live on your server. No third-party analytics, no advertising, no data mining.
- No arbitrary limits. Free Discord servers cap at 500 members unless you pay for boosts. Self-hosted Revolt has no such restrictions — your hardware is the only limit.
- Privacy compliance. If you operate in a jurisdiction with strict data protection laws (GDPR, CCPA), self-hosting gives you complete control over data retention, encryption, and access logs.
- Customization. Modify the client, add features, integrate with internal tools, or white-label the entire platform. Open source means no walls.
- Resilience. Discord outages take down millions of communities simultaneously. Your self-hosted instance is independent — it’s up when you need it.
- Cost predictability. For large communities, Discord Nitro and boost costs add up. A $10–20/month VPS hosts Revolt for thousands of users with no per-feature charges.
What Is Revolt?
Revolt is a free, open source user-facing chat platform with an architecture inspired by Discord. It features servers, channels (text and voice), roles and permissions, custom emojis, bots, and a polished web and desktop client — all under the GNU AGPLv3 license.
Key characteristics:
| Feature | Details |
|---|---|
| License | GNU AGPLv3 |
| Backend | Rust (high performance, low memory) |
| Frontend | React + Svelte web client |
| Database | MongoDB |
| Caching | Redis |
| Real-time | WebSocket-based messaging |
| Voice | WebRTC voice channels |
| Bots | REST + WebSocket bot API |
| Mobile | Community-built Android and iOS apps |
| Self-hosting | Fully supported via Docker |
The project is split into several components:
- revolt.js — Client library for web and desktop
- autumn — File/attachment upload service
- january — Embed/proxy service for links and images
- quark — Image manipulation and rendering
- delta — Core API and WebSocket server
- web app — The browser-based chat interface
Revolt vs Discord: Feature Comparison
Before we dive into deployment, let’s see how Revolt stacks up against Discord:
| Feature | Revolt (Self-Hosted) | Discord |
|---|---|---|
| Cost | Free (your server cost) | Free tier limited; Nitro for perks |
| Source Code | Fully open (AGPLv3) | Closed source |
| Data Ownership | You control everything | Discord’s servers, Discord’s rules |
| Server Member Limit | Unlimited | 500 (free), up to 5000 with boosts |
| File Upload Limit | Configurable (you set it) | 25 MB (free), 500 MB (Nitro) |
| Custom Emojis | Unlimited | 50–250 depending on level |
| Voice Channels | WebRTC-based | Proprietary |
| Bot API | REST + WebSocket, open | REST + WebSocket, documented |
| End-to-End Encryption | Not built-in (self-hosting helps) | Not available |
| Moderation Tools | Built-in roles, permissions, bans | Advanced AutoMod, audit logs |
| Screen Sharing | Via WebRTC voice channels | Yes, up to 4K with Nitro |
| Server Folders | Supported | Nitro-only feature |
| Mobile Apps | Community-built | Official apps |
| API Documentation | Open source, community-maintained | Official docs |
Where Discord still leads: Discord has a massive user base, polished mobile apps, superior moderation tooling (AutoMod), and seamless screen sharing. If your community depends on reaching people where they already are, Discord’s network effect is hard to beat.
Where Revolt wins: Complete self-hosting, no limits, no vendor lock-in, full data ownership, and the peace of mind that comes with running open source infrastructure you can audit and modify.
Deploying Revolt with Docker Compose
The recommended way to run Revolt is with Docker Compose. This setup includes all required services: the core API, file uploads, embed proxy, MongoDB, Redis, and the web client.
Prerequisites
- A Linux server with at least 2 GB RAM (4 GB recommended)
- Docker and Docker Compose installed
- A domain name (e.g.,
chat.example.com) with DNS pointing to your server - TLS certificates (we’ll use Caddy for automatic HTTPS)
Step 1: Create the Project Directory
| |
Step 2: Create the Docker Compose File
Create a docker-compose.yml that defines all Revolt services:
| |
Step 3: Configure Caddy for TLS
Create a Caddyfile for automatic HTTPS:
| |
Replace example.com with your actual domain. Caddy automatically obtains and renews TLS certificates from Let’s Encrypt.
Step 4: Launch the Stack
| |
Wait for all containers to start:
| |
You should see all seven services running. Check the logs if anything looks off:
| |
Step 5: Create Your First Admin Account
Revolt’s first user registered automatically becomes the instance administrator. Visit https://app.example.com and create an account — that user will have full administrative access to the platform.
Alternatively, if you want to create the admin via the API:
| |
Step 6: Configure Instance Settings
Access the Revolt API to configure instance-wide settings. You’ll need the admin user’s session token:
| |
Advanced Configuration
Customizing the Web Client
The Revolt web client supports environment variables for deep customization:
| |
You can inject custom CSS to rebrand the client with your community colors and logo.
Running Behind an Existing Reverse Proxy
If you already use Nginx or Traefik, skip the Caddy container and configure proxying manually. Here’s an Nginx example:
| |
Important: WebSocket proxying is non-negotiable. Without proper Upgrade and Connection headers, real-time messaging will fail and users will see constant disconnects.
Bot Development
Revolt has a straightforward bot API. Here’s a simple Python bot using the revolt.py library:
| |
Install the library:
| |
The bot API supports event listeners for messages, member joins, role changes, server creation, and more. You can also interact with the REST API directly:
| |
Database Backups
Never skip backups. MongoDB and Redis both support live snapshots:
| |
Add to crontab for daily execution:
| |
Migration Strategies from Discord
Moving an entire community from Discord to Revolt requires planning. Here’s a practical approach:
Phase 1: Parallel Operation (Week 1–2)
Run both platforms simultaneously. Set up Revolt with matching server and channel names. Announce the new platform in Discord and encourage early adopters to join.
Phase 2: Content Migration
While there’s no official migration tool, you can programmatically export Discord data (via the Discord API or your data download) and import it into Revolt’s API. Focus on:
- Server and channel structure (names, categories)
- Role definitions and permissions
- Static content like rules, welcome messages, and pinned posts
User passwords and message history cannot be directly migrated due to platform differences.
Phase 3: Transition (Week 3–4)
Move community-critical bots first. Announce a cutover date. After the transition, set the Discord server to read-only mode for reference.
Performance and Scaling
Revolt’s Rust-based backend is lightweight. Here are realistic resource expectations:
| Scale | CPU | RAM | Notes |
|---|---|---|---|
| Small (1–50 users) | 1 core | 512 MB | Single-core VPS sufficient |
| Medium (50–500 users) | 2 cores | 1 GB | Comfortable headroom |
| Large (500–5000 users) | 4 cores | 2–4 GB | Consider Redis clustering |
| Very Large (5000+) | 8 cores | 4–8 GB | MongoDB replica set recommended |
For the largest deployments:
- MongoDB: Use a replica set for high availability
- Redis: Enable persistence and consider Redis Sentinel
- Load balancing: Deploy multiple
deltainstances behind a reverse proxy - CDN: Put Caddy behind Cloudflare or a similar CDN for edge caching of static assets
- File storage: Mount autumn’s file directory on a separate volume or S3-compatible storage
Troubleshooting
WebSocket Connections Failing
This is the most common issue. Check:
| |
High MongoDB Memory Usage
MongoDB uses available memory for caching by design. Limit it if needed:
| |
Files Not Uploading
Check the autumn service and ensure volume mounts are correct:
| |
Ensure the AUTUMN_FILESIZE_LIMIT matches your expectations (value is in bytes — 26214400 = 25 MB).
Alternatives to Consider
Revolt isn’t the only self-hosted chat option. Depending on your needs, these alternatives may be worth evaluating:
| Platform | Best For | Language | Complexity |
|---|---|---|---|
| Matrix/Element | Federatmattermostncryption | Rust + Python | Medium |
| Mattermost | Enterprise, Slack-like UX | Go | Medium |
| Rocket.Chat | Omnichannel, integrations | TypeScript/Node.js | Medium |
| Zulip | Threaded conversations | Python | Medium |
| Revolt | Discord-like experience | Rust | Low–Medium |
Matrix excels at federation and encryption but has a steeper learning curve. Mattermost is polished and enterprise-ready but heavier on resources. Zulip’s unique threading model is powerful but unfamiliar to Discord users. Revolt’s advantage is familiarity — it looks and works like Discord, so your community members adapt instantly.
Conclusion
Revolt is the most straightforward path to a self-hosted, Discord-like chat platform in 2026. It gives you the familiar server-and-channel model with none of the vendor lock-in, rate limits, or data concerns. With Docker Compose, a production instance takes under 10 minutes to deploy.
The trade-offs are real: smaller ecosystem, fewer third-party integrations, and community-built mobile apps that lag behind Discord’s polish. But for communities that value sovereignty over convenience, Revolt is the best option available today.
Your data, your server, your rules. That’s the entire point.
Frequently Asked Questions (FAQ)
Which one should I choose in 2026?
The best choice depends on your specific requirements:
- For beginners: Start with the simplest option that covers your core use case
- For production: Choose the solution with the most active community and documentation
- For teams: Look for collaboration features and user management
- For privacy: Prefer fully open-source, self-hosted options with no telemetry
Refer to the comparison table above for detailed feature breakdowns.
Can I migrate between these tools?
Most tools support data import/export. Always:
- Backup your current data
- Test the migration on a staging environment
- Check official migration guides in the documentation
Are there free versions available?
All tools in this guide offer free, open-source editions. Some also provide paid plans with additional features, priority support, or managed hosting.
How do I get started?
- Review the comparison table to identify your requirements
- Visit the official documentation (links provided above)
- Start with a Docker Compose setup for easy testing
- Join the community forums for troubleshooting