Meet someone random. Talk instantly.
Random 1-on-1 video chat built with Node.js, Socket.IO, and WebRTC.
Live demo • Features • Quick Start • Docker • Configuration
- Random peer matching
- Video/audio chat over WebRTC
- Next match + end session
- Mic/camera toggle + hide self preview
- Device selection
- Virtual background support (blur and image)
- Queue, capacity, and anti-spam limits
- Mobile-friendly UI
cd mirotalkrnd
cp .env.template .env
npm install
npm startThen open: http://localhost:4010
In production, use HTTPS for camera/microphone permissions.
cp .env.template .env
cp docker-compose.template.yml docker-compose.yml
docker compose pull
docker compose up -dThen open: http://localhost:<PORT> (default 4010).
sudo ./install.shThe installer supports:
- Docker setup (with official image
mirotalk/rnd:latestor local build) - Local Node.js setup
Edit .env for your needs use .env.template as reference, then restart the server.
If you run behind one reverse proxy (for example Nginx), set TRUST_PROXY=1 so rate limiting uses the client IP from X-Forwarded-For. Numeric values specify the number of trusted proxy hops; use false when connecting directly. Avoid true: it trusts every forwarded address and triggers an express-rate-limit validation error. Ensure the app is accessible only through the proxy and the proxy overwrites X-Forwarded-For; all request paths must match the configured hop count. Restart the server (or recreate the Docker container) after changing .env. The setting is named TRUST_PROXY, not PROXY, and is independent of NODE_ENV.
npm start— start servernpm run dev— run with watch mode
This project is licensed under the GNU Affero General Public License v3.0. See LICENSE.
🌐 Explore the full MiroTalk suite (SFU, P2P, BRO, C2C, WEB, CME, ADM) → MiroTalk Overview
Built with ❤️ by Miroslav and the open-source community.