Configuração

O PgArachne carrega a configuração a partir de variáveis de ambiente ou de um arquivo.

Note: schema.sql tenta criar o papel pgarachne_admin e concedê-lo a pgarachne. Sem privilégios de superusuário, a criação é ignorada. Crie o papel e o grant manualmente se necessário.
O usuário proxy (DB_USER) deve ser membro de pgarachne e pgarachne_admin para validar e criar tokens de API.
Nota de Segurança: O PgArachne não lida com senhas do banco de dados no arquivo de configuração. Ele depende do mecanismo padrão de arquivo .pgpass do PostgreSQL (ou da variável de sistema PGPASSWORD) para autenticação.
Dica: Se o PgArachne estiver atrás de um reverse proxy, defina TRUSTED_PROXIES para resolver corretamente o IP do cliente e evitar spoofing do rate limit.
Ordem de Busca: Se nenhum arquivo de configuração for especificado via CLI, ele busca em:
  1. Diretório atual: ./pgarachne.env (Todos os SOs)
  2. Configuração do usuário:
    • Linux / macOS: ~/.config/pgarachne/pgarachne.env
    • Windows: %USERPROFILE%\.config\pgarachne\pgarachne.env
  3. Configuração do sistema: /etc/pgarachne/pgarachne.env (Somente Linux / macOS)

Exemplo de Configuração Mínima

É tudo o que você precisa para começar:

DB_HOST=localhost
DB_PORT=5432
DB_USER=pgarachne
JWT_SECRET=change_me_to_something_secure

Referência de Configuração

VariávelObrigatórioDescrição
Conexão com Banco de Dados
DB_HOSTSimEndereço do servidor PostgreSQL (ex: localhost).
DB_PORTSimPorta do banco de dados.
DB_USERSimO usuário do banco de dados com o qual o PgArachne se conecta.
DB_SSLMODENãoModo SSL do PostgreSQL. Padrão: disable.
DB_SSLROOTCERTNãoCaminho do certificado raiz da CA (PEM).
DB_SSLCERTNãoCaminho do certificado do cliente (PEM).
DB_SSLKEYNãoCaminho da chave privada do cliente (PEM).
Servidor HTTP
HTTP_PORTNãoPorta para escutar. Padrão: 8080.
ALLOWED_ORIGINSNãoConfigurações de CORS. Lista separada por vírgulas de domínios permitidos (ex: https://meuapp.com). Padrão: *.
STATIC_FILES_PATHNãoCaminho absoluto para servir arquivos estáticos (Explorer/Frontend).
Segurança (JWT)
JWT_SECRETSimUma string longa e aleatória usada para assinar tokens de sessão.
JWT_EXPIRY_HOURSNãoValidade da sessão em horas. Padrão: 8.
LOGIN_RATE_LIMITNãoMáximo de tentativas de login por janela. Padrão: 5. Use 0 para desativar.
LOGIN_RATE_WINDOWNãoDuração da janela do rate limit. Padrão: 1m.
O rate limit de login é por instância (em memória). Em várias instâncias, use um limitador compartilhado.
TRUSTED_PROXIESNãoProxies confiáveis (IP/CIDR) para X-Forwarded-For. Separados por vírgula.
MAX_REQUEST_BYTESNoTamanho máximo do body em bytes. Padrão: 2097152.
SSE_MAX_CHANNELSNoMáximo de canais por conexão SSE. Padrão: 8.
SSE_MAX_CLIENTSNoMáximo de clientes SSE simultâneos por banco de dados. Padrão: 1000.
SSE_CLIENT_BUFFERNoBuffer SSE por cliente (número de mensagens). Padrão: 64.
SSE_SEND_TIMEOUTNoTempo máximo de espera ao enviar para cliente lento. Padrão: 2s.
SSE_HEARTBEATNoIntervalo de heartbeat para SSE. Padrão: 20s.
SSE_IDLE_TIMEOUTNoTimeout de inatividade sem notificações. Padrão: 90s.
Logging
LOG_LEVELNãoVerbosidade: DEBUG, INFO, WARN, ERROR. Padrão: INFO.
LOG_OUTPUTNãoOnde gravar logs: stdout ou caminho do arquivo.

Inicie o servidor:

./pgarachne -config .env