invoiceShelf

invoiceShelf

Official

Docker app from anna's Repository

Overview

InvoiceShelf is an open-source web & mobile app that helps you track expenses, payments & create professional invoices & estimates. InvoiceShelf is a fork of Crater that focuses in stability, updates and new features. The Web Application is made using Laravel & VueJS while the Mobile Apps are built using React Native.

InvoiceShelf

Open-source invoicing for people who want to own their business data.

Download InvoiceShelf · Try the live demo · Documentation · Join Discord

[!WARNING] The default 3.x branch is an alpha preview. It is ready for testing and feedback, but not for production data. Use the supported 2.x release for a production installation.

The InvoiceShelf dashboard: what customers owe, split into overdue and due soon, and a year of sales, receipts and expenses

Run your invoicing from one place

InvoiceShelf is a self-hosted web application for creating invoices, tracking payments and expenses, and keeping customer accounts organised. It is built for freelancers and small businesses that want a focused workflow without giving up control of their data.

Want to look around before installing? The public demo includes sample data and resets automatically.

  • Create invoices and estimates, then export polished PDFs.
  • Record payments and see what each customer still owes.
  • Track expenses, taxes, and business reports.
  • Schedule recurring invoices for repeat work.
  • Give customers a portal for invoices, estimates, and payment history.
  • Manage multiple companies and invite team members with scoped roles.

Optional official modules can add specialised features without making the core application heavier.

Install InvoiceShelf

Production: InvoiceShelf 2.x

Install the current stable release from the self-hosted download page, or run the official Docker image with the :latest tag. Follow the installation guide for the complete setup and upgrade instructions.

Preview: InvoiceShelf 3.x

Use the preview only with disposable or backed-up data:

A minimal SQLite Docker setup looks like this:

git clone https://github.com/InvoiceShelf/docker.git invoiceshelf
cd invoiceshelf
cp docker-compose.sqlite.yml docker-compose.yml
# For the 3.x preview, change the image tag in docker-compose.yml to :next.
docker compose up -d

Open http://localhost:8090 and finish the setup wizard. Read the Docker guide before using InvoiceShelf on a public server.

For a traditional web-server installation, see the manual installation guide. InvoiceShelf 3.x requires PHP 8.4 and supports MySQL/MariaDB, PostgreSQL, and SQLite. Docker includes the required application runtime.

Learn and get help

Contribute

Code contributions are welcome. Start with the contribution guide and use the development environment in docker/development.

You can also help translate InvoiceShelf on Crowdin.

License

InvoiceShelf is released under the GNU Affero General Public License v3.0.

Requirements

Additional database is required, read the README for details. I reccomend setting up MariaDB in a seperate docker container!

Categories

Download Statistics

702,561
Total Downloads
57,784
This Month
32,471
Avg / Month

Total Downloads Over Time

Loading chart...

Related apps

Explore more like this

Explore all

Details

Repository
invoiceshelf/invoiceshelf:nightly
Last Updated2026-09-26
First Seen2025-02-11

Runtime arguments

Web UI
http://[IP]:[PORT:80]/
Network
bridge
Shell
sh
Privileged
false

Template configuration

Host Path for /configPathrw

Container Path: /config

Target
/config
Host Path for /confPathrw

Container Path: /config

Target
/conf
PHP_TZVariable
Default
Europe/Vienna
Value
Europe/Vienna
APP_NAMEVariable
Target
Laravel
Default
Laravel
Value
Laravel
APP_ENVVariable
Default
local
Value
local
APP_DEBUGVariable
Default
true
Value
true
DB_CONNECTIONVariable
Default
mysql
Value
mysql
DB_HOSTVariable

The database hostname.

Value
/
DB_PORTVariable

The database port.

Default
3306
Value
3306
DB_DATABASEVariable

The database name.

Default
invoiceshelf
Value
invoiceshelf
DB_USERNAMEVariable

The database username.

Default
invoiceshelf
Value
invoiceshelf
DB_PASSWORDVariable

The database user password.

Value
/
CACHE_STOREVariable
Default
FILE
Value
file
SESSION_DRIVERVariable
Default
file
Value
file
SESSION_LIFETIMEVariable
Default
120
Value
120
SESSION_ENCRYPTVariable
Default
false
Value
false
SESSION_PATHVariable
Default
/
Value
/
SESSION_DOMAINVariable

Your Unraid Server IP or domain you are hosting InvoiceShelf on.

Default
localhost
Value
localhost
ANCTUM_STATEFUL_DOMAINSVariable

Your InvoiceShelf instance WebUI URL for Laravel Sanctum authentication.

Default
localhost:90
Value
localhost:90
DB_PASSWORD_FILEVariableLeave blank if you do not wish to use a database pasword file.
Your InvoiceShelf instance WebUI Port.Porttcp
Target
80
Default
90
Value
90