# Conector Local -  Instalação e Atualização

## 1. Pré-Instalação

#### 1.1. Solicite as credenciais para uso do serviço

**a.** Credenciais para uso do RAP: \
&#x20;       **i.** Login; \
&#x20;       **ii.** Senha; \
&#x20;       **iii.** Client ID - ID que identifica unicamente cada instituição; \
&#x20;       **iv.** URL do ambiente de homologação. \
**b.** Credenciais para acesso ao registro de imagens privados do Serviço: \
&#x20;       **i.** Login; \
&#x20;       **ii.** Senha;

#### 1.2. Cadastro e Configuração de Certificados Digitais

**a.** Envie os certificados com chave pública que serão utilizados no teste para RNP:\
&#x20;       **i.** Podem ser exportados a partir dos containers A1 (arquivo.pfx) ou A3 (token criptográfico) para o formato .cer via ferramenta RAPSign;\
&#x20;       **ii.** Caso ainda não tenha certificado, solicite à RNP certificados exemplares. Nesse caso, eles já serão cadastrados no sistema antes do envio;\
&#x20;       **iii.** Recomendamos o uso de pelo menos dois certificados para simular o processo. Um para simular a pessoa jurídica da instituição e outro para simular uma pessoa física;

#### 1.**3**. Requisitos para Infraestrutura recomendada para instalação do Conector

Serão executados, nesse ambiente, um par de imagens Docker (uma com o conector e outra com o banco de dados) além de um volume para armazenar o banco. A configuração mínima é uma Máquina virtual básica com uma CPU e 2Gb de RAM. É recomendado 2 vCPU e 4 Gb de RAM para um processamento mais fluido.&#x20;

Apesar do Docker virtualizar também para outros sistemas operacionais é fortemente recomendado que a imagem seja utilizada no Sistema Operacional Linux, mais especificamente nas distribuições Ubuntu ou Debian. Isso é necessário para evitar problemas de configurações que diferem de um sistema para outro, principalmente, configurações de rede.

#### 1.**4**. Requisitos para instalação do Container

**a.** Para o deploy deste projeto, é necessário ter instalado algumas ferramentas de conteinerização:\
&#x20;       **i.** Para instalação do [Docker Engine](https://docs.docker.com/) execute os seguintes comandos:

```
$ curl -fsSL https://get.docker.com -o get-docker.sh
```

```
$ sudo sh get-docker.sh
```

&#x20;       **ii.** Para instalação do [Docker Compose](https://docs.docker.com/compose/) execute os seguintes comandos:

```
$ sudo curl -L
"https://github.com/docker/compose/releases/download/1.25.3/docker-compose-
$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
```

```
$ sudo chmod +x /usr/local/bin/docker-compose
```

## 2. Instalação&#x20;

#### 2.1 Edite o arquivo docker-compose.api.yml\*\*

**a.** Adicione as credenciais para acesso ao Serviço de Diplomas:\
&#x20;       **i.** Login (RAP\_API\_USER\_EMAIL);\
&#x20;       **ii.** Senha (RAP\_API\_USER\_PASS);\
&#x20;       **iii.** Client ID (INSTITUTION\_ID).\
&#x20;       **iv.** **\***&#x41;s variáveis de configuração do RAP Sign WEB também serão configuradas no mesmo arquivo docker-compose. Verifique manual próprio da aplicação

**b**. Realize login no registro privado de imagens do ambiente de homologação:

```
$ docker login https://homolog-diploma.rnp.br/
```

**c.** Execute o script do docker-compose para:\
&#x20;       **i.** Download da imagem atualizada do Conector;\
&#x20;       **ii.** Configuração automática do banco (criação e execução dos scripts para migração de tabelas); \
&#x20;       **iii.** Inicialização dos daemons de processamento de documentos e APIs de Comunicação;

```
$ docker-compose -f docker-compose.api.yml up
```

&#x20;       **iv.** Opcionalmente efetue logoff do serviço de registro de imagens;

```
$ docker logout https://homolog-diploma.rnp.br/
```

*Obs.: Caso o conector na primeira execução apresentar problema de conexão com o banco, reinicie o mesmo.*

#### **Vídeo demonstrativo da Instalação e Configuração dos Componentes Locais:**

{% file src="<https://30362825-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MB-V5yqZBtdQcJVbpRg%2F-MW27mXlenZWi1_Q0V4s%2F-MW4c9t00fPSuaFwYrc3%2FInstala%C3%A7%C3%A3o%20e%20Configura%C3%A7%C3%A3o%20dos%20Componentes%20Locais%20(Conector).mp4?alt=media&token=7ecc9906-5aab-48da-a91c-0b86d179d3ff>" %}
Vídeo - Instalação e Configuração&#x20;
{% endfile %}

{% file src="<https://30362825-files.gitbook.io/~/files/v0/b/gitbook-legacy-files/o/assets%2F-MB-V5yqZBtdQcJVbpRg%2F-MW27mXlenZWi1_Q0V4s%2F-MW4cFd_BTrKXPgahIdh%2FHomologa%C3%A7%C3%A3o%20da%20Instala%C3%A7%C3%A3o%20Local.mp4?alt=media&token=621225d7-923e-4058-b6a7-a5d090432b18>" %}
Video - Homologação da Instalação Local
{% endfile %}

### 3. Procedimentos de Instalação

### Procedimentos para instalação e integração via API de Comunicação

1. Acessar o serviço de registro de imagens (URL temporária do ambiente de homologação. A URL para configuração do ambiente de produção é enviada para instituição junto com as credenciais do ambiente de produção no início da operação do serviço).

<figure><img src="https://30362825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MB-V5yqZBtdQcJVbpRg%2Fuploads%2FwjcFNei3ePywAmJJ8Jgb%2Fimage.png?alt=media&#x26;token=8ad88153-4895-4cbb-aa09-950f0693b30f" alt=""><figcaption></figcaption></figure>

2\.   Inserir credenciais para acesso ao serviço registro privado de imagens docker do Conector local;

3\.   Instalar o docker-compose4;

4\.   Configurar as variáveis de ambiente no arquivo docker-compose.api.yml para acesso ao banco de dados, serviço RAP, bem como variáveis adicionais (ver Seção 5);

5\.   Iniciar o Conector local. É possível indicar a opção -d para que o serviço rode em background;

<figure><img src="https://30362825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MB-V5yqZBtdQcJVbpRg%2Fuploads%2F3a5OUvHeuSuX9PCzYGaZ%2Fimage.png?alt=media&#x26;token=9d6032c8-0a7e-4f51-8977-cec062b1b609" alt=""><figcaption></figcaption></figure>

6\.   (Opcional) Após a configuração e execução do docker-compose é possível remover as informações de login ao repositório privado de imagens com o comando. Caso seja necessário no futuro atualizar a imagem do Conector, o processo de login deverá ser feito novamente.

<figure><img src="https://30362825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MB-V5yqZBtdQcJVbpRg%2Fuploads%2Fi6qM6pYY49rdwyJKcrZd%2Fimage.png?alt=media&#x26;token=b4c12f63-436c-4312-93f3-69e0070370a8" alt=""><figcaption></figcaption></figure>

3 <https://www.iti.gov.br/legislacao/documentos-principais>

4 <https://docs.docker.com/compose/install/>

**OBSERVAÇÃO:** Na primeira execução, as ações de configuração do banco de dados serão executadas pelo próprio Conector, sendo necessário apenas configurar as informações referentes ao nome do banco e credenciais que serão usados. O banco de dados utilizado é o PostgresSQL.

## 4. Atualização do Conector

Para verificar a existência de atualizações no Conector deve-se executar o seguinte comando utilizando o docker-compose\*:

```scheme
$ docker login https://homolog-diploma.rnp.br/
$ docker-compose -f docker-compose.api.yml pull
$ docker logout https://homolog-diploma.rnp.br/

```

Caso exista a versão mais recente do Conector, esta será baixada automaticamente. Após isso, basta reiniciar os containers.

```bash
$ docker-compose -f docker-compose.api.yml restart
```

*Vide* [*Release Note*](https://ajuda.rnp.br/diplomas-digitais/passo-a-passo/conector-local-1/conector-local-release-note) *do Conector Local.*

**4.1 Como localizar o log completo do conector.**

Para localizar o log completo do conector deve-se executar o seguinte comando:

* *sudo docker cp \<container\_id>:/var/log*

### 5. Procedimentos de Configuração

O Conector Local possui algumas variáveis configuráveis.&#x20;

Essas variáveis são passadas para container do Conector Local por meio de arquivo de configuração docker-compose.api.yml.&#x20;

A descrição de cada variável de ambiente é dada no próprio arquivo.

## 6. Documentação da API

Toda a comunicação entre o Sistema da Instituição e o Conector Local é feito via API de Comunicação.&#x20;

A documentação da API de Comunicação pode ser acessada e testada em tempo real via swagger no próprio Conector Local na URL: ***http\://\<IP-DO-CONECTOR>:\<PORTAS>/docs***. A porta padrão para a API de comunicação e para acesso a documentação é a **80**. Ela pode ser alterada no arquivo de configuração do docker-compose. \
Outra forma de acessar a documentação da API de Comunicação é a partir do arquivo **openapi.json\*\***

Esse arquivo pode ser renderizado em qualquer visualizador de documentação swagger, a exemplo do [Swagger Editor](https://editor.swagger.io/). \
\
Além da documentação do Swagger, também é disponibilizada às instituições documentação para uso com o [Postman](https://www.postman.com/):

Vide arquivo **Conector API Environment.postman\_environment.json\*\***

Vide arquivo **RAP Conector.postman\_collection.json\*\***

**\*\****Os arquivos referenciados são disponibilizados para as Instituições que aderiram ao Serviço e que estão em processo de implantação.*

### 7.   Procedimentos para Operação

### Inicialização do Processo de Gestão do Diploma

Para o início do processo de geração as seguintes ações devem ser realizadas:

● **XML da Documentação Acadêmica:**

Montagem dos metadados a partir do preenchimento do JSON específico;&#x20;

Inserção do JSON no Conector via API;&#x20;

Indicação do código 4 para tratamento de Documentação Acadêmica;

● **XML do Histórico Escolar Final:**

Montagem dos metadados a partir do preenchimento do JSON específico;

Inserção do JSON no Conector via API;

Indicação do código 3 para tratamento do Histórico Escolar Final;

**● XML do Diploma Digital:**

Montagem dos metadados a partir do preenchimento do JSON específico;&#x20;

Inserção do JSON no Conector via API;

Indicação do código 2 para tratamento do Diploma Digital;

● **Tratamento da versão PDF/A da Representação Visual:**

Montagem dos metadados a partir do preenchimento do JSON específico;&#x20;

Inserção do JSON no Conector via API;

Indicação do código 5 para tratamento da Representação Visual;

Envio do arquivo no formato PDF/A que será processado;

O processo de tratamento da Representação Visual converte verifica se a representação visual está no formato de preservação PDF/A. Caso não esteja, o Conector tentará convertê-lo. Caso a conversão seja bem sucedida, o processo de registro do referido documento no Serviço RAP será realizado.

No presente momento todas as demais ações necessárias para geração da representação visual do diploma (layout e aposição de estruturas visuais) são de responsabilidade da instituição;

### 7.1 Ordem de Processamento

Para o caso dos documentos associados ao Diploma Digital, uma vez que esses dados possuem interdependência, os documentos devem ser processados na seguinte ordem:

**XML da Documentação Acadêmica;**&#x20;

a. Geração, Assinatura

**XML do Histórico Escolar Final;**&#x20;

a. Geração, Assinatura

**XML do Diploma Digital;**&#x20;

a. Geração, Assinatura

**PDF da Representação Visual (assinatura digital é dispensada);**&#x20;

a. Geração

Vale reforçar, que um documento subsequente, só deve ser enviado para processamento após a finalização completa do anterior, ou seja, após concluída a fase de registro.

### 8. Segurança e Estratégias de Backup

**8.1 Autenticação na API do Conector com token JWT**

No arquivo docker-compose existe uma flag RAP\_USE\_JWT\_AUTHORIZATION que permite ativar a obrigatoriedade de autenticação com tokens JWT para uso das rotas do Conector.

O token pode ser obtido através da rota POST /users/auth e as credenciais são as mesmas que a instituição usa para configurar o Conector. O token tem duração de 15 minutos, mas é recomendado fazer o gerenciamento da expiração através da variável "exp" do token JWT decodificado (<https://jwt.io/>). Para atualização do token existe uma rota denominada POST /users/auth/refresh que permite a aquisição de um novo token JWT a partir do envio do refresh token.

**8.2 Arquitetura e Estratégias de Firewall**

A partir da versão 0.3.7 do RAP Sign WEB houve uma alteração da arquitetura dos componentes locais do serviço. O RAP Sign WEB possui agora um componente de front-end e um componente de back-end. O componente de back-end é o que de fato se comunica com a API do conector. Com essa arquitetura é possível isolar o conector na infraestrutura da instituição, sem a necessidade de expor suas rotas para acesso público.

A única aplicação que precisa ficar pública é o RAP Sign Web. Desta forma, recomenda-se limitar o acesso da API conector apenas para a aplicação RAP Sign Web e para as aplicações internas da instituição como forma de aumentar a segurança sobre a solução.

**8.3 Estratégias de Backup**

Para garantir a consistência, histórico dos documentos e funcionamento correto do serviço é necessário manter o banco de dados de integração do Conector íntegro. Sendo assim, é recomendado que as instituições utilizem estratégias de backup regulares para esse banco de integração.

Abaixo um exemplo de comando que pode ser utilizado para realizar o backup do banco de dados.

<figure><img src="https://30362825-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F-MB-V5yqZBtdQcJVbpRg%2Fuploads%2FwT1CJ5ufDUHN7wNWcXQ8%2Fimage.png?alt=media&#x26;token=bd172f43-925b-4089-8379-99d6938d6737" alt=""><figcaption></figcaption></figure>

Recomenda-se também trabalhar com uma estratégia de backup do volume onde os arquivos do relacionados aos arquivos da documentação acadêmica, diplomas e representação visual se encontram. Para tanto recomenda-se o uso de redundância e sincronização periódica dos arquivos. É preciso observar a manutenção da coerência dos paths dos arquivos a partir do diretório base para que o Conector consiga acessar de forma correta todos os arquivos em caso de uma restauração de arquivos seja necessária.

Com relação às políticas e frequências de backup de banco e volume de arquivos, as instituições devem observar as melhores práticas para esse tipo de ação e aplicar/desenvolver estratégias nesse sentido que se encaixe aos requisitos de segurança trabalhados na instituição.

**8.4 Execução dos serviços Docker**

Recomenda-se apenas a execução de uma cópia do serviço Conector, dada a forma como os daemons internos trabalham. A execução de múltiplas cópias da aplicação pode gerar problemas de inconsistência dos dados.

Os serviços descritos no docker-compose não possuem mecanismo de reinicialização automática. Caso a máquina host seja reiniciada, estes devem ser manualmente reiniciados também. É possível, contudo, que a instituição configure via docker-compose políticas de reinicialização.
