Cloudron makes it easy to run web apps like WordPress, Nextcloud, GitLab on your server. Find out more or install now.


Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • Bookmarks
  • Search
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo

Cloudron Forum

Apps | Demo | Docs | Install
  1. Cloudron Forum
  2. MiroTalk
  3. MiroTalk SFU: Recording not possible?

MiroTalk SFU: Recording not possible?

Scheduled Pinned Locked Moved MiroTalk
49 Posts 4 Posters 366 Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • jamesJ james

    I found the offending lines:

    https://github.com/miroslavpejic85/mirotalksfu/blob/e59b24bb37a7b19560a03de1a5abb5fb79a2c6b4/app/src/config.template.js#L961

                bucket: process.env.AWS_S3_BUCKET || 'mirotalk',
    

    https://github.com/miroslavpejic85/mirotalksfu/blob/e59b24bb37a7b19560a03de1a5abb5fb79a2c6b4/app/src/Server.js#L1118

                const bucket = config?.integrations?.aws?.bucket;
    

    This would mean the env would be AWS_S3_BUCKET and not AWS_S3_BUCKET_NAME.
    Confirmed with this env

    
    All config options at https://github.com/miroslavpejic85/mirotalksfu/blob/main/.env.template
    PRESENTERS=admin@cloudron.local
    EMAIL_SEND_TO=admin@cloudron.local
    STATS_ENABLED=false
    RECORDING_UPLOAD_TO_S3=true
    AWS_S3_ENABLED=true
    AWS_S3_ENDPOINT=https://minio-api.cloudron.dev
    AWS_S3_BUCKET_NAME=sfu
    AWS_S3_BUCKET=sfu
    AWS_S3_FORCE_PATH_STYLE=true
    AWS_ACCESS_KEY_ID=LJQVOTFR3DZDG1QPOL0Y
    AWS_SECRET_ACCESS_KEY=j6w8j73VF8NE9wzsi4aupJICTrn45I0MKIoYUCk9
    

    423a4072-aee5-4995-a69a-960f60ea1a42-image.png

    PR created @mirotalk-57bab571 https://github.com/miroslavpejic85/mirotalksfu/pull/228

    MiroTalkM Away
    MiroTalkM Away
    MiroTalk
    wrote last edited by
    #33

    @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! 💪

    1 Reply Last reply
    4
    • MiroTalkM Away
      MiroTalkM Away
      MiroTalk
      wrote last edited by MiroTalk
      #34

      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 .webm with Content-Type: video/webm would fix the issue.

      1 Reply Last reply
      2
      • S shrey

        Hi @james , thanks for the screenshots. I can now see that there's a "Save on server" option in the UI, and it's working for me as well.

        Now, just S3 is left to work.
        My env file ->

        # Recording
        RECORDING_ENABLED=true                           # Enable recording functionality (true|false)
        RECORDING_UPLOAD_TO_S3=false                      # Upload recording to AWS S3 bucket [true/false]
        
        # AWS S3 Configuration  
        AWS_S3_ENABLED=true                              # Enable AWS S3 storage (true|false)  
        AWS_S3_BUCKET_NAME=<bucket-name>                       # Name of your S3 bucket (must exist)  
        AWS_ACCESS_KEY_ID=<key-id>                                # AWS Access Key ID (leave empty for IAM roles)  
        AWS_SECRET_ACCESS_KEY=<key-secret>                            # AWS Secret Access Key (leave empty for IAM roles)  
        AWS_REGION=<region>                                   # AWS region (e.g., us-east-2, eu-west-2)  
        AWS_S3_ENDPOINT=https://<region>.digitaloceanspaces.com
        

        Note: Although i didn't find the "AWS_S3_ENDPOINT" key in the env template, i configured it because it seems to work with most S3 client libraries, and is a necessity to be able to connect to S3 spaces other than AWS.

        MiroTalkM Away
        MiroTalkM Away
        MiroTalk
        wrote last edited by MiroTalk
        #35

        @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 contentType when the recording is uploaded to any S3-compatible storage to avoid MIME-type issues.

        S 1 Reply Last reply
        0
        • MiroTalkM MiroTalk

          @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 contentType when the recording is uploaded to any S3-compatible storage to avoid MIME-type issues.

          S Online
          S Online
          shrey
          wrote last edited by
          #36

          @MiroTalk said in MiroTalk SFU: Recording not possible?:

          Just out of curiosity, on DigitalOcean, the web video preview work there?

          No idea. I'm yet to figure out why uploading to S3 (DigitalOcean Spaces) is not working for me.

          MiroTalkM 1 Reply Last reply
          0
          • S shrey

            @MiroTalk said in MiroTalk SFU: Recording not possible?:

            Just out of curiosity, on DigitalOcean, the web video preview work there?

            No idea. I'm yet to figure out why uploading to S3 (DigitalOcean Spaces) is not working for me.

            MiroTalkM Away
            MiroTalkM Away
            MiroTalk
            wrote last edited by MiroTalk
            #37

            @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_REGION to 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

            1. Region: Must match your Space’s region (nyc3, ams3, sgp1, etc.).
            2. Endpoint: Must include the full URL with https://.
            3. MiroTalk SFU: Make sure to use at last the v2.0.17
            1 Reply Last reply
            2
            • MiroTalkM Away
              MiroTalkM Away
              MiroTalk
              wrote last edited by
              #38

              Created on the fly, I can confirm that the previous configuration works as expected.

              do-spaces.png

              S 1 Reply Last reply
              2
              • MiroTalkM MiroTalk

                Created on the fly, I can confirm that the previous configuration works as expected.

                do-spaces.png

                S Online
                S Online
                shrey
                wrote last edited by
                #39

                @MiroTalk Thanks for sharing the details and the screenshot.

                In my case, i'm getting this error:

                Nov 18 08:28:31 "app": "Server",
                Nov 18 08:28:31 "level": "error",
                Nov 18 08:28:31 "message": "Rec Finalization error"
                Nov 18 08:28:31 "timestamp": "2025-11-18T02:58:31.414Z",
                

                env ->

                # Recording
                RECORDING_ENABLED=true                           # Enable recording functionality (true|false)
                RECORDING_UPLOAD_TO_S3=true                      # Upload recording to AWS S3 bucket [true/false]
                
                
                # AWS S3 Configuration  
                AWS_S3_ENABLED=true                              # Enable AWS S3 storage (true|false)  
                AWS_S3_BUCKET_NAME=<bucket>                       # Name of your S3 bucket (must exist)  
                AWS_ACCESS_KEY_ID=<key_id>                                # AWS Access Key ID (leave empty for IAM roles)  
                AWS_SECRET_ACCESS_KEY=<key_secret>                            # AWS Secret Access Key (leave empty for IAM roles)  
                AWS_REGION=<region>                                   # AWS region (e.g., us-east-2, eu-west-2)  
                AWS_S3_ENDPOINT=https://<region>.digitaloceanspaces.com
                AWS_S3_FORCE_PATH_STYLE=true
                
                jamesJ 1 Reply Last reply
                0
                • S shrey

                  @MiroTalk Thanks for sharing the details and the screenshot.

                  In my case, i'm getting this error:

                  Nov 18 08:28:31 "app": "Server",
                  Nov 18 08:28:31 "level": "error",
                  Nov 18 08:28:31 "message": "Rec Finalization error"
                  Nov 18 08:28:31 "timestamp": "2025-11-18T02:58:31.414Z",
                  

                  env ->

                  # Recording
                  RECORDING_ENABLED=true                           # Enable recording functionality (true|false)
                  RECORDING_UPLOAD_TO_S3=true                      # Upload recording to AWS S3 bucket [true/false]
                  
                  
                  # AWS S3 Configuration  
                  AWS_S3_ENABLED=true                              # Enable AWS S3 storage (true|false)  
                  AWS_S3_BUCKET_NAME=<bucket>                       # Name of your S3 bucket (must exist)  
                  AWS_ACCESS_KEY_ID=<key_id>                                # AWS Access Key ID (leave empty for IAM roles)  
                  AWS_SECRET_ACCESS_KEY=<key_secret>                            # AWS Secret Access Key (leave empty for IAM roles)  
                  AWS_REGION=<region>                                   # AWS region (e.g., us-east-2, eu-west-2)  
                  AWS_S3_ENDPOINT=https://<region>.digitaloceanspaces.com
                  AWS_S3_FORCE_PATH_STYLE=true
                  
                  jamesJ Online
                  jamesJ Online
                  james
                  Staff
                  wrote last edited by
                  #40

                  Hello @shrey
                  Just to make doubly so sure, please share your installed app version and confirm that you have restarted the app after the /app/data/env changes.

                  S 1 Reply Last reply
                  0
                  • jamesJ james

                    Hello @shrey
                    Just to make doubly so sure, please share your installed app version and confirm that you have restarted the app after the /app/data/env changes.

                    S Online
                    S Online
                    shrey
                    wrote last edited by
                    #41

                    @james

                    MiroTalk SFU 2.0.17

                    f539dd60-2ff9-47aa-8e86-557a3643e2a4-image.png

                    1 Reply Last reply
                    0
                    • jamesJ Online
                      jamesJ Online
                      james
                      Staff
                      wrote last edited by james
                      #42

                      Ah, I see your issue. You are still using AWS_S3_BUCKET_NAME and not AWS_S3_BUCKET which was posted to be the wrong variable and fixed upstream.
                      Small detail, leading to fail.
                      Change AWS_S3_BUCKET_NAME to AWS_S3_BUCKET restart and it should be working.

                      S 1 Reply Last reply
                      1
                      • jamesJ james

                        Ah, I see your issue. You are still using AWS_S3_BUCKET_NAME and not AWS_S3_BUCKET which was posted to be the wrong variable and fixed upstream.
                        Small detail, leading to fail.
                        Change AWS_S3_BUCKET_NAME to AWS_S3_BUCKET restart and it should be working.

                        S Online
                        S Online
                        shrey
                        wrote last edited by shrey
                        #43

                        @james said in MiroTalk SFU: Recording not possible?:

                        Change AWS_S3_BUCKET_NAME to AWS_S3_BUCKET restart and it should be working.

                        Thanks!
                        That did get it working.


                        @mirotalk-57bab571 Just one more kink remaining:

                        When i 'disconnect' the call without stopping the recording, the Recording seems to get saved only in the local directory, and not S3. The S3 upload seems to be triggered only when an ongoing recording is stopped explicitly.

                        jamesJ 1 Reply Last reply
                        2
                        • S shrey

                          @james said in MiroTalk SFU: Recording not possible?:

                          Change AWS_S3_BUCKET_NAME to AWS_S3_BUCKET restart and it should be working.

                          Thanks!
                          That did get it working.


                          @mirotalk-57bab571 Just one more kink remaining:

                          When i 'disconnect' the call without stopping the recording, the Recording seems to get saved only in the local directory, and not S3. The S3 upload seems to be triggered only when an ongoing recording is stopped explicitly.

                          jamesJ Online
                          jamesJ Online
                          james
                          Staff
                          wrote last edited by
                          #44

                          Hello @shrey

                          @shrey said in MiroTalk SFU: Recording not possible?:

                          The S3 upload seems to be triggered only when an ongoing recording is stopped explicitly.

                          Oh, so you mean if the meeting is exited by a recording member, his recording is not stopped and thus never saved/uploaded?
                          Could you give more details about what you'd expect and what the current behavior is that you have observed?

                          S 1 Reply Last reply
                          0
                          • jamesJ james

                            Hello @shrey

                            @shrey said in MiroTalk SFU: Recording not possible?:

                            The S3 upload seems to be triggered only when an ongoing recording is stopped explicitly.

                            Oh, so you mean if the meeting is exited by a recording member, his recording is not stopped and thus never saved/uploaded?
                            Could you give more details about what you'd expect and what the current behavior is that you have observed?

                            S Online
                            S Online
                            shrey
                            wrote last edited by
                            #45

                            @james
                            Current behaviour:

                            1. I start a meeting as Host
                            2. Start the Recording (only Host is allowed to record)
                            3. Once meeting is over, i stop the meeting by clicking on "Leave Room"
                            4. The recording is available in /app/data/rec but not in S3.

                            If, in Step 3:
                            i stop the Recording and then stop the meeting, then the Recording gets uploaded to S3.

                            Expectation:
                            Recording should get uploaded to S3 regardless of the path taken to 'stop' the meeting and without explicitly stopping the recording.

                            MiroTalkM 2 Replies Last reply
                            1
                            • S Online
                              S Online
                              shrey
                              wrote last edited by
                              #46

                              Additionally, it seems like if:
                              Start recording > [time elapses] > Stop recording > Start Recording again > [time elapses] > Stop Recording/Exit Meeting
                              Only the last recording gets saved (overwriting the first part).

                              1 Reply Last reply
                              0
                              • MiroTalkM Away
                                MiroTalkM Away
                                MiroTalk
                                wrote last edited by MiroTalk
                                #47

                                ⚠ IMPORTANT New in MiroTalk SFU v.2.0.19

                                To 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 providers
                                

                                Notes:

                                • S3_ENDPOINT is optional if your provider supports automatic resolution from the region.
                                • S3_FORCE_PATH_STYLE=true is usually required for providers like MinIO, Wasabi, or DigitalOcean Spaces.
                                1 Reply Last reply
                                1
                                • S shrey

                                  @james
                                  Current behaviour:

                                  1. I start a meeting as Host
                                  2. Start the Recording (only Host is allowed to record)
                                  3. Once meeting is over, i stop the meeting by clicking on "Leave Room"
                                  4. The recording is available in /app/data/rec but not in S3.

                                  If, in Step 3:
                                  i stop the Recording and then stop the meeting, then the Recording gets uploaded to S3.

                                  Expectation:
                                  Recording should get uploaded to S3 regardless of the path taken to 'stop' the meeting and without explicitly stopping the recording.

                                  MiroTalkM Away
                                  MiroTalkM Away
                                  MiroTalk
                                  wrote last edited by
                                  #48

                                  @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.

                                  1 Reply Last reply
                                  1
                                  • S shrey

                                    @james
                                    Current behaviour:

                                    1. I start a meeting as Host
                                    2. Start the Recording (only Host is allowed to record)
                                    3. Once meeting is over, i stop the meeting by clicking on "Leave Room"
                                    4. The recording is available in /app/data/rec but not in S3.

                                    If, in Step 3:
                                    i stop the Recording and then stop the meeting, then the Recording gets uploaded to S3.

                                    Expectation:
                                    Recording should get uploaded to S3 regardless of the path taken to 'stop' the meeting and without explicitly stopping the recording.

                                    MiroTalkM Away
                                    MiroTalkM Away
                                    MiroTalk
                                    wrote last edited by
                                    #49

                                    @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

                                    • Commit
                                    • Build
                                    1 Reply Last reply
                                    1
                                    Reply
                                    • Reply as topic
                                    Log in to reply
                                    • Oldest to Newest
                                    • Newest to Oldest
                                    • Most Votes


                                    • Login

                                    • Don't have an account? Register

                                    • Login or register to search.
                                    • First post
                                      Last post
                                    0
                                    • Categories
                                    • Recent
                                    • Tags
                                    • Popular
                                    • Bookmarks
                                    • Search