MediaCMS
Video and media content management system with a web interface.
- Replaces
-
Paid video hosting services, such as Vimeo.
All open-source alternatives to Vimeo
- Difficulty
-
Difficulty: Hard
6 services (2 database or broker: postgres, redis), 2 volume mounts, no env values to set, no elevated host access. Heuristic score 6 of 11: hard.
- Stack
Python (language), PostgreSQL (database), Redis (database)
- Deployment
docker_compose
- Requirements
Not stated.
- License
-
AGPL-3.0(OSI-approved open source)Read from github.com/mediacms-io/mediacms/blob/6efdf0d/LICENSE.txt
- Business model
-
Unknown
The README at the pinned commit does not state a business model, so it stays unknown.
Source: github.com/mediacms-io/mediacms/blob/6efdf0d/README.md, read on .
- Repository
GitHub stats
- Stars
- 5,163
- Forks
- 971
- Open issues and pull requests
- 150
- Last push
- 2026-10-22
- Latest release
- v9.3.1
- Released
- 2026-10-20
From the GitHub API on . These numbers are a snapshot, not live. GitHub detected the license as AGPL-3.0.
Compose file
version: "3"
services:
migrations:
image: mediacms/mediacms:latest
volumes:
- ./:/home/mediacms.io/mediacms/
environment:
ENABLE_UWSGI: 'no'
ENABLE_NGINX: 'no'
ENABLE_CELERY_SHORT: 'no'
ENABLE_CELERY_LONG: 'no'
ENABLE_CELERY_BEAT: 'no'
ADMIN_USER: 'admin'
ADMIN_EMAIL: 'admin@localhost'
# ADMIN_PASSWORD: 'uncomment_and_set_password_here'
command: "./deploy/docker/prestart.sh"
restart: on-failure
depends_on:
redis:
condition: service_healthy
db:
condition: service_healthy
web:
image: mediacms/mediacms:latest
deploy:
replicas: 1
ports:
- "80:80"
volumes:
- ./:/home/mediacms.io/mediacms/
environment:
ENABLE_CELERY_BEAT: 'no'
ENABLE_CELERY_SHORT: 'no'
ENABLE_CELERY_LONG: 'no'
ENABLE_MIGRATIONS: 'no'
depends_on:
- migrations
celery_beat:
image: mediacms/mediacms:latest
volumes:
- ./:/home/mediacms.io/mediacms/
environment:
ENABLE_UWSGI: 'no'
ENABLE_NGINX: 'no'
ENABLE_CELERY_SHORT: 'no'
ENABLE_CELERY_LONG: 'no'
ENABLE_MIGRATIONS: 'no'
depends_on:
- redis
celery_worker:
image: mediacms/mediacms:latest
deploy:
replicas: 1
volumes:
- ./:/home/mediacms.io/mediacms/
environment:
ENABLE_UWSGI: 'no'
ENABLE_NGINX: 'no'
ENABLE_CELERY_BEAT: 'no'
ENABLE_MIGRATIONS: 'no'
depends_on:
- migrations
db:
image: postgres:17.2-alpine
volumes:
- ../postgres_data:/var/lib/postgresql/data/
restart: always
environment:
POSTGRES_USER: mediacms
POSTGRES_PASSWORD: mediacms
POSTGRES_DB: mediacms
TZ: Europe/London
healthcheck:
test: ["CMD-SHELL", "pg_isready -d $${POSTGRES_DB} -U $${POSTGRES_USER}"]
interval: 10s
timeout: 5s
retries: 5
redis:
image: "redis:alpine"
restart: always
healthcheck:
test: ["CMD", "redis-cli","ping"]
interval: 10s
timeout: 5s
retries: 3
From the app's own repository: github.com/mediacms-io/mediacms/blob/6efdf0d/docker-compose.yaml.
Compose file from the app repository.
Install
- Docker with the Compose plugin (github.com/mediacms-io/mediacms/blob/6efdf0d/docker-compose.yaml)
A host with Docker and the Docker Compose plugin. This entry runs from a compose file.
- Save the compose file as docker-compose.yaml (github.com/mediacms-io/mediacms/blob/6efdf0d/docker-compose.yaml)
Use the compose file shown above.
- Start it (github.com/mediacms-io/mediacms/blob/6efdf0d/docker-compose.yaml)
docker compose up -d - Open the app (github.com/mediacms-io/mediacms/blob/6efdf0d/docker-compose.yaml)
Open http://localhost:80. The compose file publishes host port 80 for the web service.
Compose file check: config_ok on 2026-10-22.
Gotchas and maintenance
Gotchas
- Some images use the latest tag or no tag. Images without a pinned version: migrations: mediacms/mediacms:latest, web: mediacms/mediacms:latest, celery_beat: mediacms/mediacms:latest, celery_worker: mediacms/mediacms:latest. A later pull can get a different version. (github.com/mediacms-io/mediacms/blob/6efdf0d/docker-compose.yaml, checked 2026-10-22)
- The compose file publishes host ports. Host ports: 80 (web). A port without a host address listens on all host network interfaces. (github.com/mediacms-io/mediacms/blob/6efdf0d/docker-compose.yaml, checked 2026-10-22)
- The compose file mounts host folders. Host paths mounted into containers: ./ at /home/mediacms.io/mediacms/ (migrations), ./ at /home/mediacms.io/mediacms/ (web), ./ at /home/mediacms.io/mediacms/ (celery_beat), ./ at /home/mediacms.io/mediacms/ (celery_worker), ../postgres_data at /var/lib/postgresql/data/ (db). (github.com/mediacms-io/mediacms/blob/6efdf0d/docker-compose.yaml, checked 2026-10-22)
Signals
- Open issues and pull requests: 150
- Last push: 2026-10-22 (0 days before this page was built)
- Latest release: v9.3.1 on 2026-10-20 (1 days before this page was built)