From 23437564493686aeb050f774e12fa777a04eec3a Mon Sep 17 00:00:00 2001 From: Miroslav Pejic Date: Wed, 12 Jul 2023 17:33:52 +0200 Subject: [PATCH] [mirotalkbro] - add install.sh --- install.sh | 124 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100755 install.sh diff --git a/install.sh b/install.sh new file mode 100755 index 0000000..9bfb07f --- /dev/null +++ b/install.sh @@ -0,0 +1,124 @@ +#!/bin/bash + +# ============================================ +# RUN sudo ./install.sh +# ============================================ + +set -e # Exit immediately if a command exits with a non-zero status + +# ------------------------------------------------------- +# bash colors for log +# ------------------------------------------------------- + +black=`tput setaf 0` +red=`tput setaf 1` +green=`tput setaf 2` +yellow=`tput setaf 3` +blue=`tput setaf 4` +magenta=`tput setaf 5` +cyan=`tput setaf 6` +white=`tput setaf 7` +reset=`tput sgr0` + +# ------------------------------------------------------- +# print log level +# ------------------------------------------------------- +function log() { + date_now=`date '+%Y-%m-%d %H:%M:%S'` + case $1 in + debug) echo -e "${date_now} :: ${2}" ;; + warning) echo -e "${date_now} :: ${yellow}${2}${reset}" ;; + error) echo -e "${date_now} :: ${red}${2}${reset}" ;; + *) echo -e "${date_now} :: ${magenta}${1}${reset}" ;; + esac +} + +# ------------------------------------------------------- +# Check if Linux OS +# ------------------------------------------------------- +unamestr=$(uname) +if [[ "$unamestr" != 'Linux' ]]; then + log warning "This install script is supported only on Linux OS" + exit +fi + +# ------------------------------------------------------- +# Check if run as root +# ------------------------------------------------------- +if [ "$EUID" -ne 0 ]; then + log warning "Please run as root: sudo ./install.sh" + exit +fi + +# ============================================ +# Start the installation... +# ============================================ + +ENV=.env + +if ! [ -f "$ENV" ]; then + + log "Copy .env.template to .env (edit it according to your needs)" + + cp .env.template $ENV + +fi + +printf 'Use docker (y/n)? ' +read answer + +if [ "$answer" != "${answer#[Yy]}" ] ;then + + log "Install Docker and Docker Compose" + + sudo apt install -y docker.io + + sudo apt install -y docker-compose + + + log "Add the current user to the docker group" + + usermod -aG docker $USER + + + YAML=docker-compose.yml + + if ! [ -f "$YAML" ]; then + + log "Copy Docker compose yaml file" + + cp docker-compose.template.yml $YAML + fi + + printf 'Use official docker image (y/n)? ' + read answer + + if [ "$answer" != "${answer#[Yy]}" ] ;then + + log "Get latest official image from Docker Hub" + + docker pull mirotalk/bro:latest + else + log "Build image from source" + + docker-compose build + + + log "Remove old and unused docker images" + + docker images |grep '' |awk '{print $3}' |xargs docker rmi + fi + + log "Start containers" + + docker-compose up #-d +else + log "Install dependencies" + + npm install + + + log "Start the server" + + npm start +fi \ No newline at end of file