Bring Escriba home
Escriba ships as one prebuilt Docker image that already bundles everything it needs — ffmpeg, Tesseract OCR, Whisper and an embedded Redis. There are no extra services to wire up. Pull it, set a password, and you have a private document-to-Markdown engine running on your own infrastructure.
Quick start
Section titled “Quick start”Pull the image and run it with a single command:
docker run -d --name escriba --restart unless-stopped -p 8000:8000 \-e SECRET_KEY="$(openssl rand -hex 32)" \-e GOD_PASSWORD="change-me" \ghcr.io/diegoparras/escriba:latestThen open http://localhost:8000 and sign in with the GOD_PASSWORD you set.
Deploy on your platform
Section titled “Deploy on your platform”Everything runs from the single image above. Pick the platform you use.
- Project → + Service → App, then set Source → Docker Image to
ghcr.io/diegoparras/escriba:latest. - Add your environment variables (see Configuration).
- Under Domains, set Container Port
8000, add your domain and enable HTTPS. - Deploy.
git clone https://github.com/diegoparras/escriba.gitcd escribacp .env.example .env # set your secretsdocker compose up -d --buildStacks → Add stack → Repository using
https://github.com/diegoparras/escriba and compose path docker-compose.yml
(or paste the compose file in the web editor). Set the environment variables and
deploy; the app listens on port 8000.
Create Application → GitHub (repo diegoparras/escriba) with Build Type:
Dockerfile, add your environment variables, set the domain to Container Port
8000 with HTTPS, and deploy.
docker build -t escriba .docker run -d --name escriba --restart unless-stopped -p 8000:8000 \-e SECRET_KEY="$(openssl rand -hex 32)" -e GOD_PASSWORD="change-me" escribaFor TLS, put a reverse proxy in front. With Caddy, a two-line Caddyfile gives
you automatic HTTPS:
example.com { reverse_proxy localhost:8000}Minimum configuration
Section titled “Minimum configuration”All settings are environment variables. The recommended minimum:
SECRET_KEY=<openssl rand -hex 32> # required in productionGOD_PASSWORD=<a strong password>ANGEL_PASSWORD=<optional>HUMAN_PASSWORD=<optional>If no password is set, a random GOD_PASSWORD is generated and printed to the
container logs on startup. See the full list in Configuration.
Requirements
Section titled “Requirements”The base app is light: a 1-core / 2 GB VPS with ~5 GB of disk is genuinely enough to start, and Escriba scales workers to your CPU. The optional enterprise PII anonymization module (Anonimal) is heavier — mount it only when you need it.