# Referência de Configuração Este documento descreve todos os campos coletados pelo instalador e os arquivos que ele gera. ## Arquivo `config.toml` Gerado por `GenerateConfigTOML` em [`internal/tui/config.go`](../internal/tui/config.go) e montado no container do app em `/app/config.toml`. Se um `config.toml` já existir no diretório ao iniciar o instalador, seus valores são usados como **padrão** nos formulários. ### `[server]` | Campo | Origem (formulário) | Observações | | ----------------- | ----------------------------- | ------------------------------------------------------------ | | `port` | **fixo `8080`** no arquivo | A porta do formulário é usada apenas no **mapeamento do host** (`:8080`). Dentro do container o app sempre escuta na `8080`. | | `timeout_seconds` | Servidor → Timeout | Em segundos. Padrão `30`. | | `environment` | Servidor → Ambiente | `development` ou `production`. | > **Atenção:** o campo "Porta (host)" do formulário define a porta exposta no host, > não a porta interna. O `config.toml` sempre grava `port = 8080` (constante > `containerAppPort` em `docker.go`). ### `[database]` | Campo | Origem | Observações | | ----------- | -------------------- | ------------------------------------ | | `type` | Banco → Tipo do Banco| `postgres` ou `oracle`. | | `url` | Banco → URL de acesso| String de conexão completa. | | `max_conns` | Banco → Conexões máx.| Validado como número. | | `min_conns` | Banco → Conexões mín.| Validado como número. | ### `[certificate]` | Campo | Valor | Observações | | ------------ | ------------------------------------ | -------------------------------------------- | | `mapped_dir` | Certificado → Diretório | Diretório local montado em `/app/certs`. | | `cert_path` | `/app/certs/client.crt` (fixo) | Caminho **dentro** do container. | | `key_path` | `/app/certs/client.key` (fixo) | Caminho **dentro** do container. | | `ca_path` | `/app/certs/ca.crt` (fixo) | Caminho **dentro** do container. | O diretório indicado deve conter os arquivos `client.crt`, `client.key` e `ca.crt` (comunicação mTLS com o servidor central). ### `[application]` | Campo | Origem | Observações | | -------------------- | ------------------------------- | ------------------------------------ | | `erp` | `TOTVS` (fixo) | ERP integrado. | | `central_server_url` | Aplicação → URL Servidor Central| Ex.: `https://app-dono-api.vitruvio.com.br:8443`. | | `enrollment_token` | Aplicação → Token de Inscrição | Gerado no painel web. | ### `[log]` | Campo | Valor | | -------- | ----------------- | | `level` | `debug` (fixo) | | `format` | `json` (fixo) | ## Arquivo `envs` (vproxy / WireGuard) Gerado por `GenerateWireguardConfig` apenas quando **não há IP público**. Passado ao container do vproxy via `--env-file`. | Variável | Origem | Observações | | ------------ | ----------------------- | ------------------------------------------------------------ | | `PRIVKEY` | vproxy → Chave Privada | Chave privada WireGuard. | | `VIP` | vproxy → IP Virtual | Padrão `127.0.0.1`. | | `PSK` | vproxy → Pre-Shared Key | Chave pré-compartilhada. | | `PROXY_EDPS` | vproxy → Proxy EDPS | Mapeamento de portas, ex.: `22:127.0.0.1:22`. | | `MTU` | vproxy → MTU | Opcional. Padrão `1380`. Validado como número. | | `PROTO` | vproxy → Protocolo | `UDP` (padrão) ou `TCP`. | ### Sobre o protocolo - **UDP** (padrão): melhor desempenho e estabilidade. Manter sempre que possível. - **TCP**: usar apenas quando firewalls restritivos bloqueiam o tráfego UDP e não for possível negociar a liberação com o cliente. ## Campo "Modo Compatibilidade" Presente no formulário de Servidor (`seccomp_unconfined`). Quando definido como **`Sim`**, os containers sobem com `--security-opt seccomp=unconfined`. Útil em máquinas antigas onde o perfil seccomp padrão do Docker causa falhas. Aplica-se tanto ao container do app quanto ao do vproxy. ## Tipos de campo dos formulários Definidos em [`internal/tui/form.go`](../internal/tui/form.go): | Tipo | Comportamento | | ------------------ | ---------------------------------------------- | | `FieldTypeText` | Texto livre. | | `FieldTypePassword`| Texto mascarado. | | `FieldTypeNumber` | Texto (validação numérica na gravação). | | `FieldTypeSelect` | Opções alternadas com `←`/`→`. |