InvoiceShelf
Open source invoicing solution for individuals and businesses
Alternative to: freshbooks, invoice ninja, zoho invoice
2.4.2
2026-07-29Maintenance release for the 2.x line, fixing five issues reported against the Docker images. Recommended for all self-hosted 2.x installs.
Containers failing to start on mounted volumes
The entrypoint now recreates storage/framework, storage/logs and storage/app when a volume is missing them, instead of leaving the app to die with Please provide a valid cache path. Docker seeds a named volume only once, when it is empty, so a volume created by an older image never gained those directories on its own.
It also no longer aborts on a chown it has no permission to make — a single file owned by your host user was previously enough to stop the container booting. If a mount genuinely is not writable, startup now says so and names the fix rather than failing later with a stack trace.
Fixes docker#75, docker#69; improves docker#77 and docker#63.
The application timezone was ignored
APP_TIMEZONE had no effect at all, so recurring invoices and scheduled tasks always ran on UTC no matter what you configured. Setting TIMEZONE on the container now works as documented.
Behaviour change: if you have been setting TIMEZONE expecting it to work, your schedules will move to that timezone after upgrading. Fixes docker#64.
Setup wizard blank on MariaDB
A fresh install using the shipped docker-compose.mysql.yml could not get past the database step, because that file sets DB_CONNECTION=mariadb and the wizard had no form for it. Fixes docker#79.
Gotenberg on a private network
The SSRF guard added in 2.4.0 rejected http://pdf:3000 — its own shipped default — which made the standard sidecar setup impossible to configure. Name the host you trust to permit it, and only it:
GOTENBERG_ALLOWED_PRIVATE_HOST=http://pdf:3000
Every other private address stays blocked, so the setting cannot be repointed at an internal service. Fixes #688.
PHP 8.5 compatibility
PDO::MYSQL_ATTR_SSL_CA is deprecated in PHP 8.5; the correct constant is now resolved per version. No change on PHP 8.4.
Docker: invoiceshelf/invoiceshelf:2.4.2 (also :latest, :2, :2.4).