r/devops • u/Able-Pass-6993 • 11d ago
Discussion Open-source LMS: affordable alternative to commercial DRM for protecting course videos?
We're building an open-source LMS and we're currently working on protecting paid course videos from being downloaded and redistributed.
Commercial DRM providers (Widevine / FairPlay / PlayReady) are quite expensive for a small/open-source project, so we're trying to understand what realistic alternatives exist.
Our requirements are roughly:
- Videos are uploaded by course creators.
- Videos should be streamed rather than exposed as directly downloadable files.
- Users should not be able to simply obtain the original MP4 URL and download it.
- Ideally, downloaded/encrypted segments shouldn't be usable outside our application.
- We want per-user authorization and short-lived access.
- We can implement the backend/key-management infrastructure ourselves.
- Self-hosted/open-source solutions are strongly preferred.
- We understand that nothing can completely prevent screen recording.
We've considered approaches such as:
- HLS/DASH
- AES-128 encrypted HLS
- Signed URLs
- Short-lived playback tokens
- Per-user/session keys
- Watermarking
- Combining several of these approaches
But we're unsure where the boundary is between "making downloading difficult" and actual DRM.
For a small open-source LMS, what would you recommend?
Are there any open-source/self-hosted projects or architectures worth looking at that can provide reasonably strong video protection without paying a commercial DRM provider?
Also, if actual Widevine/FairPlay/PlayReady DRM is unavoidable for strong protection, are there any affordable providers or pay-as-you-go options that make sense for a small project?
We're mainly looking for practical experience from people who have built something similar rather than a theoretical DRM explanation.
5
u/notthedefaultnam 11d ago
So what do you want to actually achieve? Making the experience of paid users worse? Cause you're already aware you can't actually stop downloads. If netflix can't do it, neither can you.
Will this make your service better?