[Wiki.js] Auto Upgrade Script
-
Hi
Sorry if I’m not in the right category.
It’s nothing compared to @phenomlab and for all that he gives us but here’s a small contribution.
I use the excellent software Wiki.js for my Wiki and I wrote this script and I share it with you
Informations
– The script allows you to automatically upgrade Wiki.js.
– It pre-checks the installed version and compares it with the latest available on GitHub.
– A backup of Wiki.js is made before the version upgrade in a defined directory.
– The script has a –rollback option which allows you to return to the version installed before the execution of the script thanks to the backup if a problem occurs. (This does not prevent having another backup on hand
)
Use
– Copy and adapt the code below and paste it into a file named
:nano upgrade-wikijs.sh
– Make the script executable :
chmod +x upgrade-wikijs.sh
– Use it :
./upgrade-wikijs.sh ./upgrade-wikijs.sh --rollback
CODE
– I consider postgreSQL database engine is installed for Wiki.js
This is the best possible choice for the future.– Adapt the code below :
#!/bin/bash ##################################################### #### Auteur: DownPW #### Date: 06.12.2021 ##################################################### ################ Upgrade wiki.js #################### ##################################################### ### ### Definition of variables WIKIDIR=/pathtoyourwiki PACKAGE_VERSION_OLD=$(sed -nE 's/^\s*"version": "(.*?)",$/\1/p' $WIKIDIR/package.json) CURRENT_WIKI=$(curl -s https://api.github.com/repos/Requarks/wiki/releases/latest | grep tag_name | head -n 1 | cut -d '"' -f 4) CURRENT_WIKI_DOWNLOAD="https://github.com/Requarks/wiki/releases/download/$CURRENT_WIKI/wiki-js.tar.gz" ### Script option: Rollback to old version if [[ $1 == "--rollback" ]] then if [[ -d /home/XXXX/wiki.bak ]] then PACKAGE_VERSION_BACKUP=$(sed -nE 's/^\s*"version": "(.*?)",$/\1/p' /home/XXXX/wiki.bak/wikipw/package.json) echo "Stop wiki.js ..." systemctl stop wiki echo "Stop wiki.js OK..." echo "Stop postgresql ..." systemctl stop postgresql echo "Stop postgresql OK..." echo "Rollback to $PACKAGE_VERSION_BACKUP ..." rm -rf $WIKIDIR/* && cp -r /home/XXXX/wiki.bak/wikipw/* $WIKIDIR echo "Rollback to $PACKAGE_VERSION_BACKUP OK" echo "Reload and restart necessary services ..." systemctl daemon-reload systemctl enable wiki systemctl reload nginx.service nginx -t systemctl restart nginx.service systemctl start postgresql echo "Reload and restart necessary services OK" echo "Starting Wiki.js. It may take a few seconds ..." systemctl start wiki echo "Starting Wiki.js OK" exit 0 else echo "No backups found :(" exit 1 fi fi ### Backup of the old version and Upgrade to the new one if [[ $CURRENT_WIKI != $PACKAGE_VERSION_OLD ]] then read -r -p "Do you want to update Wiki.js $PACKAGE_VERSION_OLD to the version $CURRENT_WIKI? [Y/n] " response if [[ $response =~ ^([yY]|"")$ ]] then echo "Stop wiki.js ..." systemctl stop wiki echo "Stop wiki.js OK" echo "Stop postgresql ..." systemctl stop postgresql echo "Stop postgresql OK" echo "Wiki.js update ..." echo "version download $CURRENT_WIKI ..." (cd /home/XXXX/ && curl --progress-bar -LO $CURRENT_WIKI_DOWNLOAD) echo "version download $CURRENT_WIKI OK" echo "Removed old residue from this script ..." rm -rf /home/XXXX/wiki.bak echo "Removed old residue from this script OK" echo "Creating the working directory ..." mkdir /home/XXXX/wiki.bak/ echo "Creating the working directory OK" echo "Configuration backup $PACKAGE_VERSION_OLD ..." cp $WIKIDIR/config.yml /home/XXXX/config.yml.bak cp -r $WIKIDIR /home/XXXX/wiki.bak echo "Configuration backup $PACKAGE_VERSION_OLD OK" echo "Version deletion $PACKAGE_VERSION_OLD ..." rm -rf $WIKIDIR/* echo "Version deletion $PACKAGE_VERSION_OLD OK" echo "Extraction and installation of the version $CURRENT_WIKI ..." tar xzf /home/XXXX/wiki-js.tar.gz -C $WIKIDIR && rm /home/XXXX/wiki-js.tar.gz cp /home/XXXX/config.yml.bak $WIKIDIR/config.yml && rm /home/XXXX/config.yml.bak echo "Extraction and installation of the version $CURRENT_WIKI OK" echo "Reload and restart necessary services :" systemctl daemon-reload systemctl enable wiki systemctl reload nginx.service nginx -t systemctl restart nginx.service systemctl start postgresql echo "Reload and restart necessary services OK" echo "################" PACKAGE_VERSION=$(sed -nE 's/^\s*"version": "(.*?)",$/\1/p' $WIKIDIR/package.json) echo "Wiki.js $PACKAGE_VERSION_OLD has been updated to version $PACKAGE_VERSION" echo "################" echo "Start Wiki.js. It may take a few seconds ..." systemctl start wiki echo "Start Wiki.js OK" echo "----------------" echo "Status of necessary services ..." systemctl status nginx echo "----------------" systemctl status postgresql echo "----------------" systemctl status wiki echo "----------------" echo "If something is wrong, please check the logs: 'journalctl -u wiki.service --since today'" echo "To undo the update to the latest version, use the option '--rollback'" echo "----------------" fi else ### Wiki.js UP TO DATE echo "################" echo "Wiki.js $PACKAGE_VERSION_OLD is already up to date. No update needed" echo "################" fi
Sorry if the traduction is not excellent
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (ether email, or push notification). You'll also be able to save bookmarks, use reactions, and upvote to show your appreciation to other community members.
With your input, this post could be even better 💗
RegisterLog in