fix: single server install issues

This commit is contained in:
Markos Gogoulos 2025-06-15 11:19:29 +03:00 committed by GitHub
parent a4e9309350
commit a5acce4ab1
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
6 changed files with 26 additions and 36 deletions

View File

@ -1,4 +1,4 @@
FROM python:3.13-bookworm AS build-image FROM python:3.13.5-bookworm AS build-image
# Install system dependencies needed for downloading and extracting # Install system dependencies needed for downloading and extracting
RUN apt-get update -y && \ RUN apt-get update -y && \
@ -24,7 +24,7 @@ RUN mkdir -p /home/mediacms.io/bento4 && \
rm Bento4-SDK-1-6-0-637.x86_64-unknown-linux.zip rm Bento4-SDK-1-6-0-637.x86_64-unknown-linux.zip
############ RUNTIME IMAGE ############ ############ RUNTIME IMAGE ############
FROM python:3.13-bookworm AS runtime_image FROM python:3.13.5-bookworm AS runtime_image
SHELL ["/bin/bash", "-c"] SHELL ["/bin/bash", "-c"]
@ -37,7 +37,7 @@ ENV PATH="$VIRTUAL_ENV/bin:$PATH"
# Install runtime system dependencies # Install runtime system dependencies
RUN apt-get update -y && \ RUN apt-get update -y && \
apt-get -y upgrade && \ apt-get -y upgrade && \
apt-get install --no-install-recommends supervisor nginx imagemagick procps libxml2-dev libxmlsec1-dev libxmlsec1-openssl -y && \ apt-get install --no-install-recommends supervisor nginx imagemagick procps pkg-config libxml2-dev libxmlsec1-dev libxmlsec1-openssl -y && \
rm -rf /var/lib/apt/lists/* && \ rm -rf /var/lib/apt/lists/* && \
apt-get purge --auto-remove && \ apt-get purge --auto-remove && \
apt-get clean apt-get clean
@ -58,7 +58,7 @@ COPY requirements.txt requirements-dev.txt ./
ARG DEVELOPMENT_MODE=False ARG DEVELOPMENT_MODE=False
RUN pip install --no-cache-dir -r requirements.txt && \ RUN pip install --no-cache-dir --no-binary lxml,xmlsec -r requirements.txt && \
if [ "$DEVELOPMENT_MODE" = "True" ]; then \ if [ "$DEVELOPMENT_MODE" = "True" ]; then \
echo "Installing development dependencies..." && \ echo "Installing development dependencies..." && \
pip install --no-cache-dir -r requirements-dev.txt; \ pip install --no-cache-dir -r requirements-dev.txt; \

View File

@ -1 +1 @@
VERSION = "6.0.0" VERSION = "6.0.1"

View File

@ -2,7 +2,7 @@
## Table of contents ## Table of contents
- [1. Welcome](#1-welcome) - [1. Welcome](#1-welcome)
- [2. Server Installaton](#2-server-installation) - [2. Single Server Installaton](#2-single-server-installation)
- [3. Docker Installation](#3-docker-installation) - [3. Docker Installation](#3-docker-installation)
- [4. Docker Deployment options](#4-docker-deployment-options) - [4. Docker Deployment options](#4-docker-deployment-options)
- [5. Configuration](#5-configuration) - [5. Configuration](#5-configuration)
@ -31,14 +31,14 @@
## 1. Welcome ## 1. Welcome
This page is created for MediaCMS administrators that are responsible for setting up the software, maintaining it and making modifications. This page is created for MediaCMS administrators that are responsible for setting up the software, maintaining it and making modifications.
## 2. Server Installation ## 2. Single Server Installation
The core dependencies are Python3, Django3, Celery, PostgreSQL, Redis, ffmpeg. Any system that can have these dependencies installed, can run MediaCMS. But we strongly suggest installing on Linux Ubuntu (tested on versions 20, 22). The core dependencies are python3, Django, celery, PostgreSQL, redis, ffmpeg. Any system that can have these dependencies installed, can run MediaCMS. But the install.sh is only tested in Linux Ubuntu 24 and 22 versions.
Installation on an Ubuntu system with git utility installed should be completed in a few minutes with the following steps. Installation on an Ubuntu 22/24 system with git utility installed should be completed in a few minutes with the following steps.
Make sure you run it as user root, on a clear system, since the automatic script will install and configure the following services: Celery/PostgreSQL/Redis/Nginx and will override any existing settings. Make sure you run it as user root, on a clear system, since the automatic script will install and configure the following services: Celery/PostgreSQL/Redis/Nginx and will override any existing settings.
Automated script - tested on Ubuntu 20, Ubuntu 22 and Debian Buster
```bash ```bash
mkdir /home/mediacms.io && cd /home/mediacms.io/ mkdir /home/mediacms.io && cd /home/mediacms.io/
@ -89,13 +89,11 @@ Database can be backed up with pg_dump and media_files on /home/mediacms.io/medi
## Installation ## Installation
Install a recent version of [Docker](https://docs.docker.com/get-docker/), and [Docker Compose](https://docs.docker.com/compose/install/). Install a recent version of [Docker](https://docs.docker.com/get-docker/), and [Docker Compose](https://docs.docker.com/compose/install/).
For Ubuntu 20/22 systems this is: For Ubuntu systems this is:
```bash ```bash
curl -fsSL https://get.docker.com -o get-docker.sh curl -fsSL https://get.docker.com -o get-docker.sh
sudo sh get-docker.sh sudo sh get-docker.sh
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
``` ```
Then run as root Then run as root
@ -111,7 +109,7 @@ If you want to explore more options (including setup of https with letsencrypt c
Run Run
```bash ```bash
docker-compose up docker compose up
``` ```
This will download all MediaCMS related Docker images and start all containers. Once it finishes, MediaCMS will be installed and available on http://localhost or http://ip This will download all MediaCMS related Docker images and start all containers. Once it finishes, MediaCMS will be installed and available on http://localhost or http://ip
@ -131,8 +129,8 @@ Get latest MediaCMS image and stop/start containers
```bash ```bash
cd /path/to/mediacms/installation cd /path/to/mediacms/installation
docker pull mediacms/mediacms docker pull mediacms/mediacms
docker-compose down docker compose down
docker-compose up docker compose up
``` ```
### Update from version 2 to version 3 ### Update from version 2 to version 3
@ -172,7 +170,7 @@ Also see the `Dockerfile` for other environment variables which you may wish to
See example deployments in the sections below. These example deployments have been tested on `docker-compose version 1.27.4` running on `Docker version 19.03.13` See example deployments in the sections below. These example deployments have been tested on `docker-compose version 1.27.4` running on `Docker version 19.03.13`
To run, update the configs above if necessary, build the image by running `docker-compose build`, then run `docker-compose run` To run, update the configs above if necessary, build the image by running `docker compose build`, then run `docker compose run`
### Simple Deployment, accessed as http://localhost ### Simple Deployment, accessed as http://localhost
@ -189,7 +187,7 @@ Edit this file and set `VIRTUAL_HOST` as my_domain.com, `LETSENCRYPT_HOST` as my
Edit `deploy/docker/local_settings.py` and set https://my_domain.com as `FRONTEND_HOST` Edit `deploy/docker/local_settings.py` and set https://my_domain.com as `FRONTEND_HOST`
Now run docker-compose -f docker-compose-letsencrypt.yaml up, when installation finishes you will be able to access https://my_domain.com using a valid Letsencrypt certificate! Now run `docker compose -f docker-compose-letsencrypt.yaml up`, when installation finishes you will be able to access https://my_domain.com using a valid Letsencrypt certificate!
### Advanced Deployment, accessed as http://localhost:8000 ### Advanced Deployment, accessed as http://localhost:8000
@ -230,7 +228,7 @@ Single server installation: edit `cms/local_settings.py`, make a change and rest
Docker Compose installation: edit `deploy/docker/local_settings.py`, make a change and restart MediaCMS containers Docker Compose installation: edit `deploy/docker/local_settings.py`, make a change and restart MediaCMS containers
```bash ```bash
#docker-compose restart web celery_worker celery_beat #docker compose restart web celery_worker celery_beat
``` ```
### 5.1 Change portal logo ### 5.1 Change portal logo

View File

@ -65,13 +65,12 @@ translation_strings = {
'VIEW ALL': 'הצג הכל', 'VIEW ALL': 'הצג הכל',
'View all': 'הצג הכל', 'View all': 'הצג הכל',
'comment': 'תגובה', 'comment': 'תגובה',
'is a modern, fully featured open source video and media CMS. It is developed to meet the needs of modern web platforms for viewing and sharing media': 'is a modern, fully featured open source video and media CMS. It is developed to meet the needs of modern web platforms for viewing and sharing media': 'מערכת ניהול מדיה ווידאו מודרנית, פתוחה ומלאה בפיצ׳רים. פותחה כדי לענות על הצרכים של פלטפורמות אינטרנט מודרניות לצפייה ושיתוף מדיה.',
'מערכת ניהול מדיה ווידאו מודרנית, פתוחה ומלאה בפיצ׳רים. פותחה כדי לענות על הצרכים של פלטפורמות אינטרנט מודרניות לצפייה ושיתוף מדיה.',
'media in category': 'מדיה בקטגוריה', 'media in category': 'מדיה בקטגוריה',
'media in tag': 'מדיה בתגית', 'media in tag': 'מדיה בתגית',
'view': 'צפיות', 'view': 'צפיות',
'views': 'צפיות', 'views': 'צפיות',
'yet': 'עדיין' 'yet': 'עדיין',
} }
replacement_strings = { replacement_strings = {
@ -102,4 +101,4 @@ replacement_strings = {
'weeks ago': 'לפני שבועות', 'weeks ago': 'לפני שבועות',
'year ago': 'לפני שנה', 'year ago': 'לפני שנה',
'years ago': 'לפני שנים', 'years ago': 'לפני שנים',
} }

View File

@ -10,8 +10,9 @@ fi
while true; do while true; do
read -p " read -p "
This script will attempt to perform a system update, install required dependencies, install and configure PostgreSQL, NGINX, Redis and a few other utilities. This script will attempt to perform a system update and install services including PostgreSQL, nginx and Django.
It is expected to run on a new system **with no running instances of any these services**. Make sure you check the script before you continue. Then enter yes or no It is expected to run on a new system **with no running instances of any these services**.
This has been tested only in Ubuntu Linux 22 and 24. Make sure you check the script before you continue. Then enter yes or no
" yn " yn
case $yn in case $yn in
[Yy]* ) echo "OK!"; break;; [Yy]* ) echo "OK!"; break;;
@ -20,15 +21,7 @@ It is expected to run on a new system **with no running instances of any these s
esac esac
done done
apt-get update && apt-get -y upgrade && apt-get install pkg-config python3-venv python3-dev virtualenv redis-server postgresql nginx git gcc vim unzip imagemagick procps libxml2-dev libxmlsec1-dev libxmlsec1-openssl python3-certbot-nginx certbot wget xz-utils -y
osVersion=$(lsb_release -d)
if [[ $osVersion == *"Ubuntu 20"* ]] || [[ $osVersion == *"Ubuntu 22"* ]] || [[ $osVersion == *"buster"* ]] || [[ $osVersion == *"bullseye"* ]]; then
echo 'Performing system update and dependency installation, this will take a few minutes'
apt-get update && apt-get -y upgrade && apt-get install python3-venv python3-dev virtualenv redis-server postgresql nginx git gcc vim unzip imagemagick python3-certbot-nginx certbot wget xz-utils -y
else
echo "This script is tested for Ubuntu 20/22 versions only, if you want to try MediaCMS on another system you have to perform the manual installation"
exit
fi
# install ffmpeg # install ffmpeg
echo "Downloading and installing ffmpeg" echo "Downloading and installing ffmpeg"
@ -50,6 +43,7 @@ echo 'Creating database to be used in MediaCMS'
su -c "psql -c \"CREATE DATABASE mediacms\"" postgres su -c "psql -c \"CREATE DATABASE mediacms\"" postgres
su -c "psql -c \"CREATE USER mediacms WITH ENCRYPTED PASSWORD 'mediacms'\"" postgres su -c "psql -c \"CREATE USER mediacms WITH ENCRYPTED PASSWORD 'mediacms'\"" postgres
su -c "psql -c \"GRANT ALL PRIVILEGES ON DATABASE mediacms TO mediacms\"" postgres su -c "psql -c \"GRANT ALL PRIVILEGES ON DATABASE mediacms TO mediacms\"" postgres
su -c "psql -d mediacms -c \"GRANT CREATE, USAGE ON SCHEMA public TO mediacms\"" postgres
echo 'Creating python virtualenv on /home/mediacms.io' echo 'Creating python virtualenv on /home/mediacms.io'
@ -57,7 +51,7 @@ cd /home/mediacms.io
virtualenv . --python=python3 virtualenv . --python=python3
source /home/mediacms.io/bin/activate source /home/mediacms.io/bin/activate
cd mediacms cd mediacms
pip install -r requirements.txt pip install --no-binary lxml,xmlsec -r requirements.txt
SECRET_KEY=`python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'` SECRET_KEY=`python -c 'from django.core.management.utils import get_random_secret_key; print(get_random_secret_key())'`

View File

@ -1,6 +1,5 @@
Django==5.1.6 Django==5.1.6
djangorestframework==3.15.2 djangorestframework==3.15.2
lxml==5.0.0 # dont use later version, as theres a strange error "lxml & xmlsec libxml2 library version mismatch"
python3-saml==1.16.0 python3-saml==1.16.0
django-allauth==65.4.1 django-allauth==65.4.1
psycopg==3.2.4 psycopg==3.2.4