Add README.md, docs/ (fluxo, configuracao, arquitetura) in PT-BR and a CLAUDE.md technical reference in English describing the installer flow, generated files, containers and architecture. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
97 lines
5.2 KiB
Markdown
97 lines
5.2 KiB
Markdown
# 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** (`<porta>: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" do formulário define a porta exposta no host, não a
|
|
> porta interna. O `config.toml` sempre grava `port = 8080`.
|
|
|
|
### `[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 `←`/`→`. |
|