# Technical Documentation: miroslavpejic85/mirotalk

> ℹ️ **Provenance:** Multi-Tier Ingestion · [CodeWiki Reference](https://codewiki.google/github.com/miroslavpejic85/mirotalk)

### Overview (`README.md`)

<div align="center">
    <a href="https://p2p.mirotalk.com" target="_blank">
        <img src="public/images/mirotalk-icon.png">
    </a>
</div>

<h1 align="center">MiroTalk P2P - Open Source Self-Hosted WebRTC P2P Video Conferencing</h1>

<h3 align="center">Open Source Peer-to-Peer Video Conferencing You Can Self-Host in Minutes</h3>

<h4 align="center">Free, Secure, Fast Real-Time Communication - up to 8K, 60fps. Works in All Browsers and Platforms.</h4>

<br />

<div align="center">

[](https://github.com/miroslavpejic85/mirotalk/stargazers)
[](https://github.com/miroslavpejic85/mirotalk/network/members)

<a href="https://choosealicense.com/licenses/agpl-3.0/"></a>
<a href="https://hub.docker.com/r/mirotalk/p2p"></a>
<a href="https://github.com/miroslavpejic85/mirotalk/commits/master"></a>
<a href="https://discord.gg/rgGYfeYW3N"></a>
<a href="https://www.linkedin.com/in/miroslav-pejic-976a07101/"></a>

</div>

<br />

<p align="center"><strong>MiroTalk P2P</strong> is a <strong>self-hosted, open-source video conferencing</strong> platform using direct <strong>peer-to-peer WebRTC connections</strong> for fast, secure, real-time communication. Deploy on your own server in minutes. Enjoy unlimited rooms, no time limits, end-to-end privacy, and a rich feature set - all under your control.</p>

<p align="center">
    <a href="https://p2p.mirotalk.com">Try Live Demo</a> · <a href="https://p2p.mirotalk.com/privacy">Privacy</a> · <a href="https://docs.mirotalk.com/mirotalk-p2p/self-hosting/">Documentation</a> · <a href="https://discord.gg/rgGYfeYW3N">Discord</a> · <a href="https://github.com/sponsors/miroslavpejic85">Sponsor</a>
</p>

<br />

<p align="center">
    <a href="https://p2p.mirotalk.com/">
        <img src="public/images/mirotalk-github.gif" alt="MiroTalk P2P - Open Source Video Conferencing">
    </a>
</p>

<p align="center">Proudly sponsored by</p>

<h1 align=center><a href="https://www.recall.ai/?utm_source=github&utm_medium=sponsorship&utm_campaign=miroslavpejic85-mirotalk">Recall.ai</a> - API for meeting recording</h1>
<p align="center">An API for recording Zoom, Google Meet, Microsoft Teams, and in-person meetings.</p>

<hr />

<br />

<details>
<summary>✨ Why MiroTalk P2P?</summary>

<br/>

|                    | MiroTalk P2P                                                                                                                                        | Other Solutions             |
| ------------------ | --------------------------------------------------------------------------------------------------------------------------------------------------- | --------------------------- |
| 💰 **Cost**        | Free & Open Source (AGPLv3). [One-time fee licenses](https://codecanyon.net/item/mirotalk-p2p-webrtc-realtime-video-conferences/38376661) available | Paid plans                  |
| 🏠 **Self-hosted** | ✅ Full control over your data                                                                                                                      | ❌ Cloud only               |
| 🔒 **Privacy**     | Your server, your rules                                                                                                                             | Third-party data processing |
| ⏱️ **Time limits** | Unlimited                                                                                                                                           | 40-60 min on free tiers     |
| 🏢 **Rooms**       | Unlimited concurrent rooms                                                                                                                          | Limited                     |
| 🎥 **Resolution**  | Up to 8K @ 60fps                                                                                                                                    | Up to 1080p                 |
| 🌍 **Languages**   | 133 languages                                                                                                                                       | ~30-80                      |
| 🔌 **API**         | Full REST API included                                                                                                                              | Paid add-on                 |
| 🤖 **AI Features** | ChatGPT (OpenAI) integration                                                                                                                        | Paid AI add-ons             |
| 🧩 **Rebrand**     | Full source code, white-label ready                                                                                                                 | Limited branding options    |
| 📦 **Deploy**      | Docker, Node.js, one-click install                                                                                                                  | N/A (SaaS only)             |

</details>

<details>
<summary>🚀 Features</summary>

<br/>

- 🎥 Video up to **8K @ 60fps** · Screen sharing · Recording · Picture-in-Picture
- 💬 Chat with Markdown & emoji · Collaborative whiteboard · File sharing
- 🤖 ChatGPT (OpenAI) integration · Speech recognition
- 🔒 OIDC auth · [Host protection](https://docs.mirotalk.com/mirotalk-p2p/host-protection/) · JWT credentials · Room passwords · Peer-to-peer encryption
- 🔌 REST API · Slack & Mattermost · Embeddable [iframe](https://docs.mirotalk.com/mirotalk-p2p/integration/#iframe) & [widget](https://docs.mirotalk.com/mirotalk-p2p/integration/#widgets-integration) · 133 languages

**[See all features →](https://docs.mirotalk.com/overview/)**

</details>

<details open>
<summary>⚡ Quick start</summary>

<br/>

**Start in 6 commands:**

```bash
git clone https://github.com/miroslavpejic85/mirotalk.git
cd mirotalk
cp .env.template .env
cp app/src/config.template.js app/src/config.js
npm install
npm start
```

Open [http://localhost:3000](http://localhost:3000) - done!

</details>

<details>
<summary>🖼️ Camera backgrounds</summary>

In **Settings > Video > Background**, select **Off**, **Blur**, or **Image**. Local PNG, JPEG, and WebP images up to 10 MB are processed in your browser and are not uploaded. Effects appear in your camera preview, outgoing camera video, and camera recordings. Screen sharing remains unaffected, including when sharing your camera and screen together.

Background controls are also available in prejoin and the quick video menu. Select **Image**, then use the file picker (or **Choose image** in the quick video menu) to choose or replace an image. The selected filename stays synchronized between prejoin and Video settings.

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 permitted by any custom CSP (including WASM execution). Failures fall back to the camera without effects.

Effect output is capped at 1280 x 720 and 15 FPS. Off uses the original camera track without processing. Performance varies by device; background tabs may throttle rendering.

</details>

<details>
<summary>🐳 Docker</summary>

<br/>



**Prerequisites:** Install [Docker Engine](https://docs.docker.com/engine/install/) and [Docker Compose](https://docs.docker.com/compose/install/) - Image available on [Docker Hub](https://hub.docker.com/r/mirotalk/p2p)

```bash
git clone https://github.com/miroslavpejic85/mirotalk.git
cd mirotalk
cp .env.template .env
cp app/src/config.template.js app/src/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:3000](http://localhost:3000) - done!

> **Note:**
> Edit `app/src/config.js`, `.env`, and `docker-compose.yml` to customize your setup.

</details>

<details>
<summary>📚 Documentation</summary>

<br/>

For detailed guides and references, visit the **[official documentation](https://docs.mirotalk.com)**:

- [Our Story](https://docs.mirotalk.com/story/)
- [About](https://docs.mirotalk.com/mirotalk-p2p/)
- [Self-Hosting Guide](https://docs.mirotalk.com/mirotalk-p2p/self-hosting/)
- [Automation-scripts](https://docs.mirotalk.com/scripts/about/)
- [Configurations](https://docs.mirotalk.com/mirotalk-p2p/configurations/)
- [Rebranding](https://docs.mirotalk.com/mirotalk-p2p/rebranding/)
- [Host Protection Mode](https://docs.mirotalk.com/mirotalk-p2p/host-protection/)
- [Integration](https://docs.mirotalk.com/mirotalk-p2p/integration/)
- [Direct Room Join](https://docs.mirotalk.com/mirotalk-p2p/join-room/)
- [REST API Documentation](https://docs.mirotalk.com/mirotalk-p2p/api/)
- [Ngrok](https://docs.mirotalk.com/mirotalk-p2p/ngrok/)
- [Updates](https://docs.mirotalk.com/mirotalk-p2p/updates/)
- [WebHook](https://docs.mirotalk.com/mirotalk-p2p/webhook/)

</details>

<details open>
<summary>☁️ Recommended Hosting Providers</summary>

<br/>

| Provider                                                                                       | Description                                                                                                                                             | Link                                                                |
| ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------- |
| [](https://www.cloudron.io/)                          | One-click install from the [Cloudron App Store](https://www.cloudron.io/store/index.html). Automates deployment, updates, backups, and user management. | [Get Started](https://www.cloudron.io/)                             |
| [](https://www.hetzner.com)                             | High-performance cloud servers and dedicated root servers with top-tier reliability. Powers our live demo.                                              | [Explore Hetzner](https://www.hetzner.com/cloud)                    |
| [](https://www.netcup.com/en/?ref=309627)                 | Enterprise-grade performance at unbeatable prices. Scalable and reliable.                                                                               | [Explore Netcup](https://www.netcup.com/en/?ref=309627)             |
| [](https://hostinger.com/?REFERRALCODE=MIROTALK) | Fast, reliable hosting with 24/7 support and great performance.                                                                                         | [Check out Hostinger](https://hostinger.com/?REFERRALCODE=MIROTALK) |
| [](https://www.dpbolvw.net/click-101027391-14462707) | Top-tier German hosting, dedicated servers, VPS, and web hosting at unbeatable prices.                                                                  | [Explore Contabo](https://www.dpbolvw.net/click-101027391-14462707) |

To set up your own instance of `MiroTalk P2P` on a dedicated cloud server, please refer to our comprehensive [self-hosting documentation](https://docs.mirotalk.com/mirotalk-p2p/self-hosting/).

</details>

<details>
<summary>🙏 Credits</summary>

<br/>

- ianramzy (html [template](https://cruip.com/demos/neon/))
- vasanthv (webrtc-logic)
- fabric.js (whiteboard)
- [DiceBear](https://www.dicebear.com/) (random avatars)
- [Image by ddraw on Freepik](https://www.freepik.com/free-vector/collection-female-male-avatars_1105371.htm) (avatar illustrations)

</details>

<details>
<summary>🤝 Contributing</summary>

<br/>

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. Run `npm run lint` before committing
4. Submit a pull request

Have questions? Join our [Discord community](https://discord.gg/rgGYfeYW3N)!

</details>

<details>
<summary>📄 License</summary>

<br/>

[](LICENSE)

MiroTalk P2P 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](https://choosealicense.com/licenses/agpl-3.0/).

To obtain a [MiroTalk P2P license](https://docs.mirotalk.com/license/licensing-options/) with terms different from the AGPLv3, you can conveniently make your [purchase on CodeCanyon](https://codecanyon.net/item/mirotalk-p2p-webrtc-realtime-video-conferences/38376661). This allows you to tailor the licensing conditions to better suit your specific requirements.

</details>

<details open>
<summary>❤️ Support the project</summary>

<br/>

Do you find MiroTalk P2P indispensable for your needs? Join us in supporting this transformative project by [becoming a backer or sponsor](https://github.com/sponsors/miroslavpejic85). By doing so, not only will your logo prominently feature here, but you'll also drive the growth and sustainability of MiroTalk P2P. Your support is vital in ensuring that this valuable platform continues to thrive and remain accessible for all. Make an impact - back MiroTalk P2P today and be part of this exciting journey!

|                                                                                |                                                                                                                    |                                                                                                                                   |
| ------------------------------------------------------------------------------ | ------------------------------------------------------------------------------------------------------------------ | --------------------------------------------------------------------------------------------------------------------------------- |
| [](https://evoplat.com)                 | [](https://cloudron.io)                                                   | [](https://effectssdk.ai/)                                                           |
| [](https://www.questionpro.com) | [](https://www.testmuai.com/?utm_medium=sponsor&utm_source=mirotalk) | [](https://www.browserstack.com)                                                 |
| [](https://crystalsound.ai)   | [](https://www.netcup.com/en/?ref=309627)                                     | [](https://www.liveavatar.com/?utm_medium=sponsership&utm_campaign=mirotalk) |
| [](https://www.apismart.ai)           |                                                                                                                    |                                                                                                                                   |

</details>

<details>
<summary>🙏 Past Sponsors</summary>

<br/>

We are grateful to our past sponsors for their support!

|                                                                              |                                                                 |                                                                         |
| ---------------------------------------------------------------------------- | --------------------------------------------------------------- | ----------------------------------------------------------------------- |
| [](https://www.hetzner.com/cloud) | [](https://kiquix.com) | [](https://broadcastx.de/) |
| [](https://luvlounge.ca)          |                                                                 |                                                                         |

</details>

<details>
<summary>📢 Advertisers</summary>

---

|                                                                                                |                                                                                                |                                                                                 |
| ---------------------------------------------------------------------------------------------- | ---------------------------------------------------------------------------------------------- | ------------------------------------------------------------------------------- |
| [](https://hostinger.com/?REFERRALCODE=MIROTALK) | [](https://www.dpbolvw.net/click-101027391-14462707) | [](https://rambox.app?via=mirotalk) |

---

</details>

<details open>
<summary>✨ EffectsSDK</summary>

[](https://effectssdk.ai/)

Enhance your video conferencing with **advanced virtual backgrounds** and **noise suppression**. EffectsSDK offers powerful SDKs and plugins for fast integration.

- 🎥 [AI Video Effects Extension](https://chromewebstore.google.com/detail/effetti-webcam-ai-+-regis/iedbphhbpflhgpihkcceocomcdnemcbj): Virtual backgrounds and effects for your webcam
- 🔊 [Noise Cancelling Extension](https://chromewebstore.google.com/detail/noise-cancelling-app/njmhcidcdbaannpafjdljminaigdgolj): Clearer audio with background noise reduction
- 🛠️ [Integrate EffectsSDK](https://github.com/EffectsSDK): SDKs and plugins for custom solutions

</details>

<br />

---

This project is tested with [BrowserStack](https://www.browserstack.com).

---

<p align="center">🌐 Explore the full MiroTalk suite (SFU, P2P, BRO, C2C, WEB, CME, ADM) → <a href="https://docs.mirotalk.com/sites/overview/"><strong>MiroTalk Overview</strong></a></p>

---

<p align="center">
  Built with ❤️ by <a href="https://www.linkedin.com/in/miroslav-pejic-976a07101/">Miroslav</a> and the open-source community
</p>

<h2 align="center">Contributors</h2>

<p align="center">Thanks to all the amazing people who have contributed to MiroTalk P2P 💙</p>

<p align="center">
  <a href="https://github.com/miroslavpejic85/mirotalk/graphs/contributors">
    <img src="https://contrib.rocks/image?repo=miroslavpejic85/mirotalk" />
  </a>
</p>

---

### Overview (`coturn/README.md`)

# CoTURN Setup Guide

Set up `CoTURN` with Docker for NAT traversal and media relay in WebRTC applications.

---

## Installation Steps

### 1. Prepare Docker Compose

1. Copy the template:
    ```bash
    cp docker-compose.template.yml docker-compose.yml
    ```
2. Edit `docker-compose.yml` to fit your environment.
3. Use Let's Encrypt and Certbot for SSL certificates. Replace `YOUR.DOMAIN` in `docker-compose.yml` with your actual domain name.
    - Learn more about Let's Encrypt: [Click here](https://letsencrypt.org/).
    - Learn more about Certbot: [Click here](https://certbot.eff.org/).

### 2. Configure TURN Server

1. Copy the template:
    ```bash
    cp turnserver.template.conf turnserver.conf
    ```
2. Edit `turnserver.conf`:
    - Replace `YOUR.DOMAIN.NAME` with your domain.
    - Replace `YOUR.USERNAME` and `YOUR.PASSWORD` with your credentials.

    Example:

    ```text
    server-name=example.com
    realm=example.com
    user=username:password
    ```

### 3. Verify Files

Ensure `turnserver.conf` and `docker-compose.yml` are in the same directory.

### 4. Start the Server

Run:

```bash
docker-compose up -d
```

### 5. Check Logs (Optional)

Check logs to verify the server:

```bash
docker-compose logs -f <service_name>
```

---

## Notes

- Open ports (e.g., 3478, 5349 for TURN) on your firewall.
- Use secure credentials.
- Test with a WebRTC application.

For more, visit the [official documentation](https://docs.mirotalk.com/coturn/installation/).

---

### Overview (`kubernetes/README.md`)

# k8s deployment



## TLDR; and do not care way

```bash
$ make
$ sed -i s/localhost/myshinydomain.tld/g env.txt
$ make prepare
$ make deploy
```

# Understanding way

If you would like to deploy Mirotalk to kubernetes
this set of files can help you in that task

Bellow is explanation of files in this folder which will form one output file in `output` folder

## ../.env.template and your file env.txt that you should prepare

Configuration file that is for now used to configure deployment
you should copy `../.env.template` to current directory as `env.txt` and edit values inside to your liking

```bash
$ cp ../.env.template env.txt
```

Change values (if nothing else **HOST** variable must be changed so your ingress would recognize it and send requests to your deployed application),
if you do not have public domain you can use free service called [nip.io](https://nip.io/) with domain like `p2p.192-168-1-1.nip.io` (or [sslip.io](https://sslip.io/))

```bash
$ sed -i s/localhost/myshinydomain.tld/g env.txt
```

## p2p-deployment.yaml

Main deployment file where you change image file if you would like to use yours if not official one (`image`: tag)

## p2p-cert.yaml

This file represent definition of certificate (request) when using [Cert Manager](https://cert-manager.io/) to generate letsencrypt or private certificates for your domain will be pulled out from `env.txt`

## p2p-ingress.yaml

This is generic ingress object in kubernetes that is responsible to route external traffic to mirotalk deployed application and if used in conjuction with p2p-cert.yaml (default) will provide TLS enabled access to your mirotalk instance

## p2p-service.yaml

Service required for ingress to be able to know how to access deployment

## Makefile

Helper file that allows running it to configure application how you would like

after creating and changing configuration file (`env.txt`) run these two tasks, prepare will create deployment file
and deployment will create configMap from prepared `env.txt` file.

Please run after reading all this:

```bash
$ make
# edit env.txt or use sed as in TLDR section :)
$ make prepare
$ make deploy
```

---

### Overview (`webhook/README.md`)

# Webhooks Example



This example shows how to set up a server to listen for MiroTalk P2P webhook events (join, disconnect).

### Step 1: Enable Webhooks

Edit `app/src/config.js` to enable webhooks:

```javascript
webhook: {
    enabled: true, // Enable webhook functionality
    url: 'http://localhost:8888/webhook-endpoint', // Webhook server URL
},
```

---

### Step 2: Run the Webhook Server

1. **Install dependencies**:

    ```bash
    npm install
    ```

2. **Start the server**:

    ```bash
    npm start
    ```

---

### Step 3: Webhook Events

MiroTalk P2P sends HTTP `POST` requests to the specified URL with event data:

**Example Payload**:

```json
{
    "event": "join",
    "data": {}
}
```

- **Events**: `join`, `disconnect`.
- **Data**: Includes `event` and custom `data`.

---

### Overview (`widgets/README.md`)

# MiroTalk Widgets



---

This directory contains embeddable example widgets for MiroTalk that can be integrated into any website or application.

---

### Overview (`app/api/README.md`)

## Create a Meeting

To initiate a meeting, send an HTTP request to MiroTalk’s server with your API key. Replace the default secret key in `.env` with your own.

```bash
API_KEY_SECRET=mirotalkp2p_default_secret
```

Use the following examples to make API calls:

```bash
# Node.js
node meeting.js
node join.js
node token.js

# PHP
php meeting.php
php join.php
php token.php

# Python
python3 meeting.py
python3 join.py
python3 token.py # rename token in something else

# Bash
./meeting.sh
./join.sh
./token.sh
```

The server response will contain a meeting URL that can be embedded in your client using an iframe.

---

## Embed a Meeting

To embed a meeting in your service or app, use an iframe with the source attribute set to the meeting URL obtained from the HTTP response.

```html
<iframe
    allow="camera; microphone; speaker-selection; display-capture; fullscreen; clipboard-read; clipboard-write; web-share; autoplay; picture-in-picture"
    src="https://p2p.mirotalk.com/join/test"
    style="height: 100vh; width: 100vw; border: 0px;"
></iframe>
```

---

## Fast Integration

Integrate video meetings into your website or application quickly by incorporating the following iframe code:

```html
<iframe
    allow="camera; microphone; speaker-selection; display-capture; fullscreen; clipboard-read; clipboard-write; web-share; autoplay; picture-in-picture"
    src="https://p2p.mirotalk.com/newcall"
    style="height: 100vh; width: 100vw; border: 0px;"
></iframe>
```

---

### Overview (`app/ssl/README.md`)

## Expose MiroTalk on HTTPS



Generate a [self-signed certificate](https://en.wikipedia.org/wiki/Self-signed_certificate)

```bash
# install openssl 4 ubuntu
apt install openssl
# install openssl 4 mac
brew install openssl

# self-signed certificate
openssl genrsa -out key.pem
openssl req -new -key key.pem -out csr.pem
openssl x509 -req -days 9999 -in csr.pem -signkey key.pem -out cert.pem
rm csr.pem

# https://www.sslchecker.com/certdecoder
```

---

### Overview (`public/lang/README.md`)

# In-room UI translations

## Configuration

Set `brand.app.language` and `brand.app.translationMode` in your app
configuration; see [config.template.js](../../app/src/config.template.js). The
default language is `en`; the default translation mode is `google`.

| Mode     | Behavior                                                          |
| -------- | ----------------------------------------------------------------- |
| `google` | Use Google Translate; ignore native translation files.            |
| `auto`   | Use a native file when available; otherwise use Google Translate. |
| `native` | Use native files only; untranslated text remains English.         |

In a room, users can override the translation mode from **Settings > Language**.
The mode override is persisted in browser local storage and reused in
subsequent rooms on the same browser.
When users change translation mode, the app shows a short notice and reloads
the page so the selected mode can be fully applied.

Mode override precedence is: `browser override` → server config default.

## Adding a language

1. Copy [en.json](./en.json) to a file named for the language code, such as
   `hu.json`.
2. Translate the values, keeping the English keys unchanged.
3. Add the language code, flag, and native name to `LANG_DISPLAY` in
   [i18n.js](../js/i18n.js). For right-to-left languages, also add the code to
   `RTL_LANGS`.
4. Set `brand.app.language` to the language code and
   `brand.app.translationMode` to `auto` or `native`.

## Namespaces

| Namespace  | Content                                     |
| ---------- | ------------------------------------------- |
| `tooltips` | Hover hints                                 |
| `buttons`  | Button text and attributes                  |
| `labels`   | Static text, headings, and label attributes |
| `dialogs`  | Popup titles, text, buttons, and inputs     |
| `toasts`   | Notifications                               |

## Fallback behavior

Missing namespaces, keys, or empty values use the original English text, so
translations can be added incrementally. Keep keys, including their punctuation
and casing, identical to the English source. Preserve placeholders such as
`{name}` in translated values.

In `auto` mode, Google Translate is used if the language file is unavailable.
When a native file is loaded, missing entries remain English; they do not fall
back individually to Google Translate.

## Synchronize translation keys

After changing in-room UI strings, run this from the repository root:

```bash
npm run lang
```

The script regenerates `en.json` and synchronizes other language files,
preserving existing translations, keeping keys in the same order as `en.json`,
adding missing keys with English values, and removing stale keys. Review the
changes before committing.

---

### Coturn (`docs/coturn.md`)

# Install Coturn STUN/TURN server

### What are STUN and TURN in the context of network communication?

[https://docs.mirotalk.com/coturn/stun-turn/](https://docs.mirotalk.com/coturn/stun-turn/)

### How can I set up and configure my own STUN and TURN servers?

[https://docs.mirotalk.com/coturn/installation/](https://docs.mirotalk.com/coturn/installation/)

---

---

### Ngrok (`docs/ngrok.md`)

# MiroTalk P2P - Ngrok

### What is the purpose and functionality of Ngrok?

[https://docs.mirotalk.com/ngrok/ngrok/](https://docs.mirotalk.com/ngrok/ngrok/)

### How to exposing MiroTalk P2P with Ngrok?

[https://docs.mirotalk.com/mirotalk-p2p/ngrok/](https://docs.mirotalk.com/mirotalk-p2p/ngrok/)

---

---

### Self Hosting (`docs/self-hosting.md`)

# MiroTalk P2P - Self Hosting

### How can I self-host MiroTalk P2P on my own server?

[https://docs.mirotalk.com/mirotalk-p2p/self-hosting/](https://docs.mirotalk.com/mirotalk-p2p/self-hosting/)

### Automation scripts

[https://docs.mirotalk.com/scripts/about/](https://docs.mirotalk.com/scripts/about/)

---

---

--- METRICS ---
- Files Extracted: 11
- Estimated Token Budget: ~7209 tokens
- Canonical Reference: https://codewiki.google/github.com/miroslavpejic85/mirotalk
