Docker
Recomendado para produção. Use a imagem pré-construída ou compile localmente com docker compose.
O Fulgoria inclui um servidor enxuto (server.js, Node/Express) que faz apenas duas coisas:
serve o app estático e, opcionalmente, o protege atrás de um login lido do .env. O
documento em si é sempre processado 100% no navegador — o servidor nunca o recebe,
aplica uma CSP estrita e cabeçalhos de segurança, e nunca expõe .env, server.js ou quaisquer
amostras privadas.
Docker
Recomendado para produção. Use a imagem pré-construída ou compile localmente com docker compose.
Node.js 18+
Necessário apenas se você executar o servidor diretamente com npm em vez de Docker.
Um navegador moderno
Toda a extração (análise de PDF, OCR, edição) é executada no lado do cliente, então um navegador atual é onde o trabalho real acontece.
O caminho mais rápido é a imagem publicada no GHCR, construída pelo CI a cada push para main.
docker run -d \ -p 3000:3000 \ -e AUTH_ENABLED=true \ -e AUTH_USER=diego \ -e AUTH_PASSWORD='your-password' \ -e SESSION_SECRET="$(openssl rand -hex 32)" \ -e COOKIE_SECURE=false \ ghcr.io/diegoparras/fulgoria:latestDepois abra http://localhost:3000.
Clone o repositório, prepare seu .env e compile:
cp .env.example .env# edite o .env: defina AUTH_PASSWORD e SESSION_SECRETdocker compose up --buildO arquivo compose incluído mapeia a porta 3000, carrega as variáveis do .env e reinicia
a menos que seja parado.
cp .env.example .envnpm installnode server.js --hash 'your-password' # → cole o hash em AUTH_PASSWORDopenssl rand -hex 32 # → cole em SESSION_SECRETnpm start # → http://localhost:3000http://localhost:3000 (ou no host que você configurou).AUTH_ENABLED=true, faça login com AUTH_USER e a senha que você configurou.Toda a configuração vive no .env (copie-o de .env.example). O arquivo .env nunca é
versionado nem servido.
| Variável | Padrão | Descrição |
|---|---|---|
PORT | 3000 | Porta em que o servidor enxuto escuta. |
AUTH_ENABLED | true | Defina como false para servir o app sem senha (uso local ou em rede privada). |
AUTH_USER | diego | Nome de usuário para o login. |
AUTH_PASSWORD | (vazio) | A senha — texto simples, ou um hash bcrypt de --hash. |
SESSION_SECRET | (vazio) | Segredo usado para assinar o cookie de sessão. Gere com openssl rand -hex 32. |
SESSION_TTL_HOURS | 12 | Duração da sessão, em horas. |
COOKIE_SECURE | true | Mantenha true atrás de HTTPS; defina false apenas para testar localmente sobre http://. |
ESCRIBA_URL | (vazio) | Destino do botão “Enviar ao Escriba”. Vazio recai para /. Aponte para o seu Escriba, por exemplo https://your-escriba.com/. |