Also make sure that the firewall on your VPS/VDS is not enabled or blocking the required ports. For example, on Amazon EC2, if the inbound security group rules for the necessary RTC ports are not configured, the service will not work...
MiroTalk
Posts
-
Mirotalk - Participants can't see each other 2 -
Enabling the MiroTalk meetings API (success!)Thank you, @canadaduane for the great analysis!

In case it’s helpful, here are some examples of API usage in different languages:
- JavaScript
- PHP
- Python
- Bash
You can find full working examples here:
https://docs.mirotalk.com/mirotalk-sfu/api/ -
Thank you, Cloudron!@timconsidine said in Thank you, Cloudron!:
Tried out Mirotalk P2P and very pleased with it.
Thank you for a great product.Thanks for the kind words!
Glad you’re enjoying MiroTalk P2P. For larger meetings, you can also check out our MiroTalk SFU variant. -
Thank you, Cloudron! -
Thank you, Cloudron!As a token of appreciation for your continuous support of MiroTalk, we’ve also added a dedicated section to our official documentation:
https://docs.mirotalk.com/cloudron/cloudron/
We’ve also included acknowledgments on both of our GitHub repositories.

Sometimes it’s important to say thank you to those who truly deserve.
Wishing the entire Cloudron team and all MiroTalk supporters a great weekend ahead!
Best,
Miroslav -
Mirotalk - Participants can't see each other 2You're welcome.
It could also be that another app was using a port within the specified range, maybe not constantly, but whenever it needed it, causing a temporary conflict.
-
MiroTalk SFU: Recording not possible?Ops:
[Server] Rec Finalization error 'Invalid room ID'Edit: Done in
MiroTalk SFU v2.0.24 -
Mirotalk - Participants can't see each other 2@james said in Mirotalk - Participants can't see each other 2:
If a port in that range is used by another application, the mirotalk application will have issues.
You can try to enable the WebRtcServer feature by adding the following to your
envfile:SFU_SERVER=trueThen,
RESTART your instance.How it works:
- MiroTalk spawns
one Worker per CPU core by default. - Each Worker runs its own
WebRtcServeron a dedicated port. - Ports are assigned
sequentiallystarting from a base port (eg: 25000). - This approach keeps
port management simple: you only need to open as many ports as you have Workers.
Optional: You can manually set the number of Workers using:
SFU_NUM_WORKERS=4Example:
A server with 4 CPU cores (or 4 Workers) and a base port of 25000 will use the following ports:25000, 25001, 25002, 25003You only need to open these 4 ports on your firewall.
More about
here - MiroTalk spawns
-
MiroTalk SFU: Recording not possible?@shrey said in MiroTalk SFU: Recording not possible?:
Expectation:
Recording should get uploaded to S3 regardless of the path taken to 'stop' the meeting and without explicitly stopping the recording.
Done in MiroTalk SFU v.2.0.20 -
MiroTalk SFU: Recording not possible?@shrey said in MiroTalk SFU: Recording not possible?:
If, in Step 3:
i stop the Recording and then stop the meeting, then the Recording gets uploaded to S3.Thanks for pointing that out! I’ll take a look.
-
MiroTalk SFU: Recording not possible?
IMPORTANT Update in MiroTalk SFU v.2.0.19To avoid confusion, I’ve updated the environment variables and configuration keys to use a global
S3_prefix. This makes the configuration compatible with any S3-compatible storage, not just AWS.Example: DigitalOcean Spaces Configuration
# Recording RECORDING_UPLOAD_TO_S3=true # Upload recordings to S3-compatible storage (MinIO, Wasabi, DigitalOcean Spaces, etc.) (true|false) # S3-Compatible Storage Configuration S3_ENABLED=true # Enable S3-compatible storage (true/false) S3_ACCESS_KEY_ID=<key_id> # Access Key ID (optional if using instance credentials or IAM roles) S3_SECRET_ACCESS_KEY=<key_secret> # Secret Access Key (optional if using instance credentials or IAM roles) S3_BUCKET=<bucket> # Name of your bucket (must already exist) S3_REGION=<region> # Region or location (e.g., us-east-2, eu-west-2, or custom for non-AWS providers) S3_ENDPOINT=https://<region>.digitaloceanspaces.com # Custom endpoint for S3-compatible services (MinIO, Wasabi, DigitalOcean Spaces, etc.) S3_FORCE_PATH_STYLE=true # Use path-style URLs (true/false). Typically true for non-AWS providersNotes:
S3_ENDPOINTis optional if your provider supports automatic resolution from the region.S3_FORCE_PATH_STYLE=trueis usually required for providers like MinIO, Wasabi, or DigitalOcean Spaces.
-
MiroTalk SFU: Recording not possible?Created on the fly, I can confirm that the previous configuration works as expected.

-
MiroTalk SFU: Recording not possible?@shrey said in MiroTalk SFU: Recording not possible?:
No idea. I'm yet to figure out why uploading to S3 (DigitalOcean Spaces) is not working for me.
I don’t have a DigitalOcean Space to test, but in case you want to try, you can add
AWS_REGIONto your environment config like this:RECORDING_UPLOAD_TO_S3=true # Enable uploading recordings to S3-compatible storage AWS_S3_ENABLED=true # Enable S3 storage integration AWS_S3_ENDPOINT=https://YOUR-REGION.digitaloceanspaces.com # DO Spaces endpoint (replace YOUR-REGION) AWS_S3_BUCKET=YOUR-BUCKET # Target bucket name AWS_ACCESS_KEY_ID=YOUR-DO-ACCESS-KEY # Your DO Spaces access key AWS_SECRET_ACCESS_KEY=YOUR-DO-SECRET-KEY # Your DO Spaces secret key AWS_REGION=YOUR-REGION # DO Spaces region (required) AWS_S3_FORCE_PATH_STYLE=true # Required for non-AWS S3 providers
Notes- Region: Must match your Space’s region (
nyc3,ams3,sgp1, etc.). - Endpoint: Must include the full URL with
https://. - MiroTalk SFU: Make sure to use at last the
v2.0.17
- Region: Must match your Space’s region (
-
MiroTalk SFU: Recording not possible?@shrey said in MiroTalk SFU: Recording not possible?:
AWS_S3_ENDPOINT=https://<region>.digitaloceanspaces.com
Just out of curiosity, on DigitalOcean, the web video preview work there?
I'm going also to add also the correct
contentTypewhen the recording is uploaded to any S3-compatible storage to avoid MIME-type issues. -
MiroTalk SFU: Recording not possible?By the way, I opened an issue for MinIO here: https://github.com/minio/minio/issues/21694
It would be great if MinIO could properly show previews for .webm videos as well.
When I store the same recording in a rec folder in Cloudron, the video preview works correctly.
However, when the file is stored in MinIO storage, the preview does not work.It looks like the MIME type is not detected correctly, which causes the video tag to use:
type="video/mp4"even though the file is actually a
.webm.
This prevents browsers from playing the video.Proper support for serving
.webmwithContent-Type: video/webmwould fix the issue. -
MiroTalk SFU: Recording not possible?@james said in MiroTalk SFU: Recording not possible?:
PR created @mirotalk-57bab571 https://github.com/miroslavpejic85/mirotalksfu/pull/228
Ops, you’re right, good catch! PR accepted. Thanks for confirming that everything works as expected. MiroTalk SFU can now upload recordings to any S3-compatible storage, not just AWS!

-
MiroTalk SFU: Recording not possible? -
MiroTalk SFU: Recording not possible?@james said in MiroTalk SFU: Recording not possible?:
Would it be possible to add the option to configure the S3Client endpoint config and S3Client forcePathStyle config?
So the goal is to avoid hard-coding support only for AWS S3.
To extend the configuration so it also supports any S3-compatible storage (MinIO, Wasabi, DigitalOcean Spaces, etc.), i need to add the following to the.envfile:AWS_S3_ENDPOINT= # e.g., http://localhost:9000 for MinIO AWS_S3_FORCE_PATH_STYLE=false # Set to true for S3-compatible servicesThen expose these values in
config.js:aws: { // ... endpoint: process.env.AWS_S3_ENDPOINT || '', forcePathStyle: process.env.AWS_S3_FORCE_PATH_STYLE === 'true', },Finally, update the S3 client configuration in
Server.js:const s3Client = new S3Client({ // ... endpoint: config?.integrations?.aws?.endpoint || undefined, forcePathStyle: config?.integrations?.aws?.forcePathStyle === true, });With this setup, the application continues to work with AWS S3 as it currently does, but can also switch to any S3-compatible service simply by adjusting environment variables and no additional code changes required.
Sounds good to me! @James just confirm.
-
MiroTalk SFU: Recording not possible?@shrey said in MiroTalk SFU: Recording not possible?:
So, i'm still unable to boot up the app after setting RECORDING_ENABLED=true
Forget the previous env configuration. In the latest Cloudron commit, recording is enabled by default, and the
app/datapath now appears to be automatically resolved as well.
-
MiroTalk SFU: Recording not possible?PS: Thanks also to @James for his IT support and excellent debugging and suggestions.
