Hi,

I wrote an Update Script because a lot Steps to do it safely.

#!/bin/bash

nodebb_path="/root"
nodebb_compose="docker-compose-orgi.yml"

plugins_ol="nodebb-plugin-embed nodebb-plugin-math-captcha nodebb-plugin-embed nodebb-plugin-emoji-android nodebb-plugin-google-analytics nodebb-plugin-sso-google nodebb-plugin-tenor-gif nodebb-plugin-sso-github"

if [ ! -f "$nodebb_compose" ]; then
   echo "Compose does not exist, aborting"
   exit 1
fi

if [ ! -d "$nodebb_path/nodebb" ]; then
   echo "Path not exist, aborting"
   exit 1
fi

# Backup current Data

if [ -d "$nodebb_path/nodebb-backup" ]; then
  echo "nodebb-backup exist"
  read -p "Delete old backup? (Y/N): " confirm
  if [[ $confirm == [Yy] ]]; then
  echo "Deleting backup"
  rm -rf $nodebb_path/nodebb-backup
else
  echo "Do not Update without current backup"
  exit 1
fi
fi

echo "Backup NodeBB Folder"
cp -r "$nodebb_path/nodebb/" "$nodebb_path/nodebb-backup"
echo "Backup NodeBB Image"
docker save nodebb-nodebb:latest | gzip > "$nodebb_path/nodebb-backup/nodebb-nodebb_latest.tar.gz"

echo -e "\nFetch NodeBB Repository\n"
git fetch

echo -e "\nReset NodeBB Base\n"
git reset --hard origin/v4.x

echo -e "\nChange NodeBB User and Group\n"
chown -R 1001:1001 .docker public

echo -e "\nModify Dockerfile with Plugins\n"
if [[ $(grep -c "npm install" Dockerfile) -lt 2 ]]; then
sed -i "/EXPOSE 4567/a RUN npm install $plugins_ol" Dockerfile
fi
#echo "NPM Install count $(grep -c "npm install" Dockerfile)"

echo -e "\nBuilding NodeBB Image\n"
docker compose -f $nodebb_compose build

echo -e "\nDeploy NodeBB Image\n"
docker compose -f $nodebb_compose up -d

counter=0
while [ $(docker logs nodebb-nodebb-1 | grep -c "NodeBB is now listening") -lt 1 ]; do
   docker logs --tail 20 nodebb-nodebb-1
   sleep 10
   counter=$((counter+1))
   if [[ "$counter" -ge "30" ]]; then
      echo -e "\nNodeBB not Coming up, please investigate\n"
      exit 1
   fi
done

docker logs --tail 20 nodebb-nodebb-1

docker exec -i nodebb-nodebb-1  npm list | grep nodebb > /tmp/nodebb-plugins.txt

for i in $plugins_ol; do
    if [[ $(grep -c $i /tmp/nodebb-plugins.txt) == 1 ]]; then
       echo "Plugin Installed $i"
    else
         echo "Plugin Not Installed $i"
    fi
done

https://forum.its-egner.de/topic/4589/nodebb-docker-update-script

Greetings