
MediaCMS is a modern, fully featured open-source content management system (CMS) designed specifically for hosting, managing, and sharing videos, audio files, images, and other media. Often described as a self-hosted alternative to platforms like YouTube or Vimeo, it gives you complete control over your content without ads, data lock-in, or platform restrictions. In this step by step guide I will show you how to install MediaCMSĀ on yourĀ Synology NAS using Docker & Portainer.
STEP 1
Please Support My work by Making a Donation.
STEP 2
InstallĀ Portainer using my step by step guide. If you already have Portainer installed on your Synology NAS, skip this STEP. Attention: Make sure you have installed the latest Portainer version.
STEP 3
Go toĀ File StationĀ and open the docker folder. Inside the docker folder, create one new folder and name itĀ mediacms. Follow the instructions in the image below.
Note: Be careful to enter only lowercase, not uppercase letters.

STEP 4
Now create three new folders inside the mediacms folder that you have previosuly created at STEP 3Ā and name them db, redis, uploads. Follow the instructions in the image below.
Note: Be careful to enter only lowercase, not uppercase letters.

STEP 5
Log into Portainer using your username and password. On the left sidebar in Portainer, click onĀ HomeĀ thenĀ Live connect. Follow the instructions in the image below.

On the left sidebar in Portainer, click on StacksĀ thenĀ + Add stack. Follow the instructions in the image below.

STEP 6
In the Name field type in mediacms. Follow the instructions in the image below.
services:
db:
image: postgres:18
container_name: MediaCMS_DB
healthcheck:
test: ["CMD", "pg_isready", "-q", "-d", "mediacms", "-U", "mediacms"]
timeout: 45s
interval: 10s
retries: 10
environment:
POSTGRES_USER: mediacms
POSTGRES_PASSWORD: mediacms
POSTGRES_DB: mediacms
TZ: Europe/Bucharest
volumes:
- /volume1/docker/mediacms/db:/var/lib/postgresql:rw
restart: on-failure:5
migrations:
image: mediacms/mediacms:latest
container_name: MediaCMS_MIGRATION
environment:
ENABLE_UWSGI: no
ENABLE_NGINX: no
ENABLE_CELERY_SHORT: no
ENABLE_CELERY_LONG: no
ENABLE_CELERY_BEAT: no
ADMIN_USER: marius
ADMIN_PASSWORD: mariushosting
ADMIN_EMAIL: yourown@email
command: ./deploy/docker/prestart.sh
depends_on:
- redis
- db
restart: on-failure
web:
image: mediacms/mediacms:latest
container_name: MediaCMS_WEB
healthcheck:
test: timeout 10s bash -c ':> /dev/tcp/127.0.0.1/80' || exit 1
interval: 10s
timeout: 5s
retries: 3
start_period: 90s
deploy:
replicas: 1
ports:
- 8068:80
environment:
ENABLE_CELERY_BEAT: no
ENABLE_CELERY_SHORT: no
ENABLE_CELERY_LONG: no
ENABLE_MIGRATIONS: no
depends_on:
- migrations
volumes:
- /volume1/docker/mediacms/uploads:/home/mediacms.io/mediacms/uploads:rw
restart: on-failure
celery_beat:
image: mediacms/mediacms:latest
container_name: MediaCMS-BEAT
environment:
ENABLE_UWSGI: no
ENABLE_NGINX: no
ENABLE_CELERY_SHORT: no
ENABLE_CELERY_LONG: no
ENABLE_MIGRATIONS: no
depends_on:
- redis
restart: on-failure
celery_worker:
image: mediacms/mediacms:latest
container_name: MediaCMS-WORKER
deploy:
replicas: 1
environment:
ENABLE_UWSGI: no
ENABLE_NGINX: no
ENABLE_CELERY_BEAT: no
ENABLE_MIGRATIONS: no
depends_on:
- migrations
restart: on-failure
redis:
image: redis
container_name: MediaCMS-REDIS
hostname: norish-redis
healthcheck:
test: ["CMD-SHELL", "redis-cli ping || exit 1"]
volumes:
- /volume1/docker/mediacms/redis:/data:rw
restart: on-failure:5
Note: Before you paste the code above in the Web editor area below, change the value for TZ.Ā (Select your current Time Zone from this list.)
Note: Before you paste the code above in the Web editor area below, change the value for ADMIN_USER. Type in your own username. marius is an example for a username.
Note: Before you paste the code above in the Web editor area below, change the value for ADMIN_PASSWORD. Type in your own password. mariushosting is an example for a password.
Note: Before you paste the code above in the Web editor area below, change the value for ADMIN_EMAIL. Type in your own Email Address.

STEP 7
Scroll down on the page until you see a button namedĀ Deploy the stack. Click on it. Follow the instructions in the image below. The installation process can take up to a few minutes. It will depend on your Internet speed connection.

STEP 8
If everything goes right, you will see the following message at the top right of your screen: āSuccess Stack successfully deployedā.

STEP 9
In the Portainer left sidebar, wait until the MediaCMS_MIGRATION container is marked as exited – code 0. This is a normal behavior. Go straight to the next STEP.

STEP 10
š¢Please Support My work by Making a Donation. Almost 99,9% of the people that install something using my guidesĀ forget to support my work, or justĀ ignoreĀ STEP 1. Iāve been very honest about this aspect of my work since the beginning: I donāt run any ADS, I donāt require subscriptions, paid or otherwise, I donāt collect IPs, emails, and I donāt have any referral links from Amazon or other merchants. I also donāt have any POP-UPs or COOKIES. I have repeatedly been told over the years how much I have contributed to the community. Itās something I love doing and have been honest about my passion since the beginning. But I also Need The Community to Support me Back to be able to continue doing this work.
STEP 11
The installation process can take up to a few seconds/minutes. It will depend on your Internet speed connection. Now open your browser andĀ type in http://Synology-ip-address:8068 At the top right of the page, click SIGN IN. Follow the instructions in the image below.

STEP 12
On the left sidebar, switch the theme to Dark. Type in your own Username (ADMIN_USER) and Password (ADMIN_PASSWORD) that you have previously added at STEP 6, then click Sign In. Follow the instructions in the image below.

STEP 13
Click UPLOAD MEDIA. Follow the instructions in the image below.

STEP 14
Click Browse your files to start uploading your files. Follow the instructions in the image below.

STEP 15
Your MediaCMS dashboard at a glance!

Enjoy MediaCMS!
If you encounter issues by using this container, make sure to check out the Common Docker issuesĀ article.
Note: If you want to run the MediaCMS container over HTTPS, check How to Run Docker Containers Over HTTPS. In order to make MediaCMS work via HTTPS, it’s mandatory to activate WebSocket.
Note: Can I run Docker on my Synology NAS?Ā See the supported models.
Note: How to Back Up Docker Containers on your Synology NAS.
Note: Find outĀ how to update the MediaCMS container with the latest image.
Note: How to Free Disk Space on Your NAS if You Run Docker.
Note: How to Schedule Start & Stop For Docker Containers.
Note: How to Activate Email Notifications.
Note: How to Add Access Control Profile on Your NAS.
Note: How to Change Docker Containers Restart Policy.
Note: How to Use Docker Containers With VPN.
Note: Convert Docker Run Into Docker Compose.
Note: How to Clean Docker.
Note: How to Clean Docker Automatically.
Note: Best Practices When Using Docker and DDNS.
Note: Some Docker Containers Need WebSocket.
Note: Find out the Best NAS Models For Docker.
Note: Activate Gmail SMTP For Docker Containers.
This post was updated on Wednesday / December 31st, 2025 at 11:19 PM