---
title: "Signer - Setup em Docker"
description: "Instalação do Signer em Docker com a imagem lacunasoftware/signer: banco de dados SQL Server, armazenamento compartilhado e servidor OIDC (GrantID), via variáveis de ambiente."
canonical: "https://docs.lacunasoftware.com/articles/signer/on-premises/docker"
locale: "pt-BR"
product: "Signer"
last_updated: "2026-10-12"
---

# Signer - Setup em Docker

Para a instalação baseada em Docker, a seguinte imagem é disponibilizada no Docker Hub:

**[Imagem Docker do Signer](https://hub.docker.com/r/lacunasoftware/signer)**

Esta imagem requer:

* Uma conexão com um banco de dados SQL Server: a collation do banco de dados deve ser Latin1_General_100_CI_AI ou Latin1_General_CI_AI.
* Armazenamento (compartilhado entre todas as instâncias da imagem): veja as configurações de BlobStorage abaixo para mais informações.
* Servidor OIDC ([GrantID](https://docs.lacunasoftware.com/articles/grant-id)) em nuvem ou on-premises.

## Configuração básica

O container desta imagem é configurado por meio de variáveis de ambiente.

Os nomes das variáveis de ambiente devem seguir o padrão `Section__Setting`. Por exemplo: para configurar o SupportEmailAddress
da seção General, defina uma variável com o nome `General__SupportEmailAddress`.

As configurações obrigatórias são apresentadas abaixo.

### Connection string do banco de dados

Na seção **ConnectionStrings**:

* **DefaultConnection**: defina a connection string do banco de dados. Uma connection string típica é assim:

```text
Data Source=SERVER;Initial Catalog=DATABASE;User ID=USERNAME;Password=PASSWORD
```

> **Observação**
>
> Se você criou o banco de dados usando recursos avançados, como log shipping ou mirroring, sua connection string pode ser diferente

Exemplo:

```sh
ConnectionStrings__DefaultConnection=Server=SERVER;Initial Catalog=DATABASE;User ID=USERNAME;Password=PASSWORD;
```

> **Observação**
>
> A maioria dos endpoints de servidor exige o seguinte formato para o parâmetro Data Source/Server:

```sh
tcp:<hostname>,<portnumber>
```

### Seção BlobStorage

Define como a aplicação armazena e recupera arquivos.

Veja [Configuração do Blob Storage](https://docs.lacunasoftware.com/articles/signer/on-premises/blob-storage) para detalhes e exemplos dos serviços suportados.

### Seção Serilog

Define onde os logs da aplicação são armazenados.

Veja [Configuração do Serilog](https://docs.lacunasoftware.com/articles/signer/on-premises/serilog) para detalhes e exemplos dos serviços suportados.

### Configuração do OpenID Connect

A seção **Oidc** configura o servidor OpenID Connect, necessário para o gerenciamento de usuários. É necessária uma *subscription* do [GrantID](https://docs.lacunasoftware.com/articles/grant-id).

Você pode usar uma *subscription* SaaS em [grantid.com](https://grantid.com/) ou executar sua própria instância do GrantID.

* **Authority**: a authority OIDC (ex.: *https://patorum.grantid.com*)
* **ApiEndpoint**: o endpoint da API do servidor OIDC (ex.: *https://api.grantid.com*)
* **ApiName**: o escopo de API que será exigido nos tokens de acesso
* **ClientAppId**: o *client id* do aplicativo do painel
* **AppId**: o *client id* do aplicativo de backend
* **AppSecret**: o *client secret* do aplicativo de backend
* **RequireHttps** (opcional): defina como `false` se o servidor OIDC não usar HTTPS

Veja a página [Configurando uma aplicação SPA](https://docs.lacunasoftware.com/articles/grant-id/on-premises/configure-spa-app) para saber como obter esses valores.

Exemplo:

```sh
Oidc__ApiEndpoint=https://api.grantid.com
Oidc__ApiName=myapp-api
Oidc__AppId=myapp-backend
Oidc__AppSecret=8CqeGeur46k...
Oidc__Authority=https://mysubscription.grantid.com
Oidc__ClientAppId=myapp
Oidc__CpfClaim=cpf
Oidc__CustomScopes=mysub-cpf
```

### PKI Suite

Na seção **PkiSuite**:

* **SdkLicense**: sua licença do PKI SDK, no formato Base64 (**obrigatório**)
* **WebLicense**: sua licença do componente Web PKI no formato binário (Base64). Necessária apenas se os usuários forem emitir certificados em seus computadores (procedimento de emissão pela web)
* **WebBrand**: se você tiver uma *setup brand* personalizada no Web PKI, defina-a aqui

Exemplo:

```sh
PkiSuite__SdkLicense=AxAAzHeWJY9AK...
PkiSuite__WebLicense=ApwBY29uZml1A...
```

### Configurações gerais

* **SiteUrl**: a URL a partir da qual a aplicação será executada.
* **SiteName**: o nome da aplicação.
* **SupportEmailAddress**: o e-mail de suporte, que será incluído no rodapé de todos os e-mails enviados pela aplicação.

Exemplo:

```sh
General__SiteUrl=https://signer.myapp.com
General__SiteName=MyApp Signer
General__SupportEmailAddress=support@email.com
```

### Configuração de bindings

* **UseReverseProxy**: defina como `true` se o container for executado atrás de um proxy reverso ou balanceador de carga. Caso contrário, pode ser omitida.

```sh
Bindings__UseReverseProxy=true
```

### Envio de e-mail

Na seção **Email**:

* **Enabled**: por padrão, o envio de e-mail está habilitado. Para desabilitá-lo, defina esta configuração como `false` e ignore o restante desta seção
* **ServerHost**: hostname do servidor SMTP
* **EnableSsl**: por padrão, a conversação SMTP é feita sobre SSL. Para desabilitar o SSL, defina esta configuração como `false`
* **ServerPort**: por padrão, a conversação SMTP é feita pela porta 587. Defina esta configuração para usar outra porta
* **Username** e **Password**: se o servidor SMTP exigir autenticação, defina estas configurações
* **SenderAddress**: endereço de e-mail a ser usado como remetente (campo *from*)
* **SenderName**: nome a ser usado como nome do remetente (opcional)

Exemplo:

```sh
Email__ServerHost=email-smtp.us-east-1.amazonaws.com
Email__Username=USERNAME
Email__Password=PASSWORD
Email__SenderAddress=no-reply@email.com
Email__SenderName=MYAPPNAME
```

## Configurações adicionais

Outras configurações podem ser encontradas na página [Configurações do Signer](https://docs.lacunasoftware.com/articles/signer/on-premises/settings).

## Instalação

Baixe a imagem estável mais recente, configure as variáveis de ambiente obrigatórias e execute o container.

> **Aviso**
>
> Comece com **apenas um container**, pois na primeira inicialização as tabelas do banco de dados são criadas (mais containers poderiam causar uma condição de corrida).
> Depois que a inicialização inicial for concluída, você pode executar quantos containers quiser.

## Orientações para atualização

Antes de atualizar seu container, recomendamos consultar o [Changelog](https://docs.lacunasoftware.com/articles/signer/changelog) para ver o que mudou da sua
versão atual até a mais recente disponível.

Se alguma das versões incluídas na atualização tiver alterações no modelo do banco de dados ("Atualiza modelo de banco de dados: sim"),
proceda com cuidado, pois o container tentará atualizar o banco de dados na inicialização.

Nesse cenário, recomendamos escolher uma das seguintes opções:

* Reduzir o número de containers em execução para 1.
* Permitir que apenas um container atualize o banco de dados. Para isso, adicione as seguintes configurações a todos os containers, exceto um:

```sh
General__ProcessBackgroundJobs=false
General__AutoUpdateDatabase=false
```

Por fim, para atualizar, basta baixar a imagem com a tag correspondente à versão desejada e executar o container.

## Veja também

* [Signer on-premises](https://docs.lacunasoftware.com/articles/signer/on-premises)
