1
+ #! /bin/bash
2
+
3
+ # ============================================
4
+ # RUN sudo ./install.sh
5
+ # ============================================
6
+
7
+ set -e # Exit immediately if a command exits with a non-zero status
8
+
9
+ # -------------------------------------------------------
10
+ # bash colors for log
11
+ # -------------------------------------------------------
12
+
13
+ black=` tput setaf 0`
14
+ red=` tput setaf 1`
15
+ green=` tput setaf 2`
16
+ yellow=` tput setaf 3`
17
+ blue=` tput setaf 4`
18
+ magenta=` tput setaf 5`
19
+ cyan=` tput setaf 6`
20
+ white=` tput setaf 7`
21
+ reset=` tput sgr0`
22
+
23
+ # -------------------------------------------------------
24
+ # print log level
25
+ # -------------------------------------------------------
26
+ function log() {
27
+ date_now=` date ' +%Y-%m-%d %H:%M:%S' `
28
+ case $1 in
29
+ debug) echo -e " ${date_now} :: ${2} " ;;
30
+ warning) echo -e " ${date_now} :: ${yellow}${2}${reset} " ;;
31
+ error) echo -e " ${date_now} :: ${red}${2}${reset} " ;;
32
+ * ) echo -e " ${date_now} :: ${magenta}${1}${reset} " ;;
33
+ esac
34
+ }
35
+
36
+ # -------------------------------------------------------
37
+ # Check if Linux OS
38
+ # -------------------------------------------------------
39
+ unamestr=$( uname)
40
+ if [[ " $unamestr " != ' Linux' ]]; then
41
+ log warning " This install script is supported only on Linux OS"
42
+ exit
43
+ fi
44
+
45
+ # -------------------------------------------------------
46
+ # Check if run as root
47
+ # -------------------------------------------------------
48
+ if [ " $EUID " -ne 0 ]; then
49
+ log warning " Please run as root: sudo ./install.sh"
50
+ exit
51
+ fi
52
+
53
+ # ============================================
54
+ # Start the installation...
55
+ # ============================================
56
+
57
+ ENV=.env
58
+
59
+ if ! [ -f " $ENV " ]; then
60
+
61
+ log " Copy .env.template to .env (edit it according to your needs)"
62
+
63
+ cp .env.template $ENV
64
+
65
+ fi
66
+
67
+ printf ' Use docker (y/n)? '
68
+ read answer
69
+
70
+ if [ " $answer " != " ${answer# [Yy]} " ] ; then
71
+
72
+ log " Install Docker and Docker Compose"
73
+
74
+ sudo apt install -y docker.io
75
+
76
+ sudo apt install -y docker-compose
77
+
78
+
79
+ log " Add the current user to the docker group"
80
+
81
+ usermod -aG docker $USER
82
+
83
+
84
+ YAML=docker-compose.yml
85
+
86
+ if ! [ -f " $YAML " ]; then
87
+
88
+ log " Copy Docker compose yaml file"
89
+
90
+ cp docker-compose.template.yml $YAML
91
+ fi
92
+
93
+ printf ' Use official docker image (y/n)? '
94
+ read answer
95
+
96
+ if [ " $answer " != " ${answer# [Yy]} " ] ; then
97
+
98
+ log " Get latest official image from Docker Hub"
99
+
100
+ docker pull mirotalk/c2c:latest
101
+ else
102
+ log " Build image from source"
103
+
104
+ docker-compose build
105
+
106
+
107
+ log " Remove old and unused docker images"
108
+
109
+ docker images | grep ' <none>' | awk ' {print $3}' | xargs docker rmi
110
+ fi
111
+
112
+ log " Start containers"
113
+
114
+ docker-compose up # -d
115
+ else
116
+ log " Install dependencies"
117
+
118
+ npm install
119
+
120
+
121
+ log " Start the server"
122
+
123
+ npm start
124
+ fi
0 commit comments