├── .gitignore ├── LICENSE ├── README.md ├── lib ├── _backend.sh ├── _frontend.sh ├── _inquiry.sh ├── _system.sh └── manifest.sh ├── utils ├── _banner.sh └── manifest.sh ├── variables ├── _app.sh ├── _background.sh ├── _fonts.sh ├── _general.sh └── manifest.sh └── whaticket /.gitignore: -------------------------------------------------------------------------------- 1 | config 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 2 | Version 2, December 2004 3 | 4 | Copyright (C) 2004 riservato.xyz 5 | 6 | Everyone is permitted to copy and distribute verbatim or modified 7 | copies of this license document, and changing it is allowed as long 8 | as the name is changed. 9 | 10 | DO WHAT THE FUCK YOU WANT TO PUBLIC LICENSE 11 | TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION 12 | 13 | 0. You just DO WHAT THE FUCK YOU WANT TO. 14 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | Interactive CLI tool for installing and updating whaticket 2 | 3 | ### download & setup 4 | 5 | Firstly, you need to download it: 6 | 7 | 8 | ```bash 9 | sudo apt -y update && apt -y upgrade 10 | sudo apt install -y git 11 | git clone https://github.com/riservato-xyz/whaticket-installer.git 12 | ``` 13 | 14 | Now, all you gotta do is making it executable: 15 | 16 | ```bash 17 | sudo chmod +x ./whaticket-installer/whaticket 18 | ``` 19 | 20 | ### usage 21 | 22 | After downloading and making it executable, you need to **navigate into** the installer directory and **run the script with sudo**: 23 | 24 | ```bash 25 | cd ./whaticket-installer 26 | ``` 27 | 28 | ```bash 29 | sudo ./whaticket 30 | ``` 31 | -------------------------------------------------------------------------------- /lib/_backend.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # functions for setting up app backend 4 | 5 | ####################################### 6 | # creates mysql db using docker 7 | # Arguments: 8 | # None 9 | ####################################### 10 | backend_mysql_create() { 11 | print_banner 12 | printf "${WHITE} 💻 Criando banco de dados...${GRAY_LIGHT}" 13 | printf "\n\n" 14 | 15 | sleep 2 16 | 17 | sudo su - root < /home/deploy/whaticket/backend/.env 58 | NODE_ENV= 59 | BACKEND_URL=${backend_url} 60 | FRONTEND_URL=${frontend_url} 61 | PROXY_PORT=443 62 | PORT=8080 63 | 64 | DB_HOST=localhost 65 | DB_DIALECT= 66 | DB_USER=${db_user} 67 | DB_PASS=${db_pass} 68 | DB_NAME=${db_name} 69 | 70 | JWT_SECRET=${jwt_secret} 71 | JWT_REFRESH_SECRET=${jwt_refresh_secret} 72 | [-]EOF 73 | EOF 74 | 75 | sleep 2 76 | } 77 | 78 | ####################################### 79 | # installs node.js dependencies 80 | # Arguments: 81 | # None 82 | ####################################### 83 | backend_node_dependencies() { 84 | print_banner 85 | printf "${WHITE} 💻 Instalando dependências do backend...${GRAY_LIGHT}" 86 | printf "\n\n" 87 | 88 | sleep 2 89 | 90 | sudo su - deploy < /etc/nginx/sites-available/whaticket-backend << 'END' 224 | server { 225 | server_name $backend_hostname; 226 | 227 | location / { 228 | proxy_pass http://127.0.0.1:8080; 229 | proxy_http_version 1.1; 230 | proxy_set_header Upgrade \$http_upgrade; 231 | proxy_set_header Connection 'upgrade'; 232 | proxy_set_header Host \$host; 233 | proxy_set_header X-Real-IP \$remote_addr; 234 | proxy_set_header X-Forwarded-Proto \$scheme; 235 | proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; 236 | proxy_cache_bypass \$http_upgrade; 237 | } 238 | } 239 | END 240 | 241 | ln -s /etc/nginx/sites-available/whaticket-backend /etc/nginx/sites-enabled 242 | EOF 243 | 244 | sleep 2 245 | } 246 | -------------------------------------------------------------------------------- /lib/_frontend.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # functions for setting up app frontend 4 | 5 | ####################################### 6 | # installed node packages 7 | # Arguments: 8 | # None 9 | ####################################### 10 | frontend_node_dependencies() { 11 | print_banner 12 | printf "${WHITE} 💻 Instalando dependências do frontend...${GRAY_LIGHT}" 13 | printf "\n\n" 14 | 15 | sleep 2 16 | 17 | sudo su - deploy < /home/deploy/whaticket/frontend/.env 91 | REACT_APP_BACKEND_URL=${backend_url} 92 | [-]EOF 93 | EOF 94 | 95 | sleep 2 96 | } 97 | 98 | ####################################### 99 | # starts pm2 for frontend 100 | # Arguments: 101 | # None 102 | ####################################### 103 | frontend_start_pm2() { 104 | print_banner 105 | printf "${WHITE} 💻 Iniciando pm2 (frontend)...${GRAY_LIGHT}" 106 | printf "\n\n" 107 | 108 | sleep 2 109 | 110 | sudo su - deploy < /etc/nginx/sites-available/whaticket-frontend << 'END' 136 | server { 137 | server_name $frontend_hostname; 138 | 139 | location / { 140 | proxy_pass http://127.0.0.1:3333; 141 | proxy_http_version 1.1; 142 | proxy_set_header Upgrade \$http_upgrade; 143 | proxy_set_header Connection 'upgrade'; 144 | proxy_set_header Host \$host; 145 | proxy_set_header X-Real-IP \$remote_addr; 146 | proxy_set_header X-Forwarded-Proto \$scheme; 147 | proxy_set_header X-Forwarded-For \$proxy_add_x_forwarded_for; 148 | proxy_cache_bypass \$http_upgrade; 149 | } 150 | } 151 | END 152 | 153 | ln -s /etc/nginx/sites-available/whaticket-frontend /etc/nginx/sites-enabled 154 | EOF 155 | 156 | sleep 2 157 | } 158 | -------------------------------------------------------------------------------- /lib/_inquiry.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | get_frontend_url() { 4 | 5 | print_banner 6 | printf "${WHITE} 💻 Digite o domínio da interface web:${GRAY_LIGHT}" 7 | printf "\n\n" 8 | read -p "> " frontend_url 9 | } 10 | 11 | get_backend_url() { 12 | 13 | print_banner 14 | printf "${WHITE} 💻 Digite o domínio da sua API:${GRAY_LIGHT}" 15 | printf "\n\n" 16 | read -p "> " backend_url 17 | } 18 | 19 | get_urls() { 20 | 21 | get_frontend_url 22 | get_backend_url 23 | } 24 | 25 | software_update() { 26 | 27 | frontend_update 28 | backend_update 29 | } 30 | 31 | inquiry_options() { 32 | 33 | print_banner 34 | printf "${WHITE} 💻 O que você precisa fazer?${GRAY_LIGHT}" 35 | printf "\n\n" 36 | printf " [1] Instalar\n" 37 | printf " [2] Atualizar\n" 38 | printf "\n" 39 | read -p "> " option 40 | 41 | case "${option}" in 42 | 1) get_urls ;; 43 | 44 | 2) 45 | software_update 46 | exit 47 | ;; 48 | 49 | *) exit ;; 50 | esac 51 | } 52 | 53 | -------------------------------------------------------------------------------- /lib/_system.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | # 3 | # system management 4 | 5 | ####################################### 6 | # creates user 7 | # Arguments: 8 | # None 9 | ####################################### 10 | system_create_user() { 11 | print_banner 12 | printf "${WHITE} 💻 Agora, vamos criar o usuário para deploy...${GRAY_LIGHT}" 13 | printf "\n\n" 14 | 15 | sleep 2 16 | 17 | sudo su - root < /etc/nginx/conf.d/whaticket.conf << 'END' 294 | client_max_body_size 20M; 295 | END 296 | 297 | EOF 298 | 299 | sleep 2 300 | } 301 | 302 | ####################################### 303 | # installs nginx 304 | # Arguments: 305 | # None 306 | ####################################### 307 | system_certbot_setup() { 308 | print_banner 309 | printf "${WHITE} 💻 Configurando certbot...${GRAY_LIGHT}" 310 | printf "\n\n" 311 | 312 | sleep 2 313 | 314 | backend_domain=$(echo "${backend_url/https:\/\/}") 315 | frontend_domain=$(echo "${frontend_url/https:\/\/}") 316 | 317 | sudo su - root </dev/null 2>&1 && pwd )" 10 | SOURCE="$(readlink "$SOURCE")" 11 | [[ $SOURCE != /* ]] && SOURCE="$PROJECT_ROOT/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located 12 | done 13 | PROJECT_ROOT="$( cd -P "$( dirname "$SOURCE" )" >/dev/null 2>&1 && pwd )" 14 | 15 | # required imports 16 | source "${PROJECT_ROOT}"/variables/manifest.sh 17 | source "${PROJECT_ROOT}"/utils/manifest.sh 18 | source "${PROJECT_ROOT}"/lib/manifest.sh 19 | 20 | # user configs file 21 | if [[ ! -e "${PROJECT_ROOT}"/config ]]; then 22 | cat << EOF > "${PROJECT_ROOT}"/config 23 | deploy_password=${deploy_password} 24 | mysql_root_password=${mysql_root_password} 25 | db_pass=${db_pass} 26 | EOF 27 | fi 28 | 29 | # this file has passwords 30 | sudo su - root <