From a5acce4ab10b747c8a683ca8b769475b020f23da Mon Sep 17 00:00:00 2001 From: Markos Gogoulos Date: Sun, 15 Jun 2025 11:19:29 +0300 Subject: [PATCH] fix: single server install issues --- Dockerfile | 8 ++++---- cms/version.py | 2 +- docs/admins_docs.md | 26 ++++++++++++-------------- files/frontend_translations/he.py | 7 +++---- install.sh | 18 ++++++------------ requirements.txt | 1 - 6 files changed, 26 insertions(+), 36 deletions(-) diff --git a/Dockerfile b/Dockerfile index c959420b..a0f4eb45 100644 --- a/Dockerfile +++ b/Dockerfile @@ -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 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 ############ RUNTIME IMAGE ############ -FROM python:3.13-bookworm AS runtime_image +FROM python:3.13.5-bookworm AS runtime_image SHELL ["/bin/bash", "-c"] @@ -37,7 +37,7 @@ ENV PATH="$VIRTUAL_ENV/bin:$PATH" # Install runtime system dependencies RUN apt-get update -y && \ 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/* && \ apt-get purge --auto-remove && \ apt-get clean @@ -58,7 +58,7 @@ COPY requirements.txt requirements-dev.txt ./ 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 \ echo "Installing development dependencies..." && \ pip install --no-cache-dir -r requirements-dev.txt; \ diff --git a/cms/version.py b/cms/version.py index d8fc4261..0b3cde5a 100644 --- a/cms/version.py +++ b/cms/version.py @@ -1 +1 @@ -VERSION = "6.0.0" +VERSION = "6.0.1" diff --git a/docs/admins_docs.md b/docs/admins_docs.md index 095ec8d1..4345902d 100644 --- a/docs/admins_docs.md +++ b/docs/admins_docs.md @@ -2,7 +2,7 @@ ## Table of contents - [1. Welcome](#1-welcome) -- [2. Server Installaton](#2-server-installation) +- [2. Single Server Installaton](#2-single-server-installation) - [3. Docker Installation](#3-docker-installation) - [4. Docker Deployment options](#4-docker-deployment-options) - [5. Configuration](#5-configuration) @@ -31,14 +31,14 @@ ## 1. Welcome 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. -Automated script - tested on Ubuntu 20, Ubuntu 22 and Debian Buster + ```bash 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 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 curl -fsSL https://get.docker.com -o 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 @@ -111,7 +109,7 @@ If you want to explore more options (including setup of https with letsencrypt c Run ```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 @@ -131,8 +129,8 @@ Get latest MediaCMS image and stop/start containers ```bash cd /path/to/mediacms/installation docker pull mediacms/mediacms -docker-compose down -docker-compose up +docker compose down +docker compose up ``` ### 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` -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 @@ -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` -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 @@ -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 ```bash -#docker-compose restart web celery_worker celery_beat +#docker compose restart web celery_worker celery_beat ``` ### 5.1 Change portal logo diff --git a/files/frontend_translations/he.py b/files/frontend_translations/he.py index a66592a5..022f1205 100644 --- a/files/frontend_translations/he.py +++ b/files/frontend_translations/he.py @@ -65,13 +65,12 @@ translation_strings = { 'VIEW ALL': 'הצג הכל', 'View all': 'הצג הכל', '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 tag': 'מדיה בתגית', 'view': 'צפיות', 'views': 'צפיות', - 'yet': 'עדיין' + 'yet': 'עדיין', } replacement_strings = { @@ -102,4 +101,4 @@ replacement_strings = { 'weeks ago': 'לפני שבועות', 'year ago': 'לפני שנה', 'years ago': 'לפני שנים', -} \ No newline at end of file +} diff --git a/install.sh b/install.sh index 9aedaba5..65b50538 100644 --- a/install.sh +++ b/install.sh @@ -10,8 +10,9 @@ fi while true; do 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. -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 +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**. +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 case $yn in [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 done - -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 +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 # install 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 USER mediacms WITH ENCRYPTED PASSWORD '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' @@ -57,7 +51,7 @@ cd /home/mediacms.io virtualenv . --python=python3 source /home/mediacms.io/bin/activate 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())'` diff --git a/requirements.txt b/requirements.txt index 698b3567..4846af89 100644 --- a/requirements.txt +++ b/requirements.txt @@ -1,6 +1,5 @@ Django==5.1.6 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 django-allauth==65.4.1 psycopg==3.2.4