MiroTalk SFU: Recording not possible?
-
Implemented in MiroTalk SFU v2.0.14 —
Docker image is building now (available in ~1 hour).For Cloudron deployments, server-side recording should now work using the following configuration:
Recording
RECORDING_ENABLED=true RECORDING_DIR='../data/rec' # Path relative to /app/code → resolves to /app/data/rec RECORDING_MAX_FILE_SIZE=1073741824 # Max file size in bytes (default: 1GB)RTMP
RTMP_DIR='../data/rtmp' # Path relative to /app/code → resolves to /app/data/rtmpNote
If the target directories do not exist, MiroTalk SFU will automatically create them at runtime, just like before.
Cloudron automatically mounts
/app/data, so using../data/...ensures the app writes to the persistent, writable directory. -
New package is out. Thanks for all the work @mirotalk-57bab571 and being so proactive here!
@nebulon said in MiroTalk SFU: Recording not possible?:
New package is out. Thanks for all the work @mirotalk-57bab571 and being so proactive here!
Good! I’m always here to help. Thanks to Cloudron for trusting MiroTalk and supporting us! By the way, I love the new Cloudron UI v.9.0.10, it looks amazing!
-
Hi @nebulon @mirotalk-57bab571
So, i'm still unable to boot up the app after settingRECORDING_ENABLED=true:Nov 15 09:36:54 node:fs:1364 Nov 15 09:36:54 const result = binding.mkdir( Nov 15 09:36:54 ^ Nov 15 09:36:54 2025-11-15T04:06:54Z Nov 15 09:36:54 Error: ENOENT: no such file or directory, mkdir '/app/code/app/rec/' Nov 15 09:36:54 at Object.mkdirSync (node:fs:1364:26) Nov 15 09:36:54 at Object.<anonymous> (/app/code/app/src/Server.js:280:12) Nov 15 09:36:54 at Module._compile (node:internal/modules/cjs/loader:1554:14) Nov 15 09:36:54 at Object..js (node:internal/modules/cjs/loader:1706:10) Nov 15 09:36:54 at Module.load (node:internal/modules/cjs/loader:1289:32) Nov 15 09:36:54 at Function._load (node:internal/modules/cjs/loader:1108:12) Nov 15 09:36:54 at TracingChannel.traceSync (node:diagnostics_channel:322:14) Nov 15 09:36:54 at wrapModuleLoad (node:internal/modules/cjs/loader:220:24) Nov 15 09:36:54 at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:170:5) Nov 15 09:36:54 at node:internal/main/run_main_module:36:49 { Nov 15 09:36:54 errno: -2, Nov 15 09:36:54 code: 'ENOENT', Nov 15 09:36:54 syscall: 'mkdir', Nov 15 09:36:54 path: '/app/code/app/rec/' Nov 15 09:36:54 } Nov 15 09:36:54 2025-11-15T04:06:54Z Nov 15 09:36:54 Node.js v22.14.0 Nov 15 09:36:54 \ -
Hi @nebulon @mirotalk-57bab571
So, i'm still unable to boot up the app after settingRECORDING_ENABLED=true:Nov 15 09:36:54 node:fs:1364 Nov 15 09:36:54 const result = binding.mkdir( Nov 15 09:36:54 ^ Nov 15 09:36:54 2025-11-15T04:06:54Z Nov 15 09:36:54 Error: ENOENT: no such file or directory, mkdir '/app/code/app/rec/' Nov 15 09:36:54 at Object.mkdirSync (node:fs:1364:26) Nov 15 09:36:54 at Object.<anonymous> (/app/code/app/src/Server.js:280:12) Nov 15 09:36:54 at Module._compile (node:internal/modules/cjs/loader:1554:14) Nov 15 09:36:54 at Object..js (node:internal/modules/cjs/loader:1706:10) Nov 15 09:36:54 at Module.load (node:internal/modules/cjs/loader:1289:32) Nov 15 09:36:54 at Function._load (node:internal/modules/cjs/loader:1108:12) Nov 15 09:36:54 at TracingChannel.traceSync (node:diagnostics_channel:322:14) Nov 15 09:36:54 at wrapModuleLoad (node:internal/modules/cjs/loader:220:24) Nov 15 09:36:54 at Function.executeUserEntryPoint [as runMain] (node:internal/modules/run_main:170:5) Nov 15 09:36:54 at node:internal/main/run_main_module:36:49 { Nov 15 09:36:54 errno: -2, Nov 15 09:36:54 code: 'ENOENT', Nov 15 09:36:54 syscall: 'mkdir', Nov 15 09:36:54 path: '/app/code/app/rec/' Nov 15 09:36:54 } Nov 15 09:36:54 2025-11-15T04:06:54Z Nov 15 09:36:54 Node.js v22.14.0 Nov 15 09:36:54 \@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.
-
I restarted the updated app, but i still get only this:

No
recfolder available, and no default recording taking place.
-
It seems like 2 separate updated packages have been released for this.
Just came across the 2nd one and updated the app again.- The
recfolder is now available in/app/data/ - All recordings are still being saved on the local device only. No server-side recording. No S3 recording.
- The
-
It seems like 2 separate updated packages have been released for this.
Just came across the 2nd one and updated the app again.- The
recfolder is now available in/app/data/ - All recordings are still being saved on the local device only. No server-side recording. No S3 recording.
Hello @shrey
I have just updated my Mirotalk SFU app and now the recordings are stored inside the Mirotalk SFU app in/app/data/rec/.
Please share your/app/data/envfile.
With the updated app and a fresh installed app the recording works.
In a meeting I can do:


ls -lah /app/data/rec/ total 5.2M drwxr-xr-x 2 cloudron cloudron 4.0K Nov 15 09:46 . drwxr-xr-x 3 cloudron cloudron 4.0K Nov 15 09:44 .. -rw-r--r-- 1 cloudron cloudron 5.2M Nov 15 09:46 Rec_09598YoungSpid_2025_11_15_10_45_32_e0005370-10dd-4487-a68e-cff4d94f274d.webm - The
