MeetAzi Stack is a customized, Iran-friendly, self-hosted deployment stack based on MiroTalk P2P.
This project keeps the core idea and foundation of MiroTalk, but packages it as MeetAzi with practical fixes and deployment changes for real-world self-hosting, especially on Windows Server and servers where access to external CDNs or global services may be limited.
❤️ Big shout-out to the original MiroTalk project and its contributors. MeetAzi exists because of the excellent work done in MiroTalk.
نسخه فارسی این مستندات در فایل زیر قرار دارد:
MeetAzi is a customized fork of MiroTalk focused on making browser-based video meetings easier to run on private infrastructure.
It is designed for cases where you want:
- A self-hosted WebRTC meeting system
- A deployment that works better on Iran-based servers
- Fewer runtime dependencies on external CDN resources
- Localized frontend assets
- A fixed and more stable chat/message experience
- TURN/STUN support for more reliable connectivity
- A Windows Server friendly setup
The project is structured as a full stack around the customized MiroTalk application, with TURN configuration and helper scripts included.
MeetAzi-Stack/
├── coturn/
│ └── turnserver.template.conf
│
├── node-turn/
│ ├── package.json
│ ├── package-lock.json
│ ├── server.js
│ └── start-node-turn.cmd
│
├── mirotalk/
│ └── mirotalk/
│ ├── app/
│ ├── public/
│ ├── tests/
│ ├── webhook/
│ ├── widgets/
│ ├── package.json
│ ├── package-lock.json
│ └── start-meetazi.cmd
│
├── .gitignore
├── README.md
└── README.fa.md
The original MiroTalk application has been customized and prepared under the MeetAzi name.
This includes frontend/UI changes, custom styles, localized assets, and deployment scripts for running the app as a dedicated MeetAzi instance.
One of the main goals of this fork is to make the application work without depending on external CDN resources as much as possible.
This is especially useful for:
- Iran-based servers
- Restricted networks
- Environments where external CDNs are slow, blocked, unstable, or unreliable
- Private/self-hosted deployments that should not depend on third-party asset delivery
Frontend assets and libraries have been localized where needed so the application can continue working even when external CDN access is limited.
This fork includes fixes and improvements around the MiroTalk chat/message experience.
The customized version focuses on:
- Fixing chat message sending issues
- Fixing message display/rendering issues
- Improving chat layout behavior
- Fixing placeholder and text display problems
- Making the in-meeting chat more stable and usable
MeetAzi was prepared with Iran-based server deployment in mind.
The changes focus on reducing common deployment problems such as:
- External CDN dependency
- TURN/STUN connectivity issues
- Network limitations affecting WebRTC behavior
- Need for local assets
- Need for a predictable Windows Server setup
- Need for deployable config templates instead of hard-coded secrets
The repository includes two TURN-related options:
A Coturn template is available at:
coturn/turnserver.template.conf
This template uses:
listening-port=3478
listening-ip=0.0.0.0
external-ip=CHANGE_ME
realm=CHANGE_ME
server-name=CHANGE_ME
user=meetazi:CHANGE_ME
min-port=49160
max-port=49200
Use this if you want to run a production-grade Coturn service.
A Node-based TURN helper exists at:
node-turn/server.js
The included startup file is:
node-turn/start-node-turn.cmd
This Node TURN setup listens on UDP port 3478 and uses a relay port range defined in server.js.
Important: Do not run Coturn and Node TURN on the same server/port at the same time unless you intentionally configure different ports. Both commonly use port
3478.
MeetAzi includes Windows .cmd startup scripts.
The main app script is:
mirotalk/mirotalk/start-meetazi.cmd
By default, it:
- Changes directory to
E:\apps\mirotalk\mirotalk - Sets
PORT=9907 - Creates
app/src/config.jsfromapp/src/config.template.jsif missing - Starts the app with Node.js
- Writes logs to
meetazi-autostart.log
The Node TURN startup script is:
node-turn/start-node-turn.cmd
It starts the Node TURN server and writes logs to node-turn-autostart.log.
Install the following before running the stack:
- Windows Server or Linux server
- Node.js
- npm
- Git
- A domain or subdomain pointing to your server
- Open firewall ports for the app and TURN server
- Optional but recommended: Coturn for production TURN service
For Windows Server, the included scripts assume Node.js is installed at:
C:\Program Files\nodejs\node.exe
git clone https://github.com/TheGreatAzizi/MeetAzi-Stack.git
cd MeetAzi-Stackcd mirotalk/mirotalk
npm installThe application package includes the standard MiroTalk start script:
npm startwhich runs:
node app/src/server.jsCopy the environment template:
copy .env.template .envcp .env.template .envThen edit .env and configure your domain, ports, TURN/STUN settings, authentication options, and deployment-specific values.
Also make sure app/src/config.js exists. The Windows startup script can create it automatically from:
app/src/config.template.js
From the app directory:
cd mirotalk/mirotalk
start-meetazi.cmdBy default, the script runs MeetAzi on:
PORT=9907
So your reverse proxy or firewall should point to this port if you keep the default script unchanged.
cd mirotalk/mirotalk
npm startor:
node app/src/server.jsWebRTC may require a TURN server when users are behind NAT, strict firewalls, mobile networks, or restricted networks. For Iran-based deployments, TURN is highly recommended.
- Copy the template:
copy coturn\turnserver.template.conf coturn\turnserver.conf- Edit these values:
external-ip=YOUR_SERVER_PUBLIC_IP
realm=turn.your-domain.com
server-name=turn.your-domain.com
user=meetazi:YOUR_STRONG_PASSWORD
- Open the required ports:
UDP 3478
UDP 49160-49200
- Configure your MeetAzi
.envor app config to use the TURN server.
- Go to the Node TURN directory:
cd node-turn
npm install- Edit
server.js:
externalIps
credentials
realm
- Start it on Windows:
start-node-turn.cmd- Make sure the required UDP ports are open.
The Node TURN server included here is useful for simple/self-hosted deployments. For production-grade TURN service, Coturn is usually the stronger option.
Depending on your configuration:
TCP 9907 MeetAzi app, if using the included Windows script
TCP 80/443 Reverse proxy / HTTPS
UDP 3478 TURN/STUN
UDP 49160-49200 Coturn relay range from the included template
UDP 49160-65000 Node TURN relay range from server.js, if using Node TURN
Use only the relay range that matches the TURN option you actually run.
This fork was prepared to reduce common issues when deploying MiroTalk-like WebRTC apps on Iran-based servers.
Recommended setup:
- Serve MeetAzi behind HTTPS
- Use a local TURN server
- Avoid external CDN dependencies
- Keep frontend assets local
- Open UDP TURN ports correctly
- Use a reverse proxy such as Nginx or IIS ARR if needed
- Keep
.env, certificates, and real TURN credentials private
Do not commit runtime secrets or generated files.
The .gitignore is configured to avoid committing common sensitive or heavy files such as:
.env
.env.*
node_modules/
*.log
cert.pem
key.pem
*.pem
*.key
*.crt
turnserver.conf
backup-*/
Template files are safe to keep in the repository:
.env.template
turnserver.template.conf
config.template.js
Before pushing changes, check:
git diff --cached --name-onlyMake sure no secrets, logs, certificates, private keys, or backup folders are staged.
MeetAzi Stack is based on MiroTalk P2P.
MiroTalk is an open-source WebRTC video conferencing project. This fork keeps credit to the original project and builds on top of it with deployment-focused customization, CDN-independent usage, chat/message fixes, TURN configuration, and Windows Server friendly scripts.
Special thanks to the original MiroTalk maintainers and contributors.
This project is a fork/customized deployment stack based on MiroTalk, which is licensed under the GNU Affero General Public License v3.0 (AGPL-3.0).
Because this project is based on AGPL-licensed software, the same license obligations may apply to this fork and to any modified versions distributed or offered as a network service.
Please review:
- The included
LICENSEfile - The original MiroTalk repository
- The full AGPL-3.0 license text
Original project: MiroTalk