# Tinode — Self-Hosted Instant Messaging Platform > Tinode is a self-hosted instant messaging server with support for group chats, file sharing, push notifications, and mobile and web clients. ## Install Save as a script file and run: # Tinode — Self-Hosted Instant Messaging Platform ## Quick Use ```bash # Run Tinode server with MySQL backend via Docker Compose git clone https://github.com/tinode/chat.git && cd chat/docker docker compose up -d # Web client available at http://localhost:6060 ``` ## Introduction Tinode is an open-source instant messaging server and set of client libraries designed as a modern replacement for XMPP and similar protocols. It provides real-time messaging with features like group chats, read receipts, typing indicators, file attachments, and push notifications, all accessible through official web, Android, and iOS clients. ## What Tinode Does - Provides one-on-one and group messaging with real-time delivery - Supports file and image sharing with server-side thumbnail generation - Sends push notifications via Firebase Cloud Messaging or TNPG - Handles user authentication with built-in credentials or external providers - Offers a gRPC-based plugin system for custom server-side logic ## Architecture Overview The Tinode server is written in Go and communicates with clients over WebSocket or long polling using a JSON-based protocol. It supports MySQL, PostgreSQL, MongoDB, or RethinkDB as the data store. The server manages topics (chat rooms), subscriptions, message routing, and presence tracking. Clients connect through a stateful session that handles authentication, message delivery, and real-time updates. ## Self-Hosting & Configuration - Deploy using Docker Compose with pre-configured database and server containers - Choose between MySQL, PostgreSQL, MongoDB, or RethinkDB as the storage backend - Configure push notifications by providing Firebase credentials in tinode.conf - Set up TLS by placing certificate files in the config directory - Use the built-in admin panel or CLI tools to manage users and topics ## Key Features - Official Android, iOS, and web clients with a consistent modern UI - Plugin architecture via gRPC for custom chatbots and integrations - Cluster mode with multiple server nodes behind a load balancer - Video and voice call support through WebRTC integration - User search, contact discovery, and tag-based topic browsing ## Comparison with Similar Tools - **Matrix/Synapse** — federated protocol with heavier resource usage; Tinode is simpler and lighter - **Rocket.Chat** — feature-rich but resource-intensive; Tinode focuses on core messaging performance - **Mattermost** — team collaboration oriented; Tinode targets general-purpose messaging - **XMPP (ejabberd)** — mature but complex protocol; Tinode uses a simpler modern API - **Signal Server** — privacy-focused but hard to self-host; Tinode is designed for easy deployment ## FAQ **Q: Can Tinode federate with other Tinode servers?** A: Not currently. Tinode is designed as a single-deployment messaging platform, not a federated protocol. **Q: How many concurrent users can a single Tinode server handle?** A: A single instance can handle thousands of concurrent connections. Cluster mode scales further. **Q: Does Tinode support end-to-end encryption?** A: Tinode provides TLS for transport encryption. Client-side E2E encryption is not built in but can be layered on top. **Q: Can I build custom clients using the Tinode protocol?** A: Yes. Client libraries are available for Go, Python, Java, Swift, and JavaScript with full protocol documentation. ## Sources - https://github.com/tinode/chat - https://tinode.co/ --- Source: https://tokrepo.com/en/workflows/asset-0d8bad29 Author: Script Depot