Deploy JODConverter
Convert Word, Excel and others to PDF (and back) through a simple REST API
JODTemplateRailway
Just deployed
Deploy and Host JODConverter on Railway
JODConverter is a REST API that converts office documents from one format
to another — docx → pdf, xlsx → csv, odt → docx, html → pdf, and
most other pairs LibreOffice supports — by wrapping headless LibreOffice
behind a simple HTTP endpoint. Send a file, get back the converted result.
About Hosting JODConverter
This template packages the official jodconverter/jodconverter-examples:rest
image (headless LibreOffice + the JODConverter Spring Boot REST sample)
behind an nginx proxy, so it deploys on Railway with zero configuration:
dynamic $PORT binding, sane default upload-size limits, and an optional
API-key gate you can turn on later. There's no database or external
service to provision — one container does the whole job. Budget at least
1GB RAM per instance, since headless LibreOffice conversions are
memory-hungry.
Common Use Cases
- Converting user-uploaded Word/Excel/PowerPoint documents to PDF from a web or mobile app's backend
- Batch-converting a document archive to a different format (e.g. legacy
.doc/.xlsfiles to.docx/.xlsxor PDF) as part of a migration pipeline - Generating PDF exports of reports or invoices produced as
.docx/.odttemplates in an internal tool
Dependencies for JODConverter Hosting
- No external database or managed service required — it's a single self-contained container
- A Railway plan with at least 1GB RAM per instance (headless LibreOffice conversions need it)
Implementation Details
Once deployed, convert a file with a single request:
curl -F "data=@document.docx" https://{your_domain}.up.railway.app/lool/convert-to/pdf -o document.pdf
Interactive API docs are available at /swagger-ui/index.html. By default
the conversion endpoint has no authentication — anyone with the URL
can submit documents. Set the API_KEYS variable to a comma-separated
list of keys to require one of them (as an X-Api-Key header or an
apiKey query parameter) on every request; leave it empty to keep the
service open. Either way, consider keeping it on Railway's private network
and calling it only from your other services if it doesn't need to be
public.
If API_KEYS is set, pass one of the configured keys as a header:
curl -F "data=@document.docx" -H "X-Api-Key: " https://{your_domain}.up.railway.app/lool/convert-to/pdf -o document.pdf
or as a query parameter instead, if a header isn't convenient:
curl -F "data=@document.docx" "https://{your_domain}.up.railway.app/lool/convert-to/pdf?apiKey=" -o document.pdf
Why Deploy JODConverter on Railway?
Railway is a singular platform to deploy your infrastructure stack. Railway will host your infrastructure so you don't have to deal with configuration, while allowing you to vertically and horizontally scale it.
By deploying JODConverter on Railway, you are one step closer to supporting a complete full-stack application with minimal burden. Host your servers, databases, AI agents, and more on Railway.
Template Content
JODTemplateRailway
olivier4429/JODTemplateRailway