Installation — overview
NomaUBL ships as a single self-contained Java application — the JAR (nomaubl.jar on Linux / macOS, nomaubl-fat.jar on Windows) plus two equivalent service-control wrappers: nomaubl.sh (Bash) and nomaubl.cmd (Windows batch). Both wrappers expose the same subcommands (start / stop / restart / status / log / install / upgrade / processing modes) and call the JAR with the same arguments — pick the one that matches your host. There's no Docker image; the JAR runs against a JDK 17 process and writes its lifecycle data to an Oracle or PostgreSQL database. The web UI, REST API and background scheduler all live inside that one process.
This section walks every step from a fresh Linux server to a running environment.
The pieces
| Component | Why |
|---|---|
| JDK 17 | The Java runtime that hosts the JAR. |
| Database | NomaUBL's persistent store — invoice lifecycle, reference data, configuration history. Oracle (19c+) or PostgreSQL (13+); same instance as your JD Edwards / SAP / NetSuite / custom ERP, or a dedicated schema. |
| The JAR | The application binary — bundled web UI, CLI, scheduler. Shipped as nomaubl.jar (Linux / macOS) or nomaubl-fat.jar (Windows). |
| The wrapper | A service-control script that manages the JAR lifecycle per environment and exposes shorthand forms of every CLI mode. nomaubl.sh on Linux / macOS, nomaubl.cmd on Windows. |
| An environment directory | Per-instance state on disk — config/, input/, process/, ubl/, single/, template/, xslt/, .versions/. Created by <wrapper> install <targetDir> (which calls -install on the JAR). |
| Shared resources | One level above the environment — fonts/ (PDF generation) and images/ (project assets). Created at install. |
A single host can run multiple environments (demo, uat, prod) side by side, each with its own port and PID file.
At a glance
Read in order
| Step | Page |
|---|---|
| 0 | This overview. |
| 1 | Requirements — JDK, database, OS, ports, optional reverse proxy. |
| 2 | Install and layout — run install, understand the directory layout, install several environments. |
| 3 | Configure — start the service, sign in, configure connectors and system settings through the UI. |
| 4 | Service and systemd — wrapper lifecycle, optional systemd unit (Linux) / Windows service (Windows), optional nginx reverse proxy. |
| 5 | Upgrade — when a new release ships, drop the new JAR and run <wrapper> upgrade <env>. |
Sanity check — what "installed" looks like
After the four steps:
./nomaubl.sh status(ornomaubl.cmd status) shows your environment(s) asrunning.curl http://<host>:8090/api/build-inforeturns the version + build timestamp.curl http://<host>:8090/api/licensereturns the license state.- The sign-in page renders at
http://<host>:8090/. - The admin user you created (via the in-app Init Database step on first open) can sign in.
If any of those don't hold, the per-step page covers troubleshooting.
What this section does NOT cover
| Topic | Where it lives instead |
|---|---|
| Day-to-day CLI operations. | Management → Command Line. |
| The web UI page-by-page. | The Application / Sync / Processing / UBL Tools sections of the sidebar. |
| Upgrading an existing environment. | Upgrade. |
| Live runtime observation. | Monitoring. |
| What a "Platform Agréée" template is and how to configure one. | Configuration → System → E-invoicing. |
What's next
- Requirements — what the host needs before you start.
- Install and layout — provision the first environment.