README

MiroTalk C2C - Open Source Self-Hosted WebRTC 1-to-1 Video Calling

Self-hosted, open-source WebRTC cam-to-cam peer-to-peer video calling for private 1-to-1 real-time communication, with screen sharing and end-to-end encryption.


GitHub Stars GitHub Forks

License: AGPLv3 Docker Pulls Last Commit Discord Author


MiroTalk C2C is a self-hosted, open-source WebRTC platform for secure cam-to-cam peer-to-peer video calls and screen sharing. It enables immersive 1-to-1 real-time communication with full end-to-end encryption and can be easily embedded into any website via a simple iframe integration.

Try Live Demo · Privacy · Documentation · Discord · Sponsor


MiroTalk C2C - Cam-2-Cam Video Calls



⚡ Quick start

Start in 6 commands:

git clone https://github.com/miroslavpejic85/mirotalkc2c.git
cd mirotalkc2c
cp .env.template .env
cp frontend/js/config.template.js frontend/js/config.js
npm install
npm start

Open http://localhost:8080 - done!

🖼️ Camera backgrounds

In Settings > Video > Background, select Off, Blur, or Image. PNG, JPEG, and WebP images up to 10 MB are processed locally in your browser and are not uploaded. Effects appear in the camera preview, outgoing camera video, and camera recordings. Screen sharing is unaffected unless the camera is shown over the shared screen (see below); the selected effect resumes when returning to the camera. Background changes are blocked while recording.

Effects require WebGL2 and canvas stream capture; blur also requires canvas filter support. MediaPipe Tasks Vision 0.10.21 and its WASM files are lazy-loaded from jsDelivr, and the selfie segmentation model (version 1) is loaded from Google Storage. These hosts must be reachable and allowed by any custom CSP, including WASM execution. Processing failures fall back to the original camera.

Effect output is capped at 1280 x 720 and 15 FPS. Off uses the original camera without processing. Performance varies by device, and background tabs may throttle rendering. Image selections are not persisted across page reloads.

🎥 Camera while sharing screen

In Settings > Video > Camera while sharing screen, pick a corner (Bottom right, Bottom left, Top right, Top left) to show your camera as a picture-in-picture bubble over your shared screen, or Off (default) to share the screen only. The bubble is drawn in your browser and sent together with the screen as a single video, so the other participant and recordings see it without any extra setup. The corner can be changed while sharing; turning it on mid-share applies the next time you share.

The bubble is shown only if your camera is on when you start sharing, and keeps the selected camera background effect. The composed video is capped at 1920 x 1080 and 30 FPS, uses a bit more CPU than plain screen sharing, and needs canvas stream capture (it falls back to the plain screen when unavailable). Desktop browsers only.

🐳 Docker

docker

Prerequisites: Install Docker Engine and Docker Compose - Image available on Docker Hub

git clone https://github.com/miroslavpejic85/mirotalkc2c.git
cd mirotalkc2c
cp .env.template .env
cp frontend/js/config.template.js frontend/js/config.js
cp docker-compose.template.yml docker-compose.yml
docker-compose pull    # optional: pull official image
docker-compose up      # add -d to run in background

Open http://localhost:8080 - done!

Note: Edit .env, frontend/js/config.js, and docker-compose.yml to customize your setup. frontend/js/config.js is sent to the browser, so never put secrets in it.

📚 Documentation

For detailed guides and references, visit the official documentation:

☁️ Recommended Hosting Providers
Provider Description Link
Hetzner High-performance cloud servers and dedicated root servers with top-tier reliability. Powers our live demo. Explore Hetzner
Netcup Enterprise-grade performance at unbeatable prices. Scalable and reliable. Explore Netcup
Hostinger Fast, reliable hosting with 24/7 support and great performance. Check out Hostinger
Contabo Top-tier German hosting, dedicated servers, VPS, and web hosting at unbeatable prices. Explore Contabo

To set up your own instance of MiroTalk C2C on a dedicated cloud server, please refer to our comprehensive self-hosting documentation.

🤝 Contributing

Contributions are welcome and greatly appreciated! Whether it’s bug fixes, features, or documentation - every contribution helps.

  1. Fork the repository
  2. Create your feature branch
  3. Submit a pull request

Have questions? Join our Discord community!

📄 License

AGPLv3

MiroTalk C2C is free and open-source under the terms of AGPLv3 (GNU Affero General Public License v3.0). Please respect the license conditions, In particular modifications need to be free as well and made available to the public. Get a quick overview of the license at Choose an open source license.

To obtain a MiroTalk C2C license with terms different from the AGPLv3, you can conveniently make your purchase on CodeCanyon. This allows you to tailor the licensing conditions to better suit your specific requirements.

❤️ Support the project

Do you find MiroTalk C2C indispensable for your needs? Join us in supporting this transformative project by becoming a backer or sponsor. By doing so, not only will your logo prominently feature here, but you’ll also drive the growth and sustainability of MiroTalk C2C. Your support is vital in ensuring that this valuable platform continues to thrive and remain accessible for all. Make an impact – back MiroTalk C2C today and be part of this exciting journey!


🌐 Explore the full MiroTalk suite (SFU, P2P, BRO, C2C, WEB, CME, ADM) → MiroTalk Overview


Star History Chart

Built with ❤️ by Miroslav and the open-source community

评论

暂无评论