Upload straight to your bucket
Drag in a folder of PDFs or scans, each with its own progress bar. The browser uploads directly to S3-compatible storage; the server only signs the URL.
A minimal self-hostable document archive: the short path through Paperless-ngx, and nothing else.
Upload a file and it goes straight into a bucket you own. A small pipeline runs over it, the text it found is stored beside it, and the document's page shows what came out. It is for someone who wants scans and PDFs kept and readable on their own server, without the search, tags, correspondents and mail ingestion that Paperless-ngx is for.
Drag in a folder of PDFs or scans, each with its own progress bar. The browser uploads directly to S3-compatible storage; the server only signs the URL.
ocrmypdf with Paperless's own flags turns a scan into a searchable PDF/A plus its plain text. A born-digital PDF keeps the text layer it already has.
Every step is a row with a status, so a document says where it got to, and a failed one says why and offers a retry.
Four containers from a published image: Engrafo, Postgres, RustFS and a one-shot job that creates the buckets. Nothing to clone or build.
mkdir engrafo && cd engrafo
curl -fsSLO https://raw.githubusercontent.com/cubicecho/engrafo/main/docker-compose.quickstart.yml
# The three secrets it refuses to start without, plus the address you reach it at.
printf 'ENGRAFO_HOST=%s\nJWT_SECRET=%s\nPOSTGRES_PASSWORD=%s\nRUSTFS_PASSWORD=%s\n' \
"$(hostname -f)" "$(openssl rand -hex 32)" "$(openssl rand -hex 24)" "$(openssl rand -hex 24)" > .env
docker compose -f docker-compose.quickstart.yml up -d
Engrafo is then on http://ENGRAFO_HOST:3004. Set
ENGRAFO_HOST to the hostname or LAN address you browse to,
not localhost: uploads go to a URL signed for that host.
Sign in with any email address; the magic link is written to the
container's log.
Full documentation lives in the project README: https://github.com/cubicecho/engrafo