Deploys and scales containerised apps across your own Docker hosts over a WireGuard mesh, without Kubernetes or Swarm.
stoatchat/self-hosted
Docker-based configuration for deploying a full self-hosted Stoat chat instance, including back-end, web front-end, file server and proxies.
Open-source alternative to:Discord
- Stars
- 2,682
- Forks
- 303
- Open issues
- 20
- Last commit
- last month
What is it?
This repository provides Docker Compose configuration and step-by-step instructions for running a complete Stoat instance on your own server. A deployment includes the back-end, the web front-end, a file server, and a metadata and image proxy.
The setup centers on a generate_config.sh script that creates the required secrets in a secrets.env file and produces a Revolt.toml configuration, which can then be edited for options such as email verification, captcha, a custom S3 server, and iOS and Android push notifications. The guide walks through provisioning an Ubuntu VPS, configuring firewall rules, pointing a domain at the server, and installing Docker. Optional sections cover placing the instance behind another reverse proxy, pinning MongoDB or swapping KeyDB for Valkey or Redis on older or ARM hardware, and updating an existing deployment.
Most official clients do not yet support self-hosted instances, so the web client, including use as a PWA, is the main way to access one.
Key features
- 01Deploys back-end, web front-end, file server and metadata/image proxy together via Docker Compose.
- 02Generates secrets and a Revolt.toml configuration with generate_config.sh.
- 03Supports custom S3 storage, email verification, captcha and mobile push notifications.
- 04Includes guides for reverse proxy placement, invite-only setup and NGINX.
- 05Documents upgrade steps and migrations for past breaking changes.
Use cases
- Running a private chat server for a community or team on your own VPS.
- Hosting a Stoat instance on a domain you control, with your own storage and data.
- Testing or evaluating the Stoat stack before deploying it more broadly.
Quick start
- 1
Clone the repository
git clone https://github.com/stoatchat/self-hosted stoat - 2
Enter the project directory
cd stoat - 3
Generate the configuration with your domain
./generate_config.sh your.domain - 4
Start the instance in the background
docker compose up -d
Things to know
- Requires a server with Docker and a domain name pointing to it, so self-hosting takes setup effort.
- Most official clients do not support self-hosted instances; the web client and PWA work best.
- Licensed under AGPL-3.0, a copyleft license with network-use source disclosure requirements.
In collections
Topics
FAQ
- What is self-hosted?
- Docker-based configuration for deploying a full self-hosted Stoat chat instance, including back-end, web front-end, file server and proxies. This repository provides Docker Compose configuration and step-by-step instructions for running a complete Stoat instance on your own server. A deployment includes the back-end, the web front-end, a file server, and a metadata and image proxy.
- Is self-hosted free to use? What license does it have?
- self-hosted is open source under the AGPL-3.0 license. Check the license terms before using it in commercial products.
- Is self-hosted still maintained?
- Updated within 6 months. The last commit to self-hosted was on Oct 7, 2026.
- What can I use self-hosted for?
- Running a private chat server for a community or team on your own VPS. Hosting a Stoat instance on a domain you control, with your own storage and data. Testing or evaluating the Stoat stack before deploying it more broadly.
- How do I install self-hosted?
- Clone the repository: git clone https://github.com/stoatchat/self-hosted stoat Enter the project directory: cd stoat Generate the configuration with your domain: ./generate_config.sh your.domain Start the instance in the background: docker compose up -d
- Where can I get self-hosted?
- The source code and installation instructions are on GitHub: https://github.com/stoatchat/self-hosted
Summary generated by AI from the project's README. GitHub stats refresh daily.
Related projects
A web and desktop client for the Matrix open communication protocol, built on the Matrix JS SDK.
A simple, elegant web client for the Matrix open messaging protocol, built with React and TypeScript.
Build scripts that produce the Docker images for the Snikket self-hosted personal messaging server.
Synapse is an open source Matrix homeserver written in Python and Rust, maintained by Element.