Diferenças
Aqui você vê as diferenças entre duas revisões dessa página.
Ambos lados da revisão anterior Revisão anterior Próxima revisão | Revisão anterior Próxima revisão Ambos lados da revisão seguinte | ||
instalacao_on_premise_flashman [19/03/2020 16:22] superuser |
instalacao_on_premise_flashman [19/12/2023 22:17] superuser |
||
---|---|---|---|
Linha 1: | Linha 1: | ||
- | ===== Instalação diretamente no servidor ===== | + | ===== Requisitos de hardware e software para a Instalação do servidor Flashman Local ===== |
- | === Sistemas operacionais testados: Ubuntu 16.04 e 18.04 === | + | ==== Sistemas operacionais testados ==== |
- | === Requisitos de hardware: Processador quad core (i5 ou superior). 8GB RAM. 50GB HDD disponíveis. === | + | |
- | === Requisito de rede: IP real público (Será necessário para os aplicativos FlashApp acessarem o roteador de qualquer rede) === | + | |
- | === Requisitos de Domínio: Criar um mapeamento de domínio para o IP escolhido. (Exemplo: flashman.provedor.com.br) === | + | |
- | ---- | + | Ubuntu 20.04 22.04 LTS - versão SERVER, Debian 10 e 11 - versão SERVER. |
- | - Atualizar repositórios através do comando <code>sudo apt-get update</code> | + | ==== Requisitos de hardware ==== |
- | - IMPORTANTE! Instalar e configurar o NTP | + | |
- | - Exemplo para Ubuntu 16.04: <code> | + | |
- | sudo timedatectl set-timezone America/Sao_Paulo | + | |
- | sudo timedatectl set-ntp on | + | |
- | </code> | + | |
- | - Aguardar um minuto e verificar status de sincronização através do comando <code>timedatectl</code> | + | |
- | - Instalar o Nginx (versão 1.10.3 ou superior) | + | |
- | - Insira o seguinte comando: <code> | + | |
- | sudo apt-get install nginx | + | |
- | </code> | + | |
- | - Instalar o MongoDB (versão 3.2 ou superior) | + | |
- | - Para instalar utilizando o Ubuntu | + | |
- | - Insira os seguintes comandos para Ubuntu 18.04: <code> | + | |
- | 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 | + | |
- | </code> | + | |
- | - Insira os seguintes comandos para Ubuntu 16.04: <code> | + | |
- | 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 | + | |
- | </code> | + | |
- | - Inicie o serviço do MongoDB através dos comandos: <code> | + | |
- | sudo systemctl enable mongod | + | |
- | sudo systemctl start mongod | + | |
- | </code> | + | |
- | - 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 8.17.0 ou superior) | + | |
- | - Para instalar utilizando o Ubuntu | + | |
- | - Insira os seguintes comandos: <code> | + | |
- | curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash - | + | |
- | sudo apt-get install -y nodejs | + | |
- | </code> | + | |
- | - 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: <code>sudo apt-get install build-essential</code> | + | |
- | - Instalar o instalador de pacotes do NodeJS: <code>sudo apt-get install npm</code> | + | |
- | - Instalar o PM2 através do comando: <code> | + | |
- | npm install pm2 -g | + | |
- | </code> | + | |
- | - Instalar o extrator de .ZIP através do comando: <code>sudo apt-get install unzip</code> | + | |
- | - Extraia o arquivo .ZIP do pacote contendo o Flashman no diretório de sua preferência. Como exemplo eis o comando: <code> | + | |
- | mkdir ./flashman | + | |
- | unzip flashman.zip -d ./flashman/</code> | + | |
- | - **Atenção!** O arquivo .ZIP pode ser baixado através da conta da Anlix através da opção "Ferramentas" | + | |
- | - No diretório extraído do Flashman, execute o seguinte comando: <code> | + | |
- | npm install | + | |
- | </code> | + | |
- | - Configure o Nginx para receber e autorizar a comunicação HTTPS com o Flashman através do seguinte trecho de código de exemplo: <code> | + | |
- | server { | + | |
- | listen 443 ssl; | + | |
- | server_name meuflashmandeexemplo.dominio.com; | + | Mínimo: 4 núcleos de processamento. 8GB RAM. 50GB HDD livres |
- | location / { | + | Recomendado: |
- | proxy_redirect http:// https://; | + | Até um total de 12.000 CPES, 4 núcleos de processamento 8GB RAM 50GB HDD livres |
+ | Até um total de 24.000 CPES, 8 núcleos de processamento 16GB RAM 50GB HDD livres | ||
+ | Até um total de 48.000 CPES, 12 núcleos de processamento 32GB RAM 50GB HDD livres | ||
+ | |||
+ | Obs.: Após 48k CPEs é necessário a utilização de outra máquina ou VM | ||
+ | Obs.2: Para modelos híbridos, é necessário uma verificação com nosso time de engenharia para uma melhor composição da(s) máquina(s) | ||
+ | ==== Requisito de rede ==== | ||
- | proxy_set_header X-Real-IP $remote_addr; | + | IP real público. Será necessário para os aplicativos FlashApp acessarem o roteador de qualquer rede |
- | 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; | + | ==== Requisitos de Domínio ==== |
- | proxy_http_version 1.1; | + | |
- | proxy_cache_bypass $http_upgrade; | + | Criar um mapeamento de domínio para o IP escolhido. Exemplo: flashman.provedor.com.br |
- | } | + | ATENÇÂO: |
+ | Caso o provedor deseje criar um domínio com autorização da Autoridade de Certificação (CAA- Certificate Authority Authorization), será necessário autorizar a geração de certificado para a "LET's ENCRYPT", | ||
+ | já que servidores FLashman utilizam certificados emitidos através da "LET's ENCRYPT". | ||
+ | |||
- | client_max_body_size 32M; | + | ==== Requisitos de firewall ==== |
- | } | + | |
- | </code> | + | |
- | - O trecho de código acima pode ser configurado a partir do comando <code>nano /etc/nginx/sites-available/default</code> | + | |
- | - Substitua a variável "server_name" pelo domínio completo de seu servidor | + | |
- | - Recarregue o serviço Nginx através do comando: <code>sudo systemctl reload nginx</code> | + | |
- | - Use o gerador de certificados gratuitos Certbot para gerar o certificado HTTPS para o Flashman. Siga os passos: <code> | + | |
- | 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 | + | * Liberação de ICMP reply (ping) |
- | </code> | + | * Liberação da porta 9001 para o ip 45.77.115.7 (TCP) : Utilizada pelo processo de migração |
- | - Siga os passos informados pelo comando certbot --nginx | + | * Liberação da porta ssh para o ip 177.38.99.106 |
- | - Mais informações sobre o certbot em: https://certbot.eff.org/ | + | * Liberação da porta 80 (TCP) : Para validação de certificados SSL via LetsEncrypt |
- | - Após gerar o certificado no passo anterior, insira uma cópia diretamente no diretório raiz do Flashman através dos comandos: <code> | + | * Liberação da porta 443 (TCP) : Para navegação da interface web e comunicação de gerência com os CPEs |
- | cp /etc/letsencrypt/live/<<meuflashmandeexemplo.dominio.com>>/fullchain.pem <<caminho completo>>/flashman/certs/cert.pem | + | * Liberação da porta 3478 (TCP) : Para uso de mecanismo de "furo" de NAT via servidor STUN |
- | cp /etc/letsencrypt/live/<<meuflashmandeexemplo.dominio.com>>/privkey.pem <<caminho completo>>/flashman/certs/key.pem | + | * Liberação das portas 7547, 57547 (TCP) : Para uso do protocolo TR-069 no envio e recepção de comandos para as CPEs |
- | chown <<usuário>> <<caminho completo>>/flashman/certs/cert.pem <<caminho completo>>/flashman/certs/key.pem | + | * Liberação da porta 7567 (TCP) : Para download de firmwares no procedimento de atualização remota via TR-069 |
- | chmod 400 <<caminho completo>>/flashman/certs/cert.pem <<caminho completo>>/flashman/certs/key.pem | + | * Liberação da porta para comunicação MQTTS. A porta para MQTTS estará especificada no usuário de sua conta da Anlix |
- | </code> | + | |
- | - 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 : <code> | + | |
- | renew_hook = <<caminho completo>>/flashman/scripts/cert-deploy-hook.sh <<caminho completo>>/flashman/certs meuflashmandeexemplo.dominio.com <<usuário>> | + | |
- | </code> | + | |
- | - Verifique se o arquivo <<caminho completo>>/flashman/scripts/cert-deploy-hook.sh possui permissões de execução | + | |
- | - 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: <code> | + | |
- | { | + | |
- | "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" | + | |
- | }] | + | |
- | } | + | |
- | </code> | + | |
- | - 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 <code>pm2 start environment.config.json</code> | + | |
- | - Verifique se o serviço está em execução através do comando: <code>pm2 status</code> | + | |
- | - Deixe o serviço do Flashman auto renicializável através dos comandos executados no diretório principal do Flashman: <code> | + | |
- | pm2 startup | + | |
- | pm2 save | + | |
- | </code> | + | |
- | ==== Opcional: Backup dos dados na nuvem da Anlix ==== | + | ==== Notas importantes ==== |
- | **Atenção! Entre em contato com a Anlix para obter os tokens de backup de dados na nuvem** | + | * Não recomendamos o uso de sistemas 32 bits em geralserá possi |
+ | |||
+ | * O setup da máquina não pode ser um container, será necessário uma VM comum | ||
+ | |||
+ | ==== Procedimento de instalação ==== | ||
+ | |||
+ | Preencher o formulário (https://documentacao.anlix.io/doku.php?id=instalacao_on_premise_flashman) com as informações de acesso e ao servidor, em seguida abrir um ticket de atendimento ((21) 99835-2603) junto a equipe de suporte Anlix. | ||
+ | A equipe de suporte Anlix realizará toda a instalação e migração de dados que for necessária. | ||
+ | Informação dos IPs **" 54.232.148.43 e 177.38.99.106"** das máquinas de onde serão realizados os acessos ao servidor disponibilizado, para a liberação do provedor no seu controle de acesso. | ||
+ | |||
+ | |||
+ | Atenção: O usuário disponibilizado para a configuração dos serviços da Anlix precisa ter permissão de root. | ||
- | O script de backup de dados do Flashman na nuvem da Anlix está localizado em: | ||
- | <code><<caminho completo>>/flashman/scripts/backup-flashman-onpremise-db.sh</code> | ||
- | O script de recuperação de dados do Flashman na nuvem da Anlix está localizado em: | ||
- | <code><<caminho completo>>/flashman/scripts/restore-flashman-onpremise-db.sh</code> |