# MediaCMS

Video and media content management system with a web interface.

- Replaces: [Vimeo](https://openlogs.fyi/alternatives/vimeo)
- Summary: Paid video hosting services, such as Vimeo.
- Stack: Python (language), PostgreSQL (database), Redis (database)
- Deployment: docker_compose
- License: AGPL-3.0 (osi) [source](https://github.com/mediacms-io/mediacms/blob/6efdf0d655da5c6363a724c230e3388daf4b07e1/LICENSE.txt)
- Business model: unknown. The README at the pinned commit does not state a business model, so it stays unknown. ([source](https://github.com/mediacms-io/mediacms/blob/6efdf0d655da5c6363a724c230e3388daf4b07e1/README.md), read 2026-10-22)
- 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.
- Requirements: not stated
- Repository: [mediacms-io/mediacms](https://github.com/mediacms-io/mediacms)

## Install

1. Docker with the Compose plugin ([source](https://github.com/mediacms-io/mediacms/blob/6efdf0d655da5c6363a724c230e3388daf4b07e1/docker-compose.yaml))

   ```text
   A host with Docker and the Docker Compose plugin. This entry runs from a compose file.
   ```

2. Save the compose file as docker-compose.yaml ([source](https://github.com/mediacms-io/mediacms/blob/6efdf0d655da5c6363a724c230e3388daf4b07e1/docker-compose.yaml))

   ```yaml
   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
   ```

3. Start it ([source](https://github.com/mediacms-io/mediacms/blob/6efdf0d655da5c6363a724c230e3388daf4b07e1/docker-compose.yaml))

   ```bash
   docker compose up -d
   ```

4. Open the app ([source](https://github.com/mediacms-io/mediacms/blob/6efdf0d655da5c6363a724c230e3388daf4b07e1/docker-compose.yaml))

   ```text
   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. ([source](https://github.com/mediacms-io/mediacms/blob/6efdf0d655da5c6363a724c230e3388daf4b07e1/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. ([source](https://github.com/mediacms-io/mediacms/blob/6efdf0d655da5c6363a724c230e3388daf4b07e1/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). ([source](https://github.com/mediacms-io/mediacms/blob/6efdf0d655da5c6363a724c230e3388daf4b07e1/docker-compose.yaml), checked 2026-10-22)

### Signals

Computed from a GitHub snapshot taken 2026-10-22.

- Open issues and pull requests: 150
- Stars: 5163, forks: 971
- Last push: 2026-10-22 (0 days ago)
- Latest release: v9.3.1 on 2026-10-20 (1 days ago)

## Sources

- [Repository: https://github.com/mediacms-io/mediacms](https://github.com/mediacms-io/mediacms)
- [License: https://github.com/mediacms-io/mediacms/blob/6efdf0d655da5c6363a724c230e3388daf4b07e1/LICENSE.txt](https://github.com/mediacms-io/mediacms/blob/6efdf0d655da5c6363a724c230e3388daf4b07e1/LICENSE.txt)
- [Business model: https://github.com/mediacms-io/mediacms/blob/6efdf0d655da5c6363a724c230e3388daf4b07e1/README.md](https://github.com/mediacms-io/mediacms/blob/6efdf0d655da5c6363a724c230e3388daf4b07e1/README.md)
- [Compose file: https://github.com/mediacms-io/mediacms/blob/6efdf0d655da5c6363a724c230e3388daf4b07e1/docker-compose.yaml](https://github.com/mediacms-io/mediacms/blob/6efdf0d655da5c6363a724c230e3388daf4b07e1/docker-compose.yaml)

---
Canonical: https://openlogs.fyi/tools/mediacms  
Last updated: 2026-10-22
