Upgrading
Make a backup first, then:
bash
docker compose pull
docker compose up -dWith the standalone compose file in Dockge or Portainer: update the stack (Dockge: Update) or pull the image again and redeploy it (Portainer).
On start openbill migrates the database, installs the built-in templates of the new version and rebuilds its caches. Data in the volumes stays. docker compose restart alone keeps the old image.
- Pinned version: change
OPENBILL_IMAGEin.envfirst (e.g.baeroe/openbill:0.2.0), or theimage:line of the standalone compose file. - Compose file: the notes below say when
docker-compose.ymlchanged (for example new MariaDB or Gotenberg versions). Download it again and keep your own changes:curl -fsSLO https://raw.githubusercontent.com/baeroe/openbill/main/docker-compose.ymlWith the standalone compose file, paste the new docker-compose.standalone.yml and copy your values from the block at the top into it. - MariaDB: patch versions upgrade themselves on start (
MARIADB_AUTO_UPGRADE). A new major version only comes with a note here. - Going back: migrations are not rolled back. Restore the backup and pin the old version.
All versions and their changes: https://github.com/baeroe/openbill/releases
Notes per version
0.3.1
- Security update: PHP 8.4.27 fixes two critical remote code execution vulnerabilities in PHP itself (CVE-2026-109618, CVE-2026-109619) that can be exploited without logging in. Update now: https://www.php.net/archive/2026.php#2026-10-21-5
- The image is now based on
serversideup/phpv5.0.2 (before: v4.5.1, PHP 8.4.23). It also brings nginx 1.30.6 with fixes for five nginx vulnerabilities. TRUSTED_PROXY=off: nginx no longer rewrites the client IP itself, onlyTRUSTED_PROXIESdecides about forwarded headers, as before. No change for setups with a reverse proxy in front: https://openbill.dev/en/reverse-proxy- Upgrade:
docker compose pull && docker compose up -d - No changes to the compose files.
0.3.0
- GiroCode on invoices: templates get
document.payment_qr, an EPC QR code (SVG data URL) that banking apps scan to fill in the SEPA transfer: your organization name and IBAN/BIC, the total and the invoice number as reference. It is only filled for finalized invoices with a total above zero and an IBAN in the organization settings. The built-in templates do not print it; add it to your own template: https://openbill.dev/en/templates#girocode - New Liquid filter
ibanprints an IBAN in groups of four (org.iban | iban). payment_qris now a reserved key for document fields: a custom document field with this key is hidden by the GiroCode in templates.- No changes to the compose files.
0.2.1
- The New document dialog only offers the types you can create there (offer, order confirmation, invoice). Cancellations still come from an invoice; the greyed-out card is gone, and the remaining cards have room for their names.
- Template gallery: the buttons of a card wrap on narrow cards instead of running out of the card.
- No changes to the compose files.
0.2.0
- Customer numbers are configurable: new section Settings → Customers with a number range like the document types (placeholders
{YYYY},{YY},{MM},{0000}, optional yearly reset, next value, live preview). New customers without a number get the next number of this range; numbers typed by hand stay as they are. On update the range continues the numbers handed out so far (for exampleK-1004→K-{0000}from 1005, otherwiseC-{0000}from 1001), so nothing changes until you change the pattern. Details: https://openbill.dev/en/settings#customers - REST API:
GET/PATCH /api/customer-numberingandGET /api/customer-numbering/preview; the MCP toolget-settingsalso returnscustomer_numbering. - The next number shown in the document type settings now skips numbers that already exist, like finalizing does.
- No changes to the compose files.
0.1.1
- Compose file changed: openbill's port
7739is now published on all addresses of the host (as7739:8080), not only on127.0.0.1. A reverse proxy in a container, like Nginx Proxy Manager in Dockge, can now forward to<server>:7739(before, it got502 Bad Gateway). Downloaddocker-compose.ymlor paste the newdocker-compose.standalone.ymlagain. WithOPENBILL_BIND=127.0.0.1in your.env, the port stays local. Hardening options: https://openbill.dev/en/reverse-proxy - Documentation: disclaimer (no tax or legal advice, no warranty) in the README, setup and e-invoice pages.
0.1.0
- First release: quotes, order confirmations, invoices and cancellations with custom fields on every level, line items in groups, Liquid templates (Klar, Kante, Leise and your own, with the template toolkit), EN 16931 e-invoices as PDF/A-3 with embedded XML, a REST API and an MCP server, in English and German.
- Image
baeroe/openbill:0.1.0forlinux/amd64andlinux/arm64. Runs as Docker Compose stack with MariaDB 11.4 and Gotenberg 8, see Setup. - Documentation: https://openbill.dev/