├── rebar.lock ├── .gitignore ├── IOTICOS GL APP 3aecd292ad5447b9aff5744b6608d234 ├── ScreenFlow.gif └── Snip20210311_8.png ├── docker_nuxt_build.yml ├── docker_node_install.yml ├── mycode └── index.js ├── installer.txt ├── docker-compose.yml ├── docker_compose_production.yml ├── README.md └── install_ioticosgl.sh /rebar.lock: -------------------------------------------------------------------------------- 1 | []. 2 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | 2 | .ENV 3 | .env 4 | .log 5 | app 6 | mongodata -------------------------------------------------------------------------------- /IOTICOS GL APP 3aecd292ad5447b9aff5744b6608d234/ScreenFlow.gif: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ioticos/ioticos_god_level_services/HEAD/IOTICOS GL APP 3aecd292ad5447b9aff5744b6608d234/ScreenFlow.gif -------------------------------------------------------------------------------- /IOTICOS GL APP 3aecd292ad5447b9aff5744b6608d234/Snip20210311_8.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/ioticos/ioticos_god_level_services/HEAD/IOTICOS GL APP 3aecd292ad5447b9aff5744b6608d234/Snip20210311_8.png -------------------------------------------------------------------------------- /docker_nuxt_build.yml: -------------------------------------------------------------------------------- 1 | version: "3.8" 2 | 3 | 4 | services: 5 | 6 | node_build: 7 | container_name: node_build 8 | image: "node:14" 9 | working_dir: /home/node/app 10 | volumes: 11 | - ./app/:/home/node/app 12 | 13 | 14 | command: sh -c "npm run build" -------------------------------------------------------------------------------- /docker_node_install.yml: -------------------------------------------------------------------------------- 1 | version: "3.8" 2 | 3 | 4 | services: 5 | 6 | node_install: 7 | container_name: node_install 8 | image: "node:14" 9 | working_dir: /home/node/app 10 | volumes: 11 | - ./app/:/home/node/app 12 | 13 | 14 | command: sh -c "npm install" -------------------------------------------------------------------------------- /mycode/index.js: -------------------------------------------------------------------------------- 1 | 2 | function hello() { 3 | setTimeout(() => { 4 | 5 | Boolean sondeamos = "consulta a base de datos tabla cofig celda sondeo"; 6 | 7 | if (sondeamos) { 8 | client.publish("topico de sondeo", "mensaje de sondeo"); 9 | } else { 10 | console.log("no hacemos nada"); 11 | } 12 | hello(); 13 | }, 1000); 14 | } 15 | hello(); -------------------------------------------------------------------------------- /installer.txt: -------------------------------------------------------------------------------- 1 | ANOTACIONES PARA LUEGO GENERAR BASH SCRIPT 2 | 3 | 4 | sudo apt-get update 5 | wget https://get.docker.com/ 6 | sudo mv index.html install_docker.sh 7 | sudo chmod 777 install_docker.sh 8 | sudo ./install_docker.sh 9 | sudo rm install_docker.sh 10 | sudo curl -L "https://github.com/docker/compose/releases/download/1.28.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 11 | sudo chmod +x /usr/local/bin/docker-compose 12 | sudo git clone https://github.com/ioticos/ioticos_god_level_services.git 13 | sudo mv ioticos_god_level_services ioticos 14 | cd ioticos 15 | 16 | // WARNING .ENV 17 | 18 | 19 | sudo git clone https://github.com/ioticos/ioticos_god_level_app.git 20 | sudo mv ioticos_god_level_app app 21 | 22 | // WARNING .ENV 23 | 24 | sudo docker-compose -f docker_node_install.yml up -d 25 | sudo docker-compose -f docker-compose-production.yml up -d 26 | 27 | 28 | 29 | 30 | >>>>SERVICES .ENV 31 | 32 | environment=dev 33 | 34 | # TIMEZONE (all containers). 35 | TZ=UTC 36 | 37 | # MONGO CREDENTIALS 38 | MONGO_USERNAME=devuser 39 | MONGO_PASSWORD=devpassword 40 | MONGO_EXT_PORT=27017 41 | 42 | # EMQX 43 | EMQX_DEFAULT_USER_PASSWORD=emqxdashpass 44 | EMQX_DEFAULT_APPLICATION_SECRET=emqxsecret 45 | 46 | 47 | 48 | 49 | ------------ 50 | 51 | >>>>>>> APP .env 52 | 53 | #A P I 54 | API_PORT=3001 55 | 56 | MONGO_USERNAME=devuser 57 | MONGO_PASSWORD=devpassword 58 | MONGO_HOST=mongo 59 | MONGO_PORT=27017 60 | MONGO_DATABASE=ioticos_god_level 61 | 62 | #emqx 63 | EMQX_DEFAULT_APPLICATION_SECRET=emqxsecret 64 | EMQX_NODE_SUPERUSER_USER=superuser 65 | EMQX_NODE_SUPERUSER_PASSWORD=superuser 66 | EMQX_NODE_HOST=54.94.41.193 67 | EMQX_API_TOKEN=121212 68 | 69 | 70 | # F R O N T 71 | APP_PORT=3000 72 | AXIOS_BASE_URL=http://54.94.41.193:3001/api 73 | 74 | MQTT_PREFIX=ws:// 75 | MQTT_HOST=54.94.41.193 76 | MQTT_PORT=8083 77 | 78 | 79 | EMQX_RESOURCES_DELAY=30000 80 | 81 | 82 | //sudo usermod -aG docker ubuntu -------------------------------------------------------------------------------- /docker-compose.yml: -------------------------------------------------------------------------------- 1 | version: "3.8" 2 | # 3 | volumes: 4 | vol-emqx-data: 5 | name: foo-emqx-data 6 | # vol-emqx-etc: 7 | # name: foo-emqx-etc 8 | vol-emqx-log: 9 | name: foo-emqx-log 10 | # 11 | 12 | 13 | services: 14 | mongo: 15 | container_name: mongo 16 | image: mongo:4.4 17 | restart: always 18 | environment: 19 | TZ: "${TZ}" 20 | MONGO_INITDB_ROOT_USERNAME: "${MONGO_USERNAME}" 21 | MONGO_INITDB_ROOT_PASSWORD: "${MONGO_PASSWORD}" 22 | volumes: 23 | - ./mongodata:/data/db 24 | ports: 25 | - ${MONGO_EXT_PORT}:27017 26 | 27 | emqx: 28 | container_name: emqx 29 | image: emqx/emqx:4.2.3 30 | restart: always 31 | ports: 32 | - 18083:18083 33 | - 1883:1883 34 | - 8883:8883 35 | - 8083:8083 36 | - 8085:8081 37 | 38 | volumes: 39 | - vol-emqx-data:/opt/emqx/data 40 | - vol-emqx-log:/opt/emqx/log 41 | 42 | links: 43 | - mongo 44 | 45 | extra_hosts: 46 | - "localhost:192.168.0.6" 47 | 48 | environment: 49 | EMQX_NAME: ioticos-gl 50 | EMQX_HOST: 127.0.0.1 51 | 52 | TZ: "${TZ}" 53 | 54 | # DEFAULT DASH PASS 55 | EMQX_DASHBOARD__DEFAULT_USER__PASSWORD: "${EMQX_DEFAULT_USER_PASSWORD}" 56 | 57 | # DEFAULT APP SECRET 58 | EMQX_MANAGEMENT__DEFAULT_APPLICATION__SECRET: "${EMQX_DEFAULT_APPLICATION_SECRET}" 59 | 60 | EMQX_ALLOW_ANONYMOUS: "false" 61 | EMQX_NOMATCH: "deny" 62 | 63 | # MONGO CONNECTION 64 | EMQX_AUTH__MONGO__TYPE: single 65 | EMQX_AUTH__MONGO__TOPOLOGY__POOL_SIZE: 1 66 | EMQX_AUTH__MONGO__TOPOLOGY__MAX_OVERFLOW: 0 67 | 68 | EMQX_AUTH__MONGO__SERVER: "mongo:${MONGO_EXT_PORT}" 69 | EMQX_AUTH__MONGO__POOL: 8 70 | 71 | EMQX_AUTH__MONGO__LOGIN: "${MONGO_USERNAME}" 72 | EMQX_AUTH__MONGO__PASSWORD: "${MONGO_PASSWORD}" 73 | EMQX_AUTH__MONGO__AUTH_SOURCE: admin 74 | 75 | EMQX_AUTH__MONGO__DATABASE: "ioticos_god_level" 76 | EMQX_AUTH__MONGO__AUTH_QUERY__COLLECTION: "emqxauthrules" 77 | 78 | EMQX_AUTH__MONGO__SUPER_QUERY__COLLECTION: "emqxauthrules" 79 | EMQX_AUTH__MONGO__SUPER_QUERY__SUPER_FIELD: "is_superuser" 80 | EMQX_AUTH__MONGO__SUPER_QUERY__SELECTOR: "username=%u" 81 | EMQX_AUTH__MONGO__SUPER_QUERY: "off" 82 | 83 | EMQX_AUTH__MONGO__AUTH_QUERY__PASSWORD_HASH: plain 84 | EMQX_AUTH__MONGO__AUTH_QUERY__PASSWORD_FIELD: "password" 85 | EMQX_AUTH__MONGO__AUTH_QUERY__SELECTOR: "username=%u" 86 | 87 | ## Enable ACL query. 88 | #Access control list 89 | EMQX_AUTH__MONGO__ACL_QUERY: "on" 90 | EMQX_AUTH__MONGO__ACL_QUERY__COLLECTION: "emqxauthrules" 91 | EMQX_AUTH__MONGO__ACL_QUERY__SELECTOR: "username=%u" 92 | 93 | EMQX_LOADED_PLUGINS: "emqx_recon,emqx_retainer,emqx_management,emqx_dashboard,emqx_auth_mongo" 94 | 95 | EMQX_LISTENER__TCP__EXTERNAL__MAX_CONNECTIONS: 1000 96 | -------------------------------------------------------------------------------- /docker_compose_production.yml: -------------------------------------------------------------------------------- 1 | version: "3.8" 2 | 3 | volumes: 4 | vol-emqx-data: 5 | name: foo-emqx-data 6 | vol-emqx-log: 7 | name: foo-emqx-log 8 | 9 | 10 | services: 11 | 12 | node: 13 | container_name: node 14 | image: "node:14" 15 | restart: always 16 | working_dir: /home/node/app 17 | volumes: 18 | - ./app/:/home/node/app 19 | ports: 20 | - "3000:3000" 21 | - "3001:3001" 22 | - "80:3002" 23 | 24 | links: 25 | - emqx 26 | - mongo 27 | 28 | command: sh -c "echo 'delaying 30 seconds' && sleep 30 && npm run start" 29 | #command: sh -c "npm install" 30 | 31 | mongo: 32 | container_name: mongo 33 | image: mongo:4.4 34 | restart: always 35 | logging: 36 | driver: "none" 37 | environment: 38 | TZ: "${TZ}" 39 | MONGO_INITDB_ROOT_USERNAME: "${MONGO_USERNAME}" 40 | MONGO_INITDB_ROOT_PASSWORD: "${MONGO_PASSWORD}" 41 | volumes: 42 | - ./mongodata:/data/db 43 | ports: 44 | - ${MONGO_EXT_PORT}:27017 45 | 46 | emqx: 47 | container_name: emqx 48 | image: emqx/emqx:4.2.3 49 | restart: always 50 | 51 | ports: 52 | - 18083:18083 53 | - 1883:1883 54 | - 8083:8083 55 | - 8085:8081 56 | 57 | volumes: 58 | - vol-emqx-data:/opt/emqx/data 59 | - vol-emqx-log:/opt/emqx/log 60 | 61 | 62 | links: 63 | - mongo 64 | 65 | extra_hosts: 66 | - "localhost:192.168.0.6" 67 | 68 | environment: 69 | EMQX_NAME: ioticos-gl 70 | EMQX_HOST: 127.0.0.1 71 | 72 | TZ: "${TZ}" 73 | 74 | # DEFAULT DASH PASS 75 | EMQX_DASHBOARD__DEFAULT_USER__PASSWORD: "${EMQX_DEFAULT_USER_PASSWORD}" 76 | 77 | # DEFAULT APP SECRET 78 | EMQX_MANAGEMENT__DEFAULT_APPLICATION__SECRET: "${EMQX_DEFAULT_APPLICATION_SECRET}" 79 | 80 | EMQX_ALLOW_ANONYMOUS: "false" 81 | EMQX_NOMATCH: "deny" 82 | 83 | # MONGO CONNECTION 84 | EMQX_AUTH__MONGO__TYPE: single 85 | EMQX_AUTH__MONGO__TOPOLOGY__POOL_SIZE: 1 86 | EMQX_AUTH__MONGO__TOPOLOGY__MAX_OVERFLOW: 0 87 | 88 | EMQX_AUTH__MONGO__SERVER: "mongo:${MONGO_EXT_PORT}" 89 | EMQX_AUTH__MONGO__POOL: 8 90 | 91 | EMQX_AUTH__MONGO__LOGIN: "${MONGO_USERNAME}" 92 | EMQX_AUTH__MONGO__PASSWORD: "${MONGO_PASSWORD}" 93 | EMQX_AUTH__MONGO__AUTH_SOURCE: admin 94 | 95 | EMQX_AUTH__MONGO__DATABASE: "ioticos_god_level" 96 | EMQX_AUTH__MONGO__AUTH_QUERY__COLLECTION: "emqxauthrules" 97 | 98 | EMQX_AUTH__MONGO__SUPER_QUERY__COLLECTION: "emqxauthrules" 99 | EMQX_AUTH__MONGO__SUPER_QUERY__SUPER_FIELD: "is_superuser" 100 | EMQX_AUTH__MONGO__SUPER_QUERY__SELECTOR: "username=%u" 101 | EMQX_AUTH__MONGO__SUPER_QUERY: "off" 102 | 103 | EMQX_AUTH__MONGO__AUTH_QUERY__PASSWORD_HASH: plain 104 | EMQX_AUTH__MONGO__AUTH_QUERY__PASSWORD_FIELD: "password" 105 | EMQX_AUTH__MONGO__AUTH_QUERY__SELECTOR: "username=%u" 106 | 107 | ## Enable ACL query. 108 | #Access control list 109 | EMQX_AUTH__MONGO__ACL_QUERY: "on" 110 | EMQX_AUTH__MONGO__ACL_QUERY__COLLECTION: "emqxauthrules" 111 | EMQX_AUTH__MONGO__ACL_QUERY__SELECTOR: "username=%u" 112 | 113 | EMQX_LOADED_PLUGINS: "emqx_recon,emqx_retainer,emqx_management,emqx_dashboard,emqx_auth_mongo" 114 | 115 | EMQX_LISTENER__TCP__EXTERNAL__MAX_CONNECTIONS: 1000 116 | 117 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # IOTICOS GL (Plataforma IoT Nivel DIOS) 2 | 3 | Este repositorio contiene los servicios a montar (via docker) para montar la plataforma IoTicos GL. 4 | 5 | El mismo fue desarrollado en el curso IoT Bootcamp God Level. 6 | 7 | [![IoTicos GL](https://yt-embed.herokuapp.com/embed?v=ZePfdyJPCvM)](https://www.youtube.com/watch?v=ZePfdyJPCvM "IoTicos GL") 8 | 9 | ### Puedes acceder a más información sobre la plataforma en la primer clase -> aquí <- 10 | 11 | [](https://www.udemy.com/course/iot-god-level/learn/lecture/24850534) 12 | 13 | ### Puedes acceder a la demo -> aquí <- 14 | 15 | 16 | 17 | 18 | # Instalación: 19 | 20 | [](https://demo.ioticos.org) 21 | 22 | ![IOTICOS%20GL%20APP%203aecd292ad5447b9aff5744b6608d234/Snip20210311_8.png](IOTICOS%20GL%20APP%203aecd292ad5447b9aff5744b6608d234/Snip20210311_8.png) 23 | 24 | Instalar la plataforma en Linux es muy simple. Ya que para tal fin desarrollamos un instalador que encontrarás aquí: 25 | 26 | https://github.com/ioticos/ioticos_god_level_services/blob/master/install_ioticosgl.sh 27 | 28 | ![IOTICOS%20GL%20APP%203aecd292ad5447b9aff5744b6608d234/ScreenFlow.gif](IOTICOS%20GL%20APP%203aecd292ad5447b9aff5744b6608d234/ScreenFlow.gif) 29 | 30 | 31 | Copia el contenido del archivo install_ioticosgl.sh 32 | En el servidor linux (Ubuntu LTS recomendado) crearemos un archivo llamado install.sh con el comando: 33 | 34 | ``` 35 | sudo nano install.sh 36 | ``` 37 | 38 | Una vez en el editor nano pegamos el contenido que habíamos copiado. 39 | 40 | Grabamos con ctrl + X luego presionar "enter" luego presionar "Y". 41 | 42 | Ahora ejecutaremos el siguiente comando para darle permisos totales al archivo recientemente creado. 43 | 44 | ``` 45 | sudo chmod 777 install.sh 46 | ``` 47 | 48 | (Luego de instalar la plataforma borraremos este archivo) 49 | 50 | Ahora sí, momento de ejecutar nuestro instalador. (El mismo obtendra tanto los servicios como la app de los repositorios de IoTicos, en el código del instalador puedes reemplazar sendos repositorios por los tuyos ) 51 | 52 | ``` 53 | sudo ./install.sh 54 | ``` 55 | 56 | Y listo, debemos responder el cuestionario para efectuar la instalación. 57 | 58 | 59 | Aclaración: 60 | 61 | Luego de ejecutar el instalador la plataforma quedará corriendo en su totalidad. 62 | 63 | Como verán en el repositorio tenemos tres archivos docker-compose importantes. 64 | 65 | - docker_node_install.yml: 66 | 67 | Este compose, lo ejecutaremos cuando a futuro necesitemos instalar dependencias nuevas vía npm. 68 | 69 | - docker_nuxt_build.yml: 70 | 71 | Este compose, lo ejecutaremos cuando por ejemplo, modificamos el código de nuestro repositorio (algo en el front po ejemplo) y necesitemos llevar estos cambios a producción. 72 | Al ejecutar este compose, estaremos haciendo un "build" con nuxt. Lo que recompilara tanto código front como el de nuestra api. 73 | 74 | - docker_compose_production.yml 75 | 76 | Este último es el que lanza a producción nuestra plataforma. Y es el único que deberíamos correr con el "-d" al final de comando para que quede corriendo como servicio. 77 | 78 | En los 2 casos anteriores, se recomienda hacerlo sin el -d para observar la salida. 79 | 80 | En los 2 casos anteriores, (install y build), una vez que se ejecutan y terminan su tarea, los mismos finalizan con un exit. (no quedan corriendo) Lo que es normal. 81 | 82 | 83 | IMPORTANTE: 84 | 85 | El motivo por el cual separamos install - build - production en tres contenedores, (siendo que se podría hacer todo junto) es para evitar saturar procesador y memoria servidores pequeños. -------------------------------------------------------------------------------- /install_ioticosgl.sh: -------------------------------------------------------------------------------- 1 | #!/bin/bash 2 | 3 | 4 | ## -------------------------------------------------- 5 | ## Gabriela Q. Pablo S. y Benjamín S. - IoTicos.org 6 | ## --------------------------------------------------- 7 | 8 | ## -------------------------------------------------- 9 | ## ReymondRojasNúñez - IoTCostaRica -ISCORP2021 10 | ## Creditos: ioticos.org 11 | ## --------------------------------------------------- 12 | 13 | ## GRACIAS REYMOND!!! 14 | 15 | rand-str() 16 | { 17 | # Return random alpha-numeric string of given LENGTH 18 | # 19 | # Usage: VALUE=$(rand-str $LENGTH) 20 | # or: VALUE=$(rand-str) 21 | 22 | local DEFAULT_LENGTH=64 23 | local LENGTH=${1:-$DEFAULT_LENGTH} 24 | 25 | LC_CTYPE=C tr -dc A-Za-z0-9 mydomain.com) Dominio: " DOMAIN 179 | echo " Selected Domain ► ${DOMAIN} ✅" 180 | done 181 | 182 | 183 | 184 | #IP 185 | printf "\n\n🌐 Ingresa la ip pública del VPS. \n" 186 | 187 | while [[ -z "$IP" ]] 188 | do 189 | read -p " IP: " IP 190 | echo " Selected IP ► ${IP} ✅" 191 | done 192 | 193 | 194 | 195 | 196 | #SSL? 197 | printf "\n\n🔐 El sistema está pensado para que un balanceador de cargas gestione los certificados SSL. \n" 198 | printf " Si la plataforma estará bajo SSL utilizando balanceador de cargas o proporcionando certificados, selecciona 'Con SSL'. \n" 199 | printf " Esto forzará la redirección SSL, además, el cliente web, se conectará al broker mqtt mediante websocket seguro. \n" 200 | printf " Si de momento vas a acceder a la plataforma usando una ip, o un dominio sin ssl... selecciona 'Sin SSL'. \n\n" 201 | 202 | 203 | 204 | PS3=' SSL?: ' 205 | options=("Con SSL" "Sin SSL") 206 | select opt in "${options[@]}" 207 | do 208 | case $REPLY in 209 | "1") 210 | echo " SSL? ► ${character} ✅" 211 | break 212 | ;; 213 | "2") 214 | echo " SSL? ► ${character} ✅" 215 | break 216 | ;; 217 | *) echo "invalid option $REPLY";; 218 | esac 219 | done 220 | 221 | 222 | SSL=$REPLY 223 | WSPREFIX="" 224 | SSLREDIRECT="" 225 | 226 | if [[ $SSL -eq 1 ]] 227 | then 228 | SSL="https://" 229 | WSPREFIX="wss://" 230 | MQTT_HOST=$DOMAIN 231 | MQTT_PORT="8084" 232 | SSLREDIRECT="true" 233 | else 234 | SSL="http://" 235 | WSPREFIX="ws://" 236 | MQTT_PORT="8083" 237 | MQTT_HOST=$IP 238 | SSLREDIRECT="false" 239 | fi 240 | 241 | msg=" 242 | __ 243 | /__\ ___ ___ _ _ _ __ ___ ___ _ __ 244 | / \/// _ \/ __| | | | '_ \` _ \ / _ \ '_ \ 245 | / _ \ __/\__ \ |_| | | | | | | __/ | | | 246 | \/ \_/\___||___/\__,_|_| |_| |_|\___|_| |_| 247 | " 248 | 249 | tput setaf 128; 250 | printf "$msg" 251 | tput setaf 7; 252 | 253 | printf "\n\n\n" 254 | printf " 🟢 TIMEZONE: $(tput setaf 128)${TZ}$(tput setaf 7)\n" 255 | printf " 🟢 MONGO USER: $(tput setaf 128)${MONGO_USERNAME}$(tput setaf 7)\n" 256 | printf " 🟢 MONGO PASS: $(tput setaf 128)${MONGO_PASSWORD}$(tput setaf 7)\n" 257 | printf " 🟢 MONGO PORT: $(tput setaf 128)${MONGO_PORT}$(tput setaf 7)\n" 258 | printf " 🟢 EMQX API PASSWORD: $(tput setaf 128)${EMQX_DEFAULT_APPLICATION_SECRET}$(tput setaf 7)\n" 259 | printf " 🟢 MQTT SUPERUSER: $(tput setaf 128)${EMQX_NODE_SUPERUSER_USER}$(tput setaf 7)\n" 260 | printf " 🟢 MQTT SUPER PASS: $(tput setaf 128)${EMQX_NODE_SUPERUSER_PASSWORD}$(tput setaf 7)\n" 261 | printf " 🟢 WEBHOOK WEB TOKEN: $(tput setaf 128)${EMQX_API_TOKEN}$(tput setaf 7)\n" 262 | printf " 🟢 DOMAIN: $(tput setaf 128)${DOMAIN}$(tput setaf 7)\n" 263 | printf " 🟢 IP: $(tput setaf 128)${IP}$(tput setaf 7)\n" 264 | printf " 🟢 SSL?: $(tput setaf 128)${opt}$(tput setaf 7)\n" 265 | 266 | printf "\n\n\n\n"; 267 | read -p "Presiona Enter para comenzar la instalación..." 268 | sleep 2 269 | 270 | 271 | sudo apt-get update 272 | wget https://get.docker.com/ 273 | sudo mv index.html install_docker.sh 274 | sudo chmod 777 install_docker.sh 275 | sudo ./install_docker.sh 276 | sudo rm install_docker.sh 277 | sudo curl -L "https://github.com/docker/compose/releases/download/1.28.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose 278 | sudo chmod +x /usr/local/bin/docker-compose 279 | sudo git clone https://github.com/ioticos/ioticos_god_level_services.git 280 | sudo mv ioticos_god_level_services services 281 | 282 | 283 | cd services 284 | 285 | ## ______________________________ 286 | ## INSALL INIT 287 | filename='.env' 288 | 289 | 290 | #SERVICES .ENV 291 | sudo sh -c " echo 'environment=prod' >> $filename" 292 | sudo sh -c " echo '' >> $filename" 293 | sudo sh -c " echo '# TIMEZONE (all containers).' >> $filename" 294 | sudo sh -c " echo 'TZ=${TZ}' >> $filename" 295 | sudo sh -c " echo '' >> $filename" 296 | sudo sh -c " echo '# M O N G O' >> $filename" 297 | sudo sh -c " echo 'MONGO_USERNAME=${MONGO_USERNAME}' >> $filename" 298 | sudo sh -c " echo 'MONGO_PASSWORD=${MONGO_PASSWORD}' >> $filename" 299 | sudo sh -c " echo 'MONGO_EXT_PORT=${MONGO_PORT}' >> $filename" 300 | sudo sh -c " echo '' >> $filename" 301 | sudo sh -c " echo '# E M Q X' >> $filename" 302 | sudo sh -c " echo 'EMQX_DEFAULT_USER_PASSWORD=${EMQX_DEFAULT_USER_PASSWORD}' >> $filename" 303 | sudo sh -c " echo 'EMQX_DEFAULT_APPLICATION_SECRET=${EMQX_DEFAULT_APPLICATION_SECRET}' >> $filename" 304 | 305 | 306 | sudo git clone https://github.com/ioticos/ioticos_god_level_app.git 307 | sudo mv ioticos_god_level_app app 308 | 309 | cd app 310 | 311 | sudo sh -c "echo 'environment=prod' >> $filename" 312 | sudo sh -c "echo '' >> $filename" 313 | 314 | #A P I - N O D E 315 | sudo sh -c "echo '#A P I - N O D E ' >> $filename" 316 | sudo sh -c "echo 'API_PORT=3001' >> $filename" 317 | sudo sh -c "echo 'WEBHOOKS_HOST=node' >> $filename" 318 | sudo sh -c "echo 'MQTT_NOTIFICATION_HOST=${IP}' >> $filename" 319 | sudo sh -c "echo '' >> $filename" 320 | 321 | # M O N G O 322 | sudo sh -c "echo '# M O N G O' >> $filename" 323 | sudo sh -c "echo 'MONGO_USERNAME=${MONGO_USERNAME}' >> $filename" 324 | sudo sh -c "echo 'MONGO_PASSWORD=${MONGO_PASSWORD}' >> $filename" 325 | sudo sh -c "echo 'MONGO_HOST=mongo' >> $filename" 326 | sudo sh -c "echo 'MONGO_PORT=${MONGO_PORT}' >> $filename" 327 | sudo sh -c "echo 'MONGO_DATABASE=ioticos_god_level' >> $filename" 328 | sudo sh -c "echo '' >> $filename" 329 | 330 | 331 | 332 | # E M Q X 333 | sudo sh -c " echo 'EMQX_DEFAULT_APPLICATION_SECRET=${EMQX_DEFAULT_APPLICATION_SECRET}' >> $filename" 334 | sudo sh -c " echo 'EMQX_NODE_SUPERUSER_USER=${EMQX_NODE_SUPERUSER_USER}' >> $filename" 335 | sudo sh -c " echo 'EMQX_NODE_SUPERUSER_PASSWORD=${EMQX_NODE_SUPERUSER_PASSWORD}' >> $filename" 336 | sudo sh -c " echo 'EMQX_API_HOST=${IP}' >> $filename" 337 | sudo sh -c " echo 'EMQX_API_TOKEN=${EMQX_API_TOKEN}' >> $filename" 338 | sudo sh -c "echo 'EMQX_RESOURCES_DELAY=30000' >> $filename" 339 | sudo sh -c "echo '' >> $filename" 340 | 341 | # F R O N T 342 | sudo sh -c "echo '# F R O N T' >> $filename" 343 | sudo sh -c "echo 'APP_PORT=3000' >> $filename" 344 | sudo sh -c "echo 'AXIOS_BASE_URL=${SSL}${DOMAIN}:3001/api' >> $filename" 345 | 346 | sudo sh -c "echo 'MQTT_PORT=${MQTT_PORT}' >> $filename" 347 | sudo sh -c "echo 'MQTT_HOST=${DOMAIN}' >> $filename" 348 | sudo sh -c "echo 'MQTT_PREFIX=${WSPREFIX}' >> $filename" 349 | 350 | 351 | sudo sh -c " echo 'SSLREDIRECT=${SSLREDIRECT}' >> $filename" 352 | 353 | 354 | cd .. 355 | 356 | 357 | 358 | sudo docker-compose -f docker_node_install.yml up 359 | sudo docker-compose -f docker_nuxt_build.yml up 360 | sudo docker-compose -f docker_compose_production.yml up -d 361 | 362 | 363 | 364 | 365 | 366 | 367 | 368 | --------------------------------------------------------------------------------