Pular para o conteúdo

Referência de configuração

O Araru é executado a partir de repositórios separados. Configure araru-server e araru-web de forma independente; eles não precisam compartilhar um diretório.

Terminal window
cd araru-server
cp .env.example .env
npm ci
npm run migrate
npm run dev

Em outro terminal:

Terminal window
cd araru-web
cp .env.example .env
npm ci
npm run dev

O servidor lê .env na raiz do próprio repositório. Paths relativos são resolvidos a partir dessa raiz. A lista completa e oficial está em araru-server/.env.example.

NODE_ENV=development
PORT=3001
DATABASE_URL=postgres://araru:password@localhost:5432/araru
REDIS_ENABLED=true
REDIS_URL=redis://localhost:6379
FRONTEND_URL=http://localhost:5173
PUBLIC_BACKEND_URL=http://localhost:3001
ALLOWED_ORIGINS=http://localhost:5173
APP_ACCESS_SECRET=troque-por-um-segredo-aleatorio-longo

O PostgreSQL é a fonte de verdade do catálogo, usuários, estado de leitura e metadados dos providers. O Redis é cache/coordenação opcional e não deve ser tratado como dado persistente.

VariávelPadrãoDescrição
NODE_ENVdevelopmentModo de execução.
PORT3001Porta HTTP.
DATABASE_URL—URL PostgreSQL; obrigatória na operação normal.
DATABASE_SSLfalseTLS do PostgreSQL.
DATABASE_POOL_MAX10Tamanho máximo do pool.
DATABASE_IDLE_TIMEOUT_MS30000Timeout de conexão ociosa.
DATABASE_CONNECTION_TIMEOUT_MS5000Timeout de conexão.
REDIS_ENABLEDtrueHabilita Redis.
REDIS_URL—URL Redis quando habilitado.
REDIS_KEY_PREFIXararu:Namespace das chaves Redis.
FRONTEND_URLhttp://localhost:5173URL canônica do frontend.
PUBLIC_BACKEND_URLhttp://localhost:<PORT>URL pública usada nos links.
ALLOWED_ORIGINSFRONTEND_URLOrigens CORS exatas separadas por vírgula.
VariávelPadrãoDescrição
DATA_DIRstorageDiretório persistente do servidor.
LOCAL_LIBRARY_DIRstorage/pdfsDiretório da biblioteca local.
COVER_CACHE_DIRstorage/cache/coversCache recriável de capas.
DRIVE_FOLDERS_CONFIGstorage/drive-folders.jsonMapeamento de pastas Drive/categorias.
MANUAL_CATEGORIAS_PATHstorage/categorias.jsonSobrescritas manuais.
LOCAL_FILES_ROUTE/arquivosPrefixo de recursos locais.
LIBRARY_WATCH_ENABLEDtrueObserva alterações na biblioteca local.
LIBRARY_WATCH_DEBOUNCE_MS1200Debounce do watcher.
JOBS_ENABLEDtrueHabilita jobs agendados.
CATALOG_REFRESH_INTERVAL_MINUTES60Intervalo de atualização do catálogo.
MAINTENANCE_INTERVAL_MINUTES1440Intervalo de manutenção.
CATALOG_MISSING_RETENTION_DAYS30Retenção de registros ausentes.
VariávelPadrãoDescrição
ENABLE_GOOGLE_DRIVEtrueHabilita a integração Drive.
GOOGLE_API_KEYvazioAcesso por chave a recursos públicos.
GOOGLE_CLIENT_IDvazioID do cliente OAuth.
GOOGLE_CLIENT_SECRETvazioSegredo do cliente OAuth.
GOOGLE_REDIRECT_URIhttp://localhost:3001/api/v1/auth/callbackURL de callback OAuth.
DRIVE_FOLDER_IDvazioPasta raiz a indexar.
DRIVE_REQUEST_TIMEOUT15000Timeout em milissegundos.
DRIVE_CONCURRENCY6Operações Drive simultâneas.

Consulte o guia de storage para OAuth, mapeamento de pastas, sincronização e limitações.

VariávelPadrãoDescrição
TRUST_PROXYfalseConfia em headers encaminhados somente atrás de proxy confiável.
RATE_LIMIT_ENABLEDfalseHabilita rate limit da API.
RATE_LIMIT_WINDOW_MS60000Janela do rate limit.
API_RATE_LIMIT_PER_MINUTE300Requisições por janela.
APP_ACCESS_SECRETvazioSegredo aleatório longo para sessões/OAuth.
ACCESS_SESSION_SECONDS86400Duração da sessão.
SECURE_COOKIESfalseUse true com HTTPS.
COOKIE_SAME_SITElaxlax, strict ou none; none exige cookie seguro.
LOG_LEVELinfoerror, warn, info ou debug.
USE_MOCK_DATAfalseModo mock somente para desenvolvimento.
VariávelDescrição
VITE_API_URL/api no mesmo domínio ou URL absoluta da API.
VITE_DEV_PROXY_TARGETDestino do proxy Vite no desenvolvimento.
VITE_ALLOWED_HOSTSHosts de LAN/túnel permitidos no desenvolvimento.

Somente valores VITE_* chegam ao navegador. Nunca coloque senhas do banco, segredos OAuth ou chaves secretas R2 no ambiente do Web.

  • Use NODE_ENV=production, HTTPS, SECURE_COOKIES=true, ALLOWED_ORIGINS exatas e APP_ACCESS_SECRET aleatório longo.
  • Habilite rate limit quando a API estiver acessível pela Internet.
  • Mantenha o R2 privado e emita URLs assinadas pelo servidor quando precisar de entrega direta.
  • Monte DATA_DIR, os dados do PostgreSQL e a biblioteca original em storage persistente.
  • Não exponha /health/details nem rotas administrativas sem autenticação.
  • Não registre objetos de ambiente, tokens, URLs assinadas ou headers de autorização.