Essa é uma revisão anterior do documento!
Instalação diretamente no servidor
Sistemas operacionais testados: Ubuntu 16.04 e 18.04
Requisitos de hardware: Processador quad core (i5 ou superior). 8GB RAM. 50GB HDD disponíveis.
- Atualizar repositórios através do comando
sudo apt-get update
- IMPORTANTE! Instalar e configurar o NTP
- Exemplo para Ubuntu 16.04:
sudo timedatectl set-timezone America/Sao_Paulo sudo timedatectl set-ntp on
- Aguardar um minuto e verificar status de sincronização através do comando
timedatectl
- Instalar o Nginx (versão 1.10.3 ou superior)
- Insira o seguinte comando:
sudo apt-get install nginx
- Instalar o MongoDB (versão 3.2 ou superior)
- Para instalar utilizando o Ubuntu
- Insira os seguintes comandos para Ubuntu 18.04:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 echo "deb [ arch=amd64 ] https://repo.mongodb.org/apt/ubuntu bionic/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list sudo apt-get update sudo apt-get install -y mongodb-org
- Insira os seguintes comandos para Ubuntu 16.04:
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 9DA31620334BD75D9DCB49F368818C72E52529D4 echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/4.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-4.0.list sudo apt-get update sudo apt-get install -y mongodb-org
- Inicie o serviço do MongoDB através dos comandos:
sudo systemctl enable mongod sudo systemctl start mongod
- Para instalar em sistemas operacionais diferentes do Ubuntu, veja a documentação em https://docs.mongodb.com/manual/installation/
- Atenção! Não alterar a porta padrão 27017
- Instalar NodeJS (versão 6.4.0 ou superior)
- Para instalar utilizando o Ubuntu
- Insira os seguintes comandos:
curl -sL https://deb.nodesource.com/setup_6.x | sudo -E bash - sudo apt-get install -y nodejs
- Para instalar em sistemas operacionais diferentes do Ubuntu, veja a documentação em https://nodejs.org/en/download/package-manager/
- Instalar pacotes essenciais do Ubuntu:
sudo apt-get install build-essential
- Instalar o instalador de pacotes do NodeJS:
sudo apt-get install npm
- Instalar o PM2 através do comando:
npm install pm2 -g
- Instalar o extrator de .ZIP através do comando:
sudo apt-get install unzip
- Extraia o arquivo .ZIP do pacote contendo o Flashman no diretório de sua preferência. Como exemplo eis o comando:
mkdir ./flashman unzip flashman.zip -d ./flashman/
- No diretório extraído do Flashman, execute o seguinte comando:
npm install
- Configure o Nginx para receber e autorizar a comunicação HTTPS com o Flashman através do seguinte trecho de código de exemplo:
server { listen 443 ssl; server_name meuflashmandeexemplo.dominio.com; location / { proxy_redirect http:// https://; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy_set_header X-NginX-Proxy true; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_pass http://localhost:8000; proxy_http_version 1.1; proxy_cache_bypass $http_upgrade; } client_max_body_size 32M; }
- O trecho de código acima pode ser configurado a partir do comando
nano /etc/nginx/sites-available/default
- Substitua a variável “server_name” pelo domínio completo de seu servidor
- Recarregue o serviço Nginx através do comando:
sudo systemctl reload nginx
- Use o gerador de certificados gratuitos Certbot para gerar o certificado HTTPS para o Flashman. Siga os passos:
sudo apt-get update sudo apt-get install software-properties-common sudo add-apt-repository ppa:certbot/certbot sudo apt-get update sudo apt-get install python-certbot-nginx sudo certbot --nginx
- Siga os passos informados pelo comando certbot –nginx
- Mais informações sobre o certbot em: https://certbot.eff.org/
- Após gerar o certificado no passo anterior, insira uma cópia diretamente no diretório raiz do Flashman através dos comandos:
cp /etc/letsencrypt/live/<<meuflashmandeexemplo.dominio.com>>/fullchain.pem <<caminho completo>>/flashman/certs/cert.pem cp /etc/letsencrypt/live/<<meuflashmandeexemplo.dominio.com>>/privkey.pem <<caminho completo>>/flashman/certs/key.pem chown <<usuário>> <<caminho completo>>/flashman/certs/cert.pem <<caminho completo>>/flashman/certs/key.pem chmod 400 <<caminho completo>>/flashman/certs/cert.pem <<caminho completo>>/flashman/certs/key.pem
- Substitua o valor «meuflashmandeexemplo.dominio.com» pelo domínio completo de seu servidor cujo o certificado foi gerado
- Substitua o «caminho completo» pelo caminho até o diretório raiz do Flashman.
- Substitua o «usuário» pelo usuário do sistema que irá executar o servidor do Flashman (exemplo: localuser)
- Insira a seguinte linha no final do arquivo /etc/letsencrypt/renewal/meuflashmandeexemplo.dominio.com.conf :
renew_hook = <<caminho completo>>/flashman/scripts/cert-deploy-hook.sh <<caminho completo>>/flashman/certs meuflashmandeexemplo.dominio.com <<usuário>>
- A edição do crontab pode ser feita através do comando:
sudo crontab -e
- Substitua o valor “meuflashmandeexemplo.dominio.com” pelo domínio completo de seu servidor cujo o certificado foi gerado
- Substitua o «caminho completo» pelo caminho até o diretório raiz do Flashman.
- Substitua o «usuário» pelo usuário do sistema que irá executar o servidor do Flashman (exemplo: localuser)
- Abra o arquivo environment.config.json e adicione a variável FLM_CERT_MQTT_DIR com o caminho para o certificado certbot recém gerado. Exemplo:
{ "apps": [{ "name": "flashman", "script": "bin/www", "log_date_format": "YYYY-MM-DD HH:mm Z", "autorestart": true, "env": { "production": true, "TZ": "America/Sao_Paulo", "FLM_IMG_RELEASE_DIR": "./public/firmwares/", "FLM_ALLOW_DEV_UPDATE_REST_DATA": false, "FLM_MONGODB_HOST": "localhost", "FLM_ADM_USER": "admin", "FLM_ADM_PASS": "flashman", "FLM_CERT_MQTT_DIR": "<<caminho completo>>/flashman/certs" }, "error_file": "/dev/stderr", "out_file": "/dev/stdout", "exec_mode": "cluster" }] }
- Substitua o «caminho completo» pelo caminho até o diretório raiz do Flashman.
- No diretório principal do Flashman, inicie o serviço através do comando
pm2 start environment.config.json
- Verifique se o serviço está em execução através do comando:
pm2 status
- Deixe o serviço do Flashman auto renicializável através dos comandos executados no diretório principal do Flashman:
pm2 startup pm2 save