#!/bin/bash STACK_VERSION=$1 PROCESSOR_TYPE=$2 $COMPOSE_FILE get_stack_version() { if [[ -n "$STACK_VERSION" ]]; then echo 'use provided version' echo $STACK_VERSION else STACK_VERSION=$(curl -X 'GET' 'https://api.callabacloud.com/getCallabaCloudVersion' \ --header "Content-Type: application/json" \ -d '{"version_name":"parrot"}' | jq -r '.[].version_number') echo 'use version by default' fi if [[ $? -ne 0 || -z "$STACK_VERSION" ]]; then echo "Error: Failed to get stack version" exit 1 fi echo $STACK_VERSION >STACK_VERSION.txt export STACK_VERSION } start_docker_compose() { echo $STACK_VERSION if [[ "$PROCESSOR_TYPE" == "nvidia" ]]; then echo 'Installing with NVIDIA CUDA...' COMPOSE_FILE="docker-compose.cc-full-run-linux-nvidia.yml" else echo 'Installing...' COMPOSE_FILE="docker-compose.cc-full-run-linux.yml" fi sudo -E docker-compose -f $COMPOSE_FILE up -d if [[ $? -ne 0 ]]; then echo "Error: Failed to start docker-compose with Callaba Cloud" exit 1 fi sudo -E docker-compose -f webrtc/docker-compose.cc-webrtc.yml up -d sudo -E docker exec callabacloud-api rm /opt/installation-unfinished sudo -E docker restart callabacloud-api if [[ $? -ne 0 ]]; then echo "Error: Failed to start docker-compose with Callaba Cloud" exit 1 else echo "Callaba on-premise $STACK_VERSION has installed successfully" fi } set_iptables() { if [ ! -d /etc/iptables/ ]; then sudo mkdir /etc/iptables/ fi sudo chmod 666 /etc/iptables/rules.v4 sudo iptables -I INPUT -i lo -j ACCEPT sudo iptables -A INPUT -p tcp --dport 3000 -j DROP sudo iptables -A INPUT -p tcp --dport 3021 -j DROP sudo iptables -A INPUT -p tcp --dport 3031 -j DROP sudo iptables -A INPUT -p tcp --dport 27017 -j DROP sudo iptables -A INPUT -p tcp --dport 27019 -j DROP sudo iptables -A INPUT -p tcp --dport 6379 -j DROP if [[ $? -ne 0 ]]; then echo "Error: Failed to set iptables" exit 1 fi sudo iptables-save > /etc/iptables/rules.v4 if [[ $? -ne 0 ]]; then echo "Error: Failed to save iptables rules" exit 1 fi } main() { echo "Are you sure you want to install Callaba $STACK_VERSION ? (y/yes to confirm)" read -r confirmation if [[ "$confirmation" == "y" || "$confirmation" == "yes" ]]; then get_stack_version start_docker_compose echo -e "Within 2-3 minutes, Callaba Dashboard will be available at \033[4;34mhttp://public-ip\033[0m, for example, \033[4;34mhttp://127.0.0.1\033[0m." echo -e "For the first login, use the username \033[1madmin\033[0m and the password \033[1mpassword\033[0m." echo -e "Don't forget to change it to a new password." set_iptables else echo "Operation cancelled." fi } main