MediaCMS
MediaCMS lets you run modern, featured video and media CMS, written in Python/Django/React, featuring a REST API entirely on your own server.
Open-source video and media hosting, honestly reviewed. No marketing fluff, just what you get when you self-host it.
TL;DR
- What it is: Open-source (AGPL-3.0) video and media CMS — think a self-hosted YouTube/Vimeo that you run on your own infrastructure, with no ads, no algorithmic feed, and no one else’s terms of service [3][2].
- Who it’s for: Universities, organizations with sensitive media, community portals, and non-technical founders who want to build a private or semi-public video platform without paying Vimeo Enterprise or Wistia per-seat fees [README][2].
- Cost savings: Vimeo’s paid plans start at $20/mo and scale to $75–$108/mo for more bandwidth and features. Wistia starts at $19/mo and charges per video. MediaCMS self-hosted runs on a VPS from $6–20/mo with no per-video or per-view pricing.
- Key strength: It’s the only serious open-source video CMS that ships automatic transcription (via Whisper), built-in video trimming, adaptive HLS streaming, RBAC, SAML SSO, and a REST API in one Django/React package [README][3].
- Key weakness: AGPL-3.0 license — if you embed it in a commercial product, your product code may need to go open-source too. Also requires meaningful server resources (4GB RAM minimum for real use) and is not a fit for high-traffic streaming at Wistia’s scale [README][1].
What is MediaCMS
MediaCMS is a web application that lets you run your own video and media platform. Upload a video, it gets transcoded to multiple resolutions (144p through 1080p, in h264/h265/vp9), streamed adaptively via HLS, shown in a clean video.js player, and catalogued with tags, categories, channels, and playlists — the whole thing, on a server you control [README][3].
It handles more than just video. You can also host audio files, images, and PDFs through the same interface, which makes it closer to a general media library than a pure video host [README][2].
The project was built by Markos Gogoulos and is actively maintained. As of this writing it has 4,797 GitHub stars. The tech stack is Python/Django on the backend with Celery for async jobs (transcoding, transcription), PostgreSQL, Redis, and a React frontend [README][3]. There’s a live demo at https://demo.mediacms.io if you want to try it before committing to a deployment.
The pitch on the website — “Your Complete Media Asset Management Solution” — is accurate if slightly dull. What it actually gives you is a self-hosted YouTube-like portal for your organization, school, or community, without the YouTube algorithm, ads, or the risk of content being taken down for reasons outside your control [README][2].
Why people choose it
The recurring reason cited across sources is control and privacy. Organizations with sensitive video content — training materials, internal presentations, patient education, research recordings — can’t or won’t upload that to YouTube or Vimeo. MediaCMS gives them a YouTube-level feature set on their own infrastructure [README][2].
The Gigazine write-up [3] positions it as “build your own fully-featured YouTube-like video site for free” and walks through the Docker setup step by step. The framing is accurate: the feature parity with a basic YouTube-style site is genuinely there — adaptive playback, subtitles, playlists, comments, likes, channel pages, related videos. That’s more than most self-hosted video tools deliver.
The DevOps School article [5] places it in the “video management” tier of digital asset management platforms, alongside MediaGoblin and Clipbucket, but specifically calls out the transcoding and streaming support as differentiators. Most open-source video platforms either skip transcoding (you upload an MP4, you get an MP4) or bolt it on poorly. MediaCMS treats transcoding as a first-class feature with configurable resolution profiles and format support out of the box [README][5].
Versus Vimeo: Vimeo is the obvious commercial comparison for professional video hosting. It has better CDN reach and smoother playback at scale, but you’re paying for bandwidth and storage you don’t control, and Vimeo reserves the right to enforce its community guidelines even on paid plans. MediaCMS self-hosted has no per-play cost and no content policy other than your own.
Versus Wistia: Wistia charges per video after a certain threshold and is designed for marketing/sales teams wanting analytics and CTAs baked into the player. MediaCMS has none of the marketing stack (no lead capture, no heatmaps), but it also costs a fraction of Wistia’s $79–$319/mo tiers for teams with serious video libraries.
Versus Peertube: The most direct open-source comparison. PeerTube is ActivityPub-federated and designed for public content sharing across a network of instances. MediaCMS is more of a closed-garden CMS — your instance is standalone, access-controlled, and designed for your organization’s content rather than federation across the open web. If you want a community-facing public video host, PeerTube has the distribution angle. If you want a private organizational media library with SSO and RBAC, MediaCMS is better suited [README].
Features
Based on the README, the website, and third-party descriptions:
Media handling:
- Video, audio, image, and PDF upload and playback [README]
- Automatic transcoding to multiple profiles: 144p, 240p, 360p, 480p, 720p, 1080p in h264, h265, and vp9 [README][3]
- Adaptive streaming via HLS — playback quality adjusts to viewer bandwidth [README][3]
- Chunked uploads for large files — pausable and resumable [README]
- Customized video.js player with resolution switching and playback speed control [README][website]
Content management:
- Categories, tags, and custom classification [README]
- Channels — user-branded content hubs [README][2]
- Playlists for audio and video, with reorder support [README]
- Featured and recommended content [README][2]
- Public, private, unlisted, and custom publishing workflows [README][3]
- Full-text search with live search functionality [README]
AI and transcription:
- Automatic transcription via Whisper running locally — no cloud API required [README][3]
- Subtitle file upload with multilingual support [README][3]
- Subtitle generation integrated into the media editing screen [3]
Editing:
- In-browser video trimmer: trim, replace, save as new, or create chapters [README][3]
- Edit metadata, thumbnails, privacy settings post-upload [README][2]
- Reprocess or replace video files while retaining stats and comments [2]
Access and authentication:
- Role-Based Access Control (RBAC) with custom categories and group permissions [README][website]
- SAML SSO with role/group mapping to system roles [README][3]
- Three user registration modes: public, invitation-only, closed [README][3]
- Configurable download, comment, like/dislike, and report permissions [README]
Platform:
- REST API documented via Swagger [README][2]
- Responsive design with light and dark themes [README][3]
- Multi-language interface [README]
- Social sharing and embed code generation [README]
- Admin dashboard with content moderation, user management, and analytics [2]
- Docker and Docker Compose deployment [README][3]
- Scalable transcoding with task priorities; experimental remote worker support [README]
Pricing: SaaS vs self-hosted math
MediaCMS is free software under AGPL-3.0. The “price” is the server you run it on and the time to set it up.
Self-hosted:
- Software cost: $0
- Minimum viable VPS: 4GB RAM / 2 CPUs — roughly $6–12/mo on Hetzner or Contabo [README]
- For active transcoding with multiple concurrent uploads, 8GB RAM / 4 CPUs is more realistic — $20–30/mo
- Storage is separate: a 1TB volume runs $5–10/mo depending on provider
Elestio managed hosting: Starting at $14/mo, Elestio offers one-click MediaCMS deployment with automated backups, SSL, monitoring, and updates included [1]. That’s a real option if you want to avoid managing the server yourself but still want data ownership.
MediaCMS professional services (from the official website):
- Deployment & Training: $2,000 one-time (2 calls, installation, branding config, 1 training session) [website]
- Managed Services: $2,000/mo (full deployment, priority support, health monitoring, migration) [website]
- Custom Development: custom pricing [website]
The managed services price is high. For a small team, the Elestio route at $14–30/mo is much more sensible. The $2,000/mo managed offering is clearly aimed at enterprise organizations with compliance requirements.
Commercial comparison:
| Platform | Cost | Video limit | Bandwidth |
|---|---|---|---|
| Vimeo Starter | $20/mo | 60 videos/yr | Limited |
| Vimeo Standard | $33/mo | 120 videos/yr | Limited |
| Wistia Plus | $19/mo | 10 videos then $0.25/video | Metered |
| Wistia Pro | $79/mo | 20 videos, then metered | Metered |
| MediaCMS self-hosted | $6–30/mo VPS | Unlimited | Limited by your server |
| MediaCMS on Elestio | From $14/mo | Unlimited | Depends on plan |
For an organization with a growing video library — even 50–100 videos — the Wistia math gets painful fast. MediaCMS self-hosted with a $20/mo VPS and $10/mo storage volume handles hundreds of gigabytes of video for $30/mo total, no per-video charge, no bandwidth overage [README][1].
Deployment reality check
The Gigazine article [3] actually walks through an end-to-end install on a Google Cloud Ubuntu VM, and the steps are clean: clone the repo, edit one environment variable for the admin password, run docker compose up -d. That’s it for a basic install.
What you need:
- A Linux VPS — 4GB RAM minimum, 8GB if you expect active transcoding [README]
- Docker and docker-compose
- Storage: video files add up fast — provision at least 100GB, plan for more
- A domain and reverse proxy (nginx or Caddy) for HTTPS
- PostgreSQL and Redis — bundled in the docker-compose, or external if you want to manage them separately
- SMTP for email notifications if you have registered users
The optional but powerful part: Whisper transcription. If you enable USE_WHISPER_TRANSCRIBE = True in local_settings.py, MediaCMS will auto-transcribe every video using a locally running Whisper model [3]. This is entirely on your hardware — no API cost, no data leaving your server. The trade-off is CPU/GPU load; on a shared VPS without GPU acceleration, transcription of a 30-minute video will take a while and will consume significant CPU during the job [README].
What can go sideways:
- The README specifies 4GB RAM / 2-4 CPUs as “minimum for small to medium installations” — this is realistic but on the edge. If you upload long videos and have Whisper running, you may hit memory pressure on a 4GB machine during concurrent transcoding + transcription jobs.
- AGPL-3.0 is a strong copyleft license. If you’re building a commercial product that incorporates MediaCMS, your lawyers should weigh in. For internal tools and community portals, this isn’t a problem [README].
- Transcoding is CPU-intensive. A 1-hour 4K video upload will block your CPU for a meaningful period. The remote worker support is experimental and not production-hardened for heavy load [README].
- There’s no built-in CDN. For geographically distributed users, you’re serving video from a single origin. This is fine for internal/organizational use; it’s not fine if you’re building a public video platform expecting global reach.
Realistic setup time for a technical user: 1–2 hours to a working instance. For a non-technical founder following the Gigazine guide closely: 3–5 hours including server provisioning, domain setup, and testing. Elestio gets you there in minutes if you’d rather skip the Linux setup entirely [1].
Pros and cons
Pros
- Feature completeness. Adaptive HLS streaming, Whisper transcription, video trimming, SAML SSO, RBAC, playlists, channels, REST API — this is an unusually complete package for an open-source project at under 5K stars [README][3].
- Whisper transcription is fully local. No OpenAI API key, no per-minute transcription cost, no audio leaving your server [README][3]. For sensitive content, this matters.
- Handles multiple media types. Video, audio, images, and PDFs in one platform means you’re not running separate tools for different file types [README][2].
- RBAC + SAML. Most open-source video tools skip enterprise auth entirely. MediaCMS ships SSO with role mapping to system groups [README][3].
- In-browser video editing. Trim, chapter creation, subtitle management — all available without leaving the CMS [README][3].
- Docker Compose deployment is straightforward, and the Gigazine walkthrough shows it working as described [3].
- REST API with Swagger docs — unusual level of documentation for a project this size [README][2].
Cons
- AGPL-3.0 license. Not MIT. If you’re embedding MediaCMS in a commercial SaaS product, you may have to open-source your product code under AGPL. For internal use and community portals, this is a non-issue. For founders building a product on top of it, get legal clarity first [README].
- Resource requirements are real. 4GB RAM minimum means you can’t run this on a $3 VPS. With Whisper and active transcoding, 8GB is practical [README].
- No CDN built in. Video is served from your origin. Adequate for organizational use, inadequate for a public platform with viewers across continents.
- Experimental remote worker support. High-volume transcoding requires horizontal scaling that isn’t production-ready yet [README].
- Small community, single maintainer. 4,797 stars is modest. The project is primarily maintained by one person. Long-term support is less certain than projects with larger funding or contributor bases.
- No analytics beyond basics. The admin dashboard shows views and engagement, but there’s nothing like Wistia’s heatmaps, viewer identification, or conversion tracking [2]. If you’re using video for sales, this matters.
- No built-in video CDN or edge delivery. You get origin serving. For global audiences, you’d need to front it with Cloudflare or similar yourself.
Who should use this / who shouldn’t
Use MediaCMS if:
- You’re running an educational institution, internal training portal, or community media site and need full control over your content.
- You’re currently paying Vimeo Standard/Plus or Wistia for a growing video library and the per-video or bandwidth fees are becoming painful.
- You have sensitive video content that can’t live on third-party servers.
- You want automatic transcription without a cloud transcription API.
- You need SAML SSO and RBAC — features that commercial video tools gate behind enterprise tiers.
- You’re comfortable running Docker on a Linux VPS, or you’re willing to pay Elestio $14/mo to handle that for you.
Skip it if you’re building a commercial product and aren’t sure about the AGPL-3.0 implications — talk to a lawyer before you build on it.
Skip it (use PeerTube) if:
- You want your content to be discoverable across a federated network of other instances.
- You’re building a public video platform oriented toward open distribution and ActivityPub interoperability.
Skip it (stay on Vimeo or Wistia) if:
- You need a global CDN and smooth playback for viewers worldwide without infrastructure work.
- You rely on video analytics — viewer engagement heatmaps, per-viewer tracking, video-to-pipeline conversion.
- You have zero tolerance for DevOps — not even following a Docker guide.
- Your video library is small and Vimeo’s free tier covers you.
Skip it (use Nextcloud + external player) if:
- You primarily need file storage with some media playback rather than a full-featured video portal with transcoding and channels.
Alternatives worth considering
- PeerTube — the federated alternative. ActivityPub-based, designed for public video sharing across instances. Better for distribution, weaker for access control and organizational use.
- Jellyfin — media server oriented toward consumption (movies, TV, music) rather than publishing and sharing. Better for personal media libraries, not for content you’re sharing with others.
- Owncast — live streaming only. Complementary to MediaCMS for organizations that want both live and on-demand hosting.
- Vimeo — the commercial benchmark. Global CDN, polished player, per-video pricing that hurts at scale. Closed source.
- Wistia — marketing-oriented video hosting with heatmaps and lead capture. No equivalent in the open-source space. Right tool if video is driving your sales funnel.
- Cloudflare Stream — cheap bandwidth-based pricing ($5/1000 min stored, $1/1000 min delivered), no server to manage, but it’s third-party infrastructure with usage-based billing.
For most organizational use cases, the realistic shortlist is MediaCMS vs PeerTube. Pick MediaCMS if you need access control, RBAC, SSO, and a closed portal. Pick PeerTube if you want federation and public discoverability.
Bottom line
MediaCMS is the most complete self-hosted video platform available for organizations that need to own their media infrastructure. The feature list — adaptive HLS streaming, local Whisper transcription, in-browser video editing, SAML SSO, RBAC, REST API — reads like a Vimeo Enterprise spec sheet, not a scrappy open-source side project. For universities, companies with sensitive training content, or community portals paying Vimeo $33–$108/mo, the math for switching is straightforward: a $20/mo VPS replaces a bill that grows with your library. The caveats are real — AGPL-3.0 licensing, meaningful server requirements, no CDN, an experimental scaling story — but for the target audience running internal or semi-public media portals, none of those are blockers. If the setup is the blocker, Elestio gets you a managed instance for $14/mo, or the team behind MediaCMS offers deployment services for a one-time fee.
Sources
- Elestio — Managed MediaCMS as a Service. https://elest.io/open-source/mediacms
- Elestio Blog — MediaCMS: Free Open Source Video and Media CMS. https://blog.elest.io/mediacms-free-open-source-video-and-media-cms/
- Gigazine — ‘MediaCMS’ allows you to build your own fully-featured YouTube-like video site for free (Feb 1, 2026). https://gigazine.net/gsc_news/en/20260201-mediacms/
- Open Source Collection — React.js Projects With Source Code. https://opensourcecollection.com/reactjs-projects
- DevOps School — Top Open-Source Solutions for Building a Full-Featured Digital Asset Management (DAM) Platform. https://www.devopsschool.com/blog/top-open-source-solutions-for-building-a-full-featured-digital-asset-management-dam-platform/
Primary sources:
- GitHub repository and README: https://github.com/mediacms-io/mediacms (4,797 stars, AGPL-3.0 license)
- Official website: https://mediacms.io
- Features page: https://mediacms.io/features/
- Services page: https://mediacms.io/#services/
- Live demo: https://demo.mediacms.io
Features
Authentication & Access
- Role-Based Access Control
- Single Sign-On (SSO)
Integrations & APIs
- REST API
AI & Machine Learning
- Speech-to-Text / Voice
Automation & Workflows
- Workflows
Collaboration
- Comments & Discussions
Search & Discovery
- Tags / Labels
Media & Files
- File Attachments
- Media Transcoding
- Video Support
Customization & Branding
- Themes / Skins
Analytics & Reporting
- Reports
Mobile & Desktop
- Responsive / Mobile-Friendly
Replaces
Related Media & Streaming Tools
View all 334 →Immich
95KHigh-performance self-hosted photo and video management — automatic backup, ML-powered search, and a Google Photos-like experience on your own server.
Jellyfin
49KThe volunteer-built media solution that puts you in control of your media. Stream movies, shows, music, and photos to any device from your own server.
PhotoPrism
39KAI-Powered Photos App for the Decentralized Web. Tag and find pictures automatically without getting in your way.
Cobalt
39KSave what you love without ads, tracking, paywalls or other nonsense. Just paste the link and you're ready to rock.
qBittorrent
36KAn open-source software alternative to uTorrent. Feature-rich and runs on all major platforms.
SRS
29KSimple, high efficiency, realtime video server. Supports RTMP, WebRTC, HLS, HTTP-FLV, SRT, MPEG-DASH and GB28181.