2020-04-10 01:41:33 +02:00
|
|
|
#!/usr/bin/env bash
|
|
|
|
|
2020-05-05 18:01:08 +02:00
|
|
|
# Global variables
|
2020-04-13 12:35:58 +02:00
|
|
|
OPENVIDU_FOLDER=openvidu
|
2020-05-12 13:51:17 +02:00
|
|
|
OPENVIDU_VERSION=v2.14.0
|
2020-04-13 12:35:58 +02:00
|
|
|
|
2020-05-05 18:01:08 +02:00
|
|
|
fatal_error() {
|
|
|
|
printf "\n =======¡ERROR!======="
|
|
|
|
printf "\n %s" "$1"
|
|
|
|
printf "\n"
|
|
|
|
exit 0
|
|
|
|
}
|
|
|
|
|
|
|
|
new_ov_installation() {
|
|
|
|
printf '\n'
|
|
|
|
printf '\n ======================================='
|
|
|
|
printf '\n Install Openvidu CE %s' "${OPENVIDU_VERSION}"
|
|
|
|
printf '\n ======================================='
|
|
|
|
printf '\n'
|
|
|
|
|
|
|
|
# Create folder openvidu-docker-compose
|
|
|
|
printf '\n => Creating folder '%s'...' "${OPENVIDU_FOLDER}"
|
|
|
|
mkdir "${OPENVIDU_FOLDER}" || fatal_error "Error while creating the folder '${OPENVIDU_FOLDER}'"
|
|
|
|
|
2020-05-08 18:49:20 +02:00
|
|
|
# Download necessary files
|
2020-05-05 18:01:08 +02:00
|
|
|
printf '\n => Downloading Openvidu CE files:'
|
|
|
|
|
|
|
|
curl --silent https://raw.githubusercontent.com/OpenVidu/openvidu/${OPENVIDU_VERSION}/openvidu-server/docker/openvidu-docker-compose/.env \
|
|
|
|
--output "${OPENVIDU_FOLDER}/.env" || fatal_error "Error when downloading the file '.env'"
|
|
|
|
printf '\n - .env'
|
|
|
|
|
|
|
|
curl --silent https://raw.githubusercontent.com/OpenVidu/openvidu/${OPENVIDU_VERSION}/openvidu-server/docker/openvidu-docker-compose/docker-compose.override.yml \
|
|
|
|
--output "${OPENVIDU_FOLDER}/docker-compose.override.yml" || fatal_error "Error when downloading the file 'docker-compose.override.yml'"
|
|
|
|
printf '\n - docker-compose.override.yml'
|
|
|
|
|
|
|
|
curl --silent https://raw.githubusercontent.com/OpenVidu/openvidu/${OPENVIDU_VERSION}/openvidu-server/docker/openvidu-docker-compose/docker-compose.yml \
|
|
|
|
--output "${OPENVIDU_FOLDER}/docker-compose.yml" || fatal_error "Error when downloading the file 'docker-compose.yml'"
|
2020-05-07 12:38:56 +02:00
|
|
|
printf '\n - docker-compose.yml'
|
2020-05-05 18:01:08 +02:00
|
|
|
|
|
|
|
curl --silent https://raw.githubusercontent.com/OpenVidu/openvidu/${OPENVIDU_VERSION}/openvidu-server/docker/openvidu-docker-compose/openvidu \
|
|
|
|
--output "${OPENVIDU_FOLDER}/openvidu" || fatal_error "Error when downloading the file 'openvidu'"
|
|
|
|
printf '\n - openvidu'
|
|
|
|
|
|
|
|
curl --silent https://raw.githubusercontent.com/OpenVidu/openvidu/${OPENVIDU_VERSION}/openvidu-server/docker/openvidu-docker-compose/readme.md \
|
|
|
|
--output "${OPENVIDU_FOLDER}/readme.md" || fatal_error "Error when downloading the file 'readme.md'"
|
|
|
|
printf '\n - readme.md'
|
|
|
|
|
|
|
|
# Add execution permissions
|
|
|
|
printf "\n => Adding permission to 'openvidu' program..."
|
|
|
|
chmod +x "${OPENVIDU_FOLDER}/openvidu" || fatal_error "Error while adding permission to 'openvidu' program"
|
|
|
|
|
|
|
|
# Create own certificated folder
|
|
|
|
printf "\n => Creating folder 'owncert'..."
|
|
|
|
mkdir "${OPENVIDU_FOLDER}/owncert" || fatal_error "Error while creating the folder 'owncert'"
|
|
|
|
|
|
|
|
# Ready to use
|
|
|
|
printf '\n'
|
|
|
|
printf '\n'
|
|
|
|
printf '\n ======================================='
|
|
|
|
printf '\n Openvidu Platform successfully installed.'
|
|
|
|
printf '\n ======================================='
|
|
|
|
printf '\n'
|
|
|
|
printf '\n 1. Go to openvidu folder:'
|
|
|
|
printf '\n $ cd openvidu'
|
|
|
|
printf '\n'
|
|
|
|
printf '\n 2. Configure DOMAIN_OR_PUBLIC_IP and OPENVIDU_SECRET in .env file:'
|
2020-05-07 12:38:56 +02:00
|
|
|
printf '\n $ nano .env'
|
2020-05-05 18:01:08 +02:00
|
|
|
printf '\n'
|
|
|
|
printf '\n 3. Start OpenVidu'
|
|
|
|
printf '\n $ ./openvidu start'
|
|
|
|
printf '\n'
|
|
|
|
printf '\n For more information, check readme.md'
|
|
|
|
printf '\n'
|
|
|
|
printf '\n'
|
|
|
|
exit 0
|
|
|
|
}
|
|
|
|
|
|
|
|
upgrade_ov() {
|
|
|
|
# Search local Openvidu installation
|
|
|
|
printf '\n'
|
|
|
|
printf '\n ============================================'
|
|
|
|
printf '\n Search Previous Installation of Openvidu'
|
|
|
|
printf '\n ============================================'
|
|
|
|
printf '\n'
|
|
|
|
|
|
|
|
SEARCH_IN_FOLDERS=(
|
2020-05-07 12:38:56 +02:00
|
|
|
"${PWD}"
|
|
|
|
"/opt/${OPENVIDU_FOLDER}"
|
2020-05-05 18:01:08 +02:00
|
|
|
)
|
|
|
|
|
|
|
|
for folder in "${SEARCH_IN_FOLDERS[@]}"; do
|
|
|
|
printf "\n => Searching in '%s' folder..." "${folder}"
|
|
|
|
|
|
|
|
if [ -f "${folder}/docker-compose.yml" ]; then
|
|
|
|
OPENVIDU_PREVIOUS_FOLDER="${folder}"
|
|
|
|
|
|
|
|
printf "\n => Found installation in folder '%s'" "${folder}"
|
|
|
|
break
|
|
|
|
fi
|
|
|
|
done
|
|
|
|
|
|
|
|
[ -z "${OPENVIDU_PREVIOUS_FOLDER}" ] && fatal_error "No previous Openvidu installation found"
|
|
|
|
|
|
|
|
# Uppgrade Openvidu
|
|
|
|
OPENVIDU_PREVIOUS_VERSION=$(grep 'Openvidu Version:' "${OPENVIDU_PREVIOUS_FOLDER}/docker-compose.yml" | awk '{ print $4 }')
|
|
|
|
[ -z "${OPENVIDU_PREVIOUS_VERSION}" ] && OPENVIDU_PREVIOUS_VERSION=2.13.0
|
|
|
|
|
2020-05-07 12:38:56 +02:00
|
|
|
# In this point using the variable 'OPENVIDU_PREVIOUS_VERSION' we can verify if the upgrade is
|
2020-05-05 18:01:08 +02:00
|
|
|
# posible or not. If it is not posible launch a warning and stop the upgrade.
|
|
|
|
|
|
|
|
printf '\n'
|
|
|
|
printf '\n ======================================='
|
|
|
|
printf '\n Upgrade Openvidu CE %s to %s' "${OPENVIDU_PREVIOUS_VERSION}" "${OPENVIDU_VERSION}"
|
|
|
|
printf '\n ======================================='
|
|
|
|
printf '\n'
|
|
|
|
|
|
|
|
ROLL_BACK_FOLDER="${OPENVIDU_PREVIOUS_FOLDER}/.old-${OPENVIDU_PREVIOUS_VERSION}"
|
2020-05-06 14:34:20 +02:00
|
|
|
TMP_FOLDER="${OPENVIDU_PREVIOUS_FOLDER}/tmp"
|
2020-05-07 12:16:31 +02:00
|
|
|
ACTUAL_FOLDER="$PWD"
|
2020-05-06 14:34:20 +02:00
|
|
|
USE_OV_CALL=$(grep -E '^ image: openvidu/openvidu-call:2.12.0$' "${OPENVIDU_PREVIOUS_FOLDER}/docker-compose.override.yml" | tr -d '[:space:]')
|
|
|
|
|
2020-05-08 18:49:20 +02:00
|
|
|
printf "\n Creating rollback folder '%s'..." ".old-${OPENVIDU_PREVIOUS_VERSION}"
|
2020-05-05 18:01:08 +02:00
|
|
|
mkdir "${ROLL_BACK_FOLDER}" || fatal_error "Error while creating the folder '.old-${OPENVIDU_PREVIOUS_VERSION}'"
|
|
|
|
|
2020-05-06 14:34:20 +02:00
|
|
|
printf "\n Creating temporal folder 'tmp'..."
|
|
|
|
mkdir "${TMP_FOLDER}" || fatal_error "Error while creating the folder 'temporal'"
|
2020-05-05 18:01:08 +02:00
|
|
|
|
2020-05-08 18:49:20 +02:00
|
|
|
# Download necessary files
|
2020-05-05 18:01:08 +02:00
|
|
|
printf '\n => Downloading new Openvidu CE files:'
|
|
|
|
|
|
|
|
curl --silent https://raw.githubusercontent.com/OpenVidu/openvidu/${OPENVIDU_VERSION}/openvidu-server/docker/openvidu-docker-compose/docker-compose.yml \
|
2020-05-06 14:34:20 +02:00
|
|
|
--output "${TMP_FOLDER}/docker-compose.yml" || fatal_error "Error when downloading the file 'docker-compose.yml'"
|
2020-05-05 18:01:08 +02:00
|
|
|
printf '\n - docker-compose.yml'
|
|
|
|
|
2020-05-06 14:46:05 +02:00
|
|
|
curl --silent https://raw.githubusercontent.com/OpenVidu/openvidu/${OPENVIDU_VERSION}/openvidu-server/docker/openvidu-docker-compose/docker-compose.override.yml \
|
|
|
|
--output "${TMP_FOLDER}/docker-compose.override.yml" || fatal_error "Error when downloading the file 'docker-compose.override.yml'"
|
|
|
|
printf "\n - docker-compose.override.yml"
|
|
|
|
|
|
|
|
curl --silent https://raw.githubusercontent.com/OpenVidu/openvidu/${OPENVIDU_VERSION}/openvidu-server/docker/openvidu-docker-compose/.env \
|
|
|
|
--output "${TMP_FOLDER}/.env" || fatal_error "Error when downloading the file '.env'"
|
|
|
|
printf '\n - .env'
|
|
|
|
|
2020-05-05 18:01:08 +02:00
|
|
|
curl --silent https://raw.githubusercontent.com/OpenVidu/openvidu/${OPENVIDU_VERSION}/openvidu-server/docker/openvidu-docker-compose/openvidu \
|
2020-05-06 14:34:20 +02:00
|
|
|
--output "${TMP_FOLDER}/openvidu" || fatal_error "Error when downloading the file 'openvidu'"
|
2020-05-05 18:01:08 +02:00
|
|
|
printf '\n - openvidu'
|
|
|
|
|
|
|
|
curl --silent https://raw.githubusercontent.com/OpenVidu/openvidu/${OPENVIDU_VERSION}/openvidu-server/docker/openvidu-docker-compose/readme.md \
|
2020-05-06 14:34:20 +02:00
|
|
|
--output "${TMP_FOLDER}/readme.md" || fatal_error "Error when downloading the file 'readme.md'"
|
|
|
|
printf '\n - readme.md'
|
|
|
|
|
|
|
|
# Dowloading new images and stoped actual Openvidu
|
|
|
|
printf '\n => Dowloading new images...'
|
2020-05-06 14:53:20 +02:00
|
|
|
printf '\n'
|
|
|
|
sleep 1
|
|
|
|
|
2020-05-07 12:16:31 +02:00
|
|
|
printf "\n => Moving to 'tmp' folder..."
|
2020-05-07 12:48:37 +02:00
|
|
|
printf '\n'
|
2020-05-07 12:16:31 +02:00
|
|
|
cd "${TMP_FOLDER}" || fatal_error "Error when moving to 'tmp' folder"
|
|
|
|
docker-compose pull | true
|
2020-05-07 12:38:56 +02:00
|
|
|
|
2020-05-06 14:34:20 +02:00
|
|
|
printf '\n => Stoping Openvidu...'
|
2020-05-06 14:46:05 +02:00
|
|
|
printf '\n'
|
2020-05-06 14:53:20 +02:00
|
|
|
sleep 1
|
|
|
|
|
2020-05-07 12:16:31 +02:00
|
|
|
printf "\n => Moving to 'openvidu' folder..."
|
2020-05-07 12:38:56 +02:00
|
|
|
printf '\n'
|
2020-05-07 12:16:31 +02:00
|
|
|
cd "${OPENVIDU_PREVIOUS_FOLDER}" || fatal_error "Error when moving to 'openvidu' folder"
|
|
|
|
docker-compose down | true
|
|
|
|
|
2020-05-06 14:46:05 +02:00
|
|
|
printf '\n'
|
2020-05-07 12:16:31 +02:00
|
|
|
printf '\n => Moving to working dir...'
|
|
|
|
cd "${ACTUAL_FOLDER}" || fatal_error "Error when moving to working dir"
|
2020-05-06 14:34:20 +02:00
|
|
|
|
2020-05-08 18:49:20 +02:00
|
|
|
# Move old files to rollback folder
|
2020-05-06 14:34:20 +02:00
|
|
|
printf '\n => Moving previous installation files to rollback folder:'
|
2020-05-06 14:46:05 +02:00
|
|
|
|
2020-05-06 14:34:20 +02:00
|
|
|
mv "${OPENVIDU_PREVIOUS_FOLDER}/docker-compose.yml" "${ROLL_BACK_FOLDER}" || fatal_error "Error while moving previous 'docker-compose.yml'"
|
|
|
|
printf '\n - docker-compose.yml'
|
2020-05-06 14:46:05 +02:00
|
|
|
|
2020-05-06 14:34:20 +02:00
|
|
|
if [ ! -z "${USE_OV_CALL}" ]; then
|
|
|
|
mv "${OPENVIDU_PREVIOUS_FOLDER}/docker-compose.override.yml" "${ROLL_BACK_FOLDER}" || fatal_error "Error while moving previous 'docker-compose.override.yml'"
|
|
|
|
printf '\n - docker-compose.override.yml'
|
|
|
|
fi
|
|
|
|
|
2020-05-06 14:46:05 +02:00
|
|
|
mv "${OPENVIDU_PREVIOUS_FOLDER}/openvidu" "${ROLL_BACK_FOLDER}" || fatal_error "Error while moving previous 'openvidu'"
|
|
|
|
printf '\n - openvidu'
|
|
|
|
|
|
|
|
mv "${OPENVIDU_PREVIOUS_FOLDER}/readme.md" "${ROLL_BACK_FOLDER}" || fatal_error "Error while moving previous 'readme.md'"
|
|
|
|
printf '\n - readme.md'
|
|
|
|
|
2020-05-06 14:34:20 +02:00
|
|
|
# Move tmp files to Openvidu
|
|
|
|
printf '\n => Updating files:'
|
2020-05-06 14:46:05 +02:00
|
|
|
|
2020-05-06 14:34:20 +02:00
|
|
|
mv "${TMP_FOLDER}/docker-compose.yml" "${OPENVIDU_PREVIOUS_FOLDER}" || fatal_error "Error while updating 'docker-compose.yml'"
|
|
|
|
printf '\n - docker-compose.yml'
|
2020-05-06 14:46:05 +02:00
|
|
|
|
2020-05-06 14:34:20 +02:00
|
|
|
if [ ! -z "${USE_OV_CALL}" ]; then
|
|
|
|
mv "${TMP_FOLDER}/docker-compose.override.yml" "${OPENVIDU_PREVIOUS_FOLDER}" || fatal_error "Error while updating 'docker-compose.override.yml'"
|
|
|
|
printf '\n - docker-compose.override.yml'
|
2020-05-06 14:46:05 +02:00
|
|
|
else
|
|
|
|
mv "${TMP_FOLDER}/docker-compose.override.yml" "${OPENVIDU_PREVIOUS_FOLDER}/docker-compose.override.yml-${OPENVIDU_VERSION}" || fatal_error "Error while updating 'docker-compose.override.yml'"
|
|
|
|
printf '\n - docker-compose.override.yml-%s' "${OPENVIDU_VERSION}"
|
2020-05-06 14:34:20 +02:00
|
|
|
fi
|
2020-05-05 18:01:08 +02:00
|
|
|
|
2020-05-06 14:53:20 +02:00
|
|
|
mv "${TMP_FOLDER}/.env" "${OPENVIDU_PREVIOUS_FOLDER}/.env-${OPENVIDU_VERSION}" || fatal_error "Error while moving previous '.env'"
|
2020-05-06 14:46:05 +02:00
|
|
|
printf '\n - .env-%s' "${OPENVIDU_VERSION}"
|
|
|
|
|
|
|
|
mv "${TMP_FOLDER}/openvidu" "${OPENVIDU_PREVIOUS_FOLDER}" || fatal_error "Error while updating 'openvidu'"
|
|
|
|
printf '\n - openvidu'
|
|
|
|
|
|
|
|
mv "${TMP_FOLDER}/readme.md" "${OPENVIDU_PREVIOUS_FOLDER}" || fatal_error "Error while updating 'readme.md'"
|
|
|
|
printf '\n - readme.md'
|
|
|
|
|
2020-05-06 16:28:47 +02:00
|
|
|
printf "\n => Deleting 'tmp' folder"
|
2020-05-06 14:53:20 +02:00
|
|
|
rm -rf "${TMP_FOLDER}" || fatal_error "Error deleting 'tmp' folder"
|
|
|
|
|
2020-05-05 18:01:08 +02:00
|
|
|
# Add execution permissions
|
|
|
|
printf "\n => Adding permission to 'openvidu' program..."
|
|
|
|
chmod +x "${OPENVIDU_PREVIOUS_FOLDER}/openvidu" || fatal_error "Error while adding permission to 'openvidu' program"
|
|
|
|
|
|
|
|
# Ready to use
|
|
|
|
printf '\n'
|
|
|
|
printf '\n'
|
2020-05-08 18:49:20 +02:00
|
|
|
printf '\n ================================================'
|
|
|
|
printf "\n Openvidu successfully upgraded to version %s" "${OPENVIDU_VERSION}"
|
|
|
|
printf '\n ================================================'
|
2020-05-05 18:01:08 +02:00
|
|
|
printf '\n'
|
2020-05-08 18:49:20 +02:00
|
|
|
printf "\n 1. A new file 'docker-compose.yml' has been created with the new OpenVidu %s services" "${OPENVIDU_VERSION}"
|
2020-05-06 12:48:53 +02:00
|
|
|
printf '\n'
|
2020-05-08 18:49:20 +02:00
|
|
|
printf "\n 2. The previous file '.env' remains intact, but a new file '.env-%s' has been created." "${OPENVIDU_VERSION}"
|
|
|
|
printf "\n Transfer any configuration you wish to keep in the upgraded version from '.env' to '.env-%s'." "${OPENVIDU_VERSION}"
|
|
|
|
printf "\n When you are OK with it, rename and leave as the only '.env' file of the folder the new '.env-%s'." "${OPENVIDU_VERSION}"
|
2020-05-06 12:48:53 +02:00
|
|
|
printf '\n'
|
2020-05-08 18:49:20 +02:00
|
|
|
printf "\n 3. If you were using Openvidu Call application, it has been automatically updated in file 'docker-compose.override.yml'."
|
|
|
|
printf "\n However, if you were using your own application, a file called 'docker-compose.override.yml-%s'" "${OPENVIDU_VERSION}"
|
|
|
|
printf "\n has been created with the latest version of Openvidu Call. If you don't plan to use it you can delete it."
|
2020-05-06 13:00:06 +02:00
|
|
|
printf '\n'
|
|
|
|
printf '\n 4. Start new version of Openvidu'
|
|
|
|
printf '\n $ ./openvidu start'
|
2020-05-06 12:48:53 +02:00
|
|
|
printf '\n'
|
2020-05-08 18:49:20 +02:00
|
|
|
printf "\n If you want to rollback, all the files from the previous installation have been copied to folder '.old-%s'" "${OPENVIDU_PREVIOUS_VERSION}"
|
2020-05-06 16:44:47 +02:00
|
|
|
printf '\n'
|
2020-05-06 12:48:53 +02:00
|
|
|
printf '\n For more information, check readme.md'
|
|
|
|
printf '\n'
|
2020-05-05 18:01:08 +02:00
|
|
|
printf '\n'
|
|
|
|
}
|
|
|
|
|
2020-04-10 01:41:33 +02:00
|
|
|
# Check docker and docker-compose installation
|
2020-04-24 12:47:24 +02:00
|
|
|
if ! command -v docker > /dev/null; then
|
2020-04-10 01:41:33 +02:00
|
|
|
echo "You don't have docker installed, please install it and re-run the command"
|
|
|
|
exit 0
|
|
|
|
fi
|
|
|
|
|
2020-04-24 12:47:24 +02:00
|
|
|
if ! command -v docker-compose > /dev/null; then
|
2020-04-10 01:41:33 +02:00
|
|
|
echo "You don't have docker-compose installed, please install it and re-run the command"
|
|
|
|
exit 0
|
2020-04-24 12:47:24 +02:00
|
|
|
else
|
|
|
|
COMPOSE_VERSION=$(docker-compose version --short | sed "s/-rc[0-9]*//")
|
|
|
|
if ! printf '%s\n%s\n' "1.24" "$COMPOSE_VERSION" | sort -V -C; then
|
|
|
|
echo "You need a docker-compose version equal or higher than 1.24, please update your docker-compose and re-run the command"; \
|
|
|
|
exit 0
|
|
|
|
fi
|
2020-04-10 01:41:33 +02:00
|
|
|
fi
|
|
|
|
|
2020-05-05 18:01:08 +02:00
|
|
|
# Check type of installation
|
|
|
|
if [[ ! -z "$1" && "$1" == "upgrade" ]]; then
|
|
|
|
upgrade_ov
|
|
|
|
else
|
|
|
|
new_ov_installation
|
|
|
|
fi
|