Pular para o conteúdo principal

Setup do Rest PKI Core em Docker

Para instalar uma instância on premises do Rest PKI Core em Docker, siga os passos abaixo. Para outros ambientes, clique aqui.

A imagem de Docker do Rest PKI Core encontra-se disponível no Docker Hub:


Rest PKI Core Docker image


A imagem atualmente recomendada é a lacunasoftware/restpkicore:4.1

Tags móveis disponíveis:

  • A tag 4.1 aponta para a última imagem 4.1.x (recomendada)
  • A tag 4 aponta para a última imagem 4.x
  • A tag stable aponta para a última imagem estável

Esta imagem requer:

Configuração

Esta imagem é configurada utilizando variáveis de ambiente. Obtenha o arquivo de configuração de exemplo para um guia de como preencher os parâmetros necessários.

Para preencher o parâmetro General__EncryptionKey, gere uma chave de 256 bits para encriptar dados sensíveis armazenados no banco de dados:

docker run lacunasoftware/restpkicore:4.1 -- gen-enc-key

Para preencher o parâmetro General__RootPasswordHash, escolha uma senha forte para acesso à interface de gerenciamento como root e calcule o hash dela:

docker run -i lacunasoftware/restpkicore:4.1 -- hash-root-pass

Portas

A imagem escuta na porta 80.

É recomendado configurar um proxy reverso ou balanceador de carga escutando nas portas padrão HTTP (80) e HTTPS (443), redirecionando o tráfego em ambas portas para a porta 80 do Rest PKI Core. Ademais, seu proxy deve preencher os request headers X-Forwarded-Proto, X-Forwarded-For e, opcionalmente, X-Forwarded-Port. A configuração Bindings__UseReverseProxy=True instrui o Rest PKI Core a confiar nas informações preenchidas nestes headers.

Exemplo

Em um ambiente de produção, tipicamente se utilizaria um orquestrador de Docker e um SGBD dedicado ou em nuvem (IaaS). Entretanto, para fins de teste, utilizando apenas o Docker é possível rodar uma instância do Rest PKI Core com um banco de dados PostgreSQL local.

Comece criando um volume para o banco de dados:

docker volume create restpkicore_sql

Inicie o SGBD com uma senha da sua preferência (substitua SOME_PASS abaixo):

docker run --name restpkicore_sql -v restpkicore_sql:/var/lib/postgresql/data -p 5432:5432 -e "POSTGRES_PASSWORD=SOME_PASS" -d postgres

Verifique os logs do container para eventuais erros:

docker logs -f restpkicore_sql

Esse processo pode levar alguns minutos. Uma vez que o SGBD esteja executando, pressione CTRL+C para sair dos logs.

Crie um volume para utilizar como blob storage:

docker volume create restpkicore_data

Em seguida, baixe o arquivo de configuração de exemplo, salve-o com nome restpkicore.env e preencha-o.

Na configuração da connection string, use o valor abaixo substituindo HOST_IP pelo endereço de IP da máquina host e SOME_PASS pela senha escolhida para o banco de dados:

ConnectionStrings__DefaultConnection=Host=HOST_IP;Database=restpkicore;Username=postgres;Password=SOME_PASS
ConnectionStrings__DefaultConnection_ProviderName=Postgres

Na configuração de blob storage, deixe os parâmetros padrões, pois montaremos o volume criado em /var/app:

BlobStorage__Type=FileSystem
BlobStorage__Path=/var/app

Por fim, execute um container com a imagem usando o arquivo de configuração, montando o volume restpkicore_data em /var/app e expondo a aplicação (que escuta na porta 80) na porta 8080 da máquina host:

docker run --name restpkicore --env-file restpkicore.env -v restpkicore_data:/var/app -p 8080:80 -d lacunasoftware/restpkicore:4.1
dica

Caso tenha privilégios suficientes, o Rest PKI Core tentará criar o banco de dados no servidor caso ele não exista (é isso que acontecerá nesse caso)

Verifique os logs do container para eventuais erros de configuração:

docker logs -f restpkicore

Se tudo estiver configurado corretamente, você deve ter uma instância do Rest PKI Core rodando em localhost:8080

Veja também