2020-12-23 16:56:17 +01:00
#!/usr/bin/env bash
# Global variables
OPENVIDU_FOLDER = openvidu
OPENVIDU_VERSION = master
2024-05-28 11:47:24 +02:00
OPENVIDU_UPGRADABLE_VERSION = "2.30"
2020-12-23 16:56:17 +01:00
AWS_SCRIPTS_FOLDER = ${ OPENVIDU_FOLDER } /cluster/aws
ELASTICSEARCH_FOLDER = ${ OPENVIDU_FOLDER } /elasticsearch
BEATS_FOLDER = ${ OPENVIDU_FOLDER } /beats
DOWNLOAD_URL = https://raw.githubusercontent.com/OpenVidu/openvidu/${ OPENVIDU_VERSION }
2022-04-21 14:00:21 +02:00
# Support docker compose v1 and v2
shopt -s expand_aliases
alias docker-compose= 'docker compose'
2023-03-18 02:54:09 +01:00
if ! docker compose version & >/dev/null; then
unalias docker-compose
2022-04-21 14:00:21 +02:00
fi
# Change default http timeout for slow networks
export COMPOSE_HTTP_TIMEOUT = 500
export DOCKER_CLIENT_TIMEOUT = 500
2020-12-23 16:56:17 +01:00
fatal_error( ) {
2023-03-18 02:54:09 +01:00
printf "\n =======¡ERROR!======="
printf "\n %s" " $1 "
printf "\n"
exit 1
2020-12-23 16:56:17 +01:00
}
new_ov_installation( ) {
printf '\n'
printf '\n ======================================='
2021-04-20 16:36:33 +02:00
printf '\n Install OpenVidu Pro %s' " ${ OPENVIDU_VERSION } "
2020-12-23 16:56:17 +01:00
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 } ' "
# Create aws scripts folder
printf "\n => Creating folder 'cluster/aws'..."
mkdir -p " ${ AWS_SCRIPTS_FOLDER } " || fatal_error "Error while creating the folder 'cluster/aws'"
# Create beats folder
printf "\n => Creating folder 'beats'..."
mkdir -p " ${ BEATS_FOLDER } " || fatal_error "Error while creating the folder 'beats'"
# Create elasticsearch folder
printf "\n => Creating folder 'elasticsearch'..."
mkdir -p " ${ ELASTICSEARCH_FOLDER } " || fatal_error "Error while creating the folder 'elasticsearch'"
printf "\n => Changing permission to 'elasticsearch' folder..."
chown 1000:1000 " ${ ELASTICSEARCH_FOLDER } " || fatal_error "Error while changing permission to 'elasticsearch' folder"
# Download necessary files
2021-04-20 16:36:33 +02:00
printf '\n => Downloading OpenVidu Pro files:'
2020-12-23 16:56:17 +01:00
2023-03-27 11:42:06 +02:00
curl --silent ${ DOWNLOAD_URL } /openvidu-server/deployments/enterprise/docker-compose/cluster/aws/openvidu_autodiscover.sh \
2020-12-23 16:56:17 +01:00
--output " ${ AWS_SCRIPTS_FOLDER } /openvidu_autodiscover.sh " || fatal_error "Error when downloading the file 'openvidu_autodiscover.sh'"
printf '\n - openvidu_autodiscover.sh'
2023-03-27 11:42:06 +02:00
curl --silent ${ DOWNLOAD_URL } /openvidu-server/deployments/enterprise/docker-compose/cluster/aws/openvidu_drop.sh \
2020-12-23 16:56:17 +01:00
--output " ${ AWS_SCRIPTS_FOLDER } /openvidu_drop.sh " || fatal_error "Error when downloading the file 'openvidu_drop.sh'"
printf '\n - openvidu_drop.sh'
2023-03-27 11:42:06 +02:00
curl --silent ${ DOWNLOAD_URL } /openvidu-server/deployments/enterprise/docker-compose/cluster/aws/openvidu_launch_kms.sh \
2020-12-23 16:56:17 +01:00
--output " ${ AWS_SCRIPTS_FOLDER } /openvidu_launch_kms.sh " || fatal_error "Error when downloading the file 'openvidu_launch_kms.sh'"
printf '\n - openvidu_launch_kms.sh'
2023-03-27 14:22:41 +02:00
curl --silent ${ DOWNLOAD_URL } /openvidu-server/deployments/enterprise/docker-compose/beats/filebeat.yml \
2020-12-23 16:56:17 +01:00
--output " ${ BEATS_FOLDER } /filebeat.yml " || fatal_error "Error when downloading the file 'filebeat.yml'"
printf '\n - filebeat.yml'
2023-03-27 14:22:41 +02:00
curl --silent ${ DOWNLOAD_URL } /openvidu-server/deployments/enterprise/docker-compose/beats/metricbeat.yml \
2020-12-23 16:56:17 +01:00
--output " ${ BEATS_FOLDER } /metricbeat.yml " || fatal_error "Error when downloading the file 'metricbeat.yml'"
printf '\n - metricbeat.yml'
2023-03-27 14:22:41 +02:00
curl --silent ${ DOWNLOAD_URL } /openvidu-server/deployments/enterprise/docker-compose/.env \
2020-12-23 16:56:17 +01:00
--output " ${ OPENVIDU_FOLDER } /.env " || fatal_error "Error when downloading the file '.env'"
printf '\n - .env'
2023-03-27 14:22:41 +02:00
curl --silent ${ DOWNLOAD_URL } /openvidu-server/deployments/enterprise/docker-compose/docker-compose.yml \
2020-12-23 16:56:17 +01:00
--output " ${ OPENVIDU_FOLDER } /docker-compose.yml " || fatal_error "Error when downloading the file 'docker-compose.yml'"
printf '\n - docker-compose.yml'
2023-03-27 14:22:41 +02:00
curl --silent ${ DOWNLOAD_URL } /openvidu-server/deployments/enterprise/docker-compose/openvidu \
2020-12-23 16:56:17 +01:00
--output " ${ OPENVIDU_FOLDER } /openvidu " || fatal_error "Error when downloading the file 'openvidu'"
printf '\n - openvidu'
# Add execution permissions
printf "\n => Adding permission:"
chmod +x " ${ OPENVIDU_FOLDER } /openvidu " || fatal_error "Error while adding permission to 'openvidu' program"
printf '\n - openvidu'
2021-09-21 14:53:53 +02:00
# Change recording folder with all permissions
printf "\n => Adding permission to 'recordings' folder..."
mkdir -p " ${ OPENVIDU_FOLDER } /recordings "
2020-12-23 16:56:17 +01:00
chmod +x " ${ AWS_SCRIPTS_FOLDER } /openvidu_autodiscover.sh " || fatal_error "Error while adding permission to 'openvidu_autodiscover.sh' program"
printf '\n - openvidu_autodiscover.sh'
chmod +x " ${ AWS_SCRIPTS_FOLDER } /openvidu_drop.sh " || fatal_error "Error while adding permission to 'openvidu' openvidu_drop.sh"
printf '\n - openvidu_drop.sh'
chmod +x " ${ AWS_SCRIPTS_FOLDER } /openvidu_launch_kms.sh " || fatal_error "Error while adding permission to 'openvidu_launch_kms.sh' program"
printf '\n - openvidu_launch_kms.sh'
# Create own certificated folder
printf "\n => Creating folder 'owncert'..."
mkdir " ${ OPENVIDU_FOLDER } /owncert " || fatal_error "Error while creating the folder 'owncert'"
# Create vhost nginx folder
printf "\n => Creating folder 'custom-nginx-vhosts'..."
mkdir " ${ OPENVIDU_FOLDER } /custom-nginx-vhosts " || fatal_error "Error while creating the folder 'custom-nginx-vhosts'"
2021-09-30 16:33:08 +02:00
# Create vhost nginx folder
printf "\n => Creating folder 'custom-nginx-locations'..."
mkdir " ${ OPENVIDU_FOLDER } /custom-nginx-locations " || fatal_error "Error while creating the folder 'custom-nginx-locations'"
2020-12-23 16:56:17 +01:00
# Ready to use
printf '\n'
printf '\n'
printf '\n ======================================='
2021-04-20 16:36:33 +02:00
printf '\n OpenVidu Pro successfully installed.'
2020-12-23 16:56:17 +01:00
printf '\n ======================================='
printf '\n'
printf '\n 1. Go to openvidu folder:'
printf '\n $ cd openvidu'
printf '\n'
printf '\n 2. Configure OPENVIDU_DOMAIN_OR_PUBLIC_IP, OPENVIDU_PRO_LICENSE, '
printf '\n OPENVIDU_SECRET, and ELASTICSEARCH_PASSWORD in .env file:'
printf '\n $ nano .env'
printf '\n'
printf '\n 3. Start OpenVidu'
printf '\n $ ./openvidu start'
printf '\n'
printf "\n CAUTION: The folder 'openvidu/elasticsearch' use user and group 1000 permissions. "
printf "\n This folder is necessary for store elasticsearch data."
printf "\n For more information, check:"
2023-03-18 02:54:09 +01:00
printf '\n https://docs.openvidu.io/en/%s/openvidu-pro/deployment/on-premises/#deployment-instructions' " ${ OPENVIDU_VERSION //v/ } "
2020-12-23 16:56:17 +01:00
printf '\n'
printf '\n'
exit 0
}
2021-04-13 15:58:29 +02:00
get_previous_env_variable( ) {
local ENV_VARIABLE_NAME = $1
2021-04-20 17:06:07 +02:00
echo " $( grep -E " ${ ENV_VARIABLE_NAME } =.* $" " ${ OPENVIDU_PREVIOUS_FOLDER } /.env " | cut -d'=' -f2) "
2021-04-13 15:58:29 +02:00
}
replace_variable_in_new_env_file( ) {
local ENV_VARIABLE_NAME = $1
local ENV_VARIABLE_VALUE = $2
2021-04-20 17:06:07 +02:00
[ [ -n " ${ ENV_VARIABLE_VALUE } " ] ] && sed -i " s|# ${ ENV_VARIABLE_NAME } =| ${ ENV_VARIABLE_NAME } = ${ ENV_VARIABLE_VALUE } | " " ${ OPENVIDU_PREVIOUS_FOLDER } /.env- ${ OPENVIDU_VERSION } "
2021-04-13 15:58:29 +02:00
}
2020-12-23 16:56:17 +01:00
# Check docker and docker-compose installation
2023-03-18 02:54:09 +01:00
if ! command -v docker >/dev/null; then
2020-12-23 16:56:17 +01:00
echo "You don't have docker installed, please install it and re-run the command"
2023-03-16 00:45:15 +01:00
exit 1
else
# Check version of docker is equal or higher than 20.10.10
DOCKER_VERSION = $( docker version --format '{{.Server.Version}}' | sed "s/-rc[0-9]*//" )
if ! printf '%s\n%s\n' "20.10.10" " $DOCKER_VERSION " | sort -V -C; then
2023-03-18 02:54:09 +01:00
echo "You need a docker version equal or higher than 20.10.10, please update your docker and re-run the command"
2023-03-16 00:45:15 +01:00
exit 1
fi
2020-12-23 16:56:17 +01:00
fi
2023-03-18 02:54:09 +01:00
if ! command -v docker-compose >/dev/null; then
2020-12-23 16:56:17 +01:00
echo "You don't have docker-compose installed, please install it and re-run the command"
2023-03-16 00:45:15 +01:00
exit 1
2020-12-23 16:56:17 +01: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
2023-03-18 02:54:09 +01:00
echo "You need a docker-compose version equal or higher than 1.24, please update your docker-compose and re-run the command"
2023-03-16 00:45:15 +01:00
exit 1
2020-12-23 16:56:17 +01:00
fi
fi
# Check type of installation
2021-04-20 17:06:07 +02:00
if [ [ -n " $1 " && " $1 " = = "upgrade" ] ] ; then
2023-03-18 02:54:09 +01:00
fatal_error " OpenVidu Enterprise HA can't be upgraded manually. Deploy the Cloudformation template of the version ' ${ OPENVIDU_VERSION } ' you want to deploy: https://docs.openvidu.io/en/ ${ OPENVIDU_VERSION //v/ } /deployment/enterprise/aws/ "
2020-12-23 16:56:17 +01:00
else
new_ov_installation
fi