OpenLogs

All tools

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

mediacms-io/mediacms

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

Config check passed docker compose config exited 0 on this exact file on 2026-10-22.
docker-compose.yaml Version 1
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

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

  2. Save the compose file as docker-compose.yaml (github.com/mediacms-io/mediacms/blob/6efdf0d/docker-compose.yaml)

    Use the compose file shown above.

  3. Start it (github.com/mediacms-io/mediacms/blob/6efdf0d/docker-compose.yaml)
    docker compose up -d
  4. 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)