All apps · 0 apps
InvoiceShelf
OfficialDocker app from samuel3889's Repository
Overview
Readme
View on GitHubIntroduction
InvoiceShelf is an open-source web app that helps you track expenses, record payments, and create professional invoices and estimates. It is self-hosted, multi-tenant, and built for individuals and small businesses that want to keep their books on their own infrastructure.
The web application is built with Laravel and Vue 3.
To get started using Docker Compose, follow the Installation guide.
Table of Contents
Documentation
System Requirements
- PHP 8.4+ is required (since v2.2.0, when InvoiceShelf moved to Laravel 13).
- Database: MySQL, MariaDB, PostgreSQL, or SQLite.
- Before updating from inside the app, verify your server meets the target version's PHP and extension requirements.
- The in-app updater verifies requirements and refuses to proceed if they are not met.
Download
Discord
Join the discussion on the InvoiceShelf Discord: Invite Link
Roadmap
Rough roadmap of things to come, not in any specific order:
- Automatic Update
- Email Configuration
- Installation Wizard
- Address Customisation & Default Notes
- Edit Email before Sending Invoice
- Available as a Docker image
- Performance Improvements
- Customer View Page
- Custom Fields on Invoices & Estimates
- Multiple Companies
- Recurring Invoices
- Customer Portal
- Decoupled system settings from company settings (v3.0)
- Proper multi-tenancy system (v3.0)
- Company member invitations with custom roles (v3.0)
- Dark mode (v3.0)
- Full TypeScript refactor of the frontend (v3.0)
- Improved backend architecture (v3.0)
- Security hardening (v3.0)
- Reworked installation wizard (v3.0)
- Module Directory (v3.0)
- Rewritten Payments module (v3.0)
- Accept Payments (Stripe integration)
- Improved template system for invoices and estimates
Translate
Help us translate InvoiceShelf into your language: https://crowdin.com/project/invoiceshelf
Star History
License
InvoiceShelf is released under the GNU Affero General Public License v3.0. See LICENSE for the full text.
Install InvoiceShelf on Unraid in a few clicks.
Find InvoiceShelf in Community Apps on your Unraid server, review the template, and click Install. Unraid handles the Docker app or plugin setup from the published template.
Requirements
Categories
Download Statistics
Total Downloads Over Time
Related apps
Explore more like this
Explore allDetails
invoiceshelf/invoiceshelf:latestRuntime arguments
- Web UI
http://[IP]:[PORT:8080]/- Network
bridge- Shell
sh- Privileged
- false
- Extra Params
-v invoiceshelf_storage:/var/www/html/storage/ -v invoiceshelf_modules:/var/www/html/Modules/
Template configuration
Host port for the InvoiceShelf web UI. If you're routing to this container by name through a reverse proxy on a custom network, you can leave this or remove it.
- Target
- 8080
- Default
- 8080
- Value
- 8090
Application name
- Default
- InvoiceShelf
- Value
- InvoiceShelf
Primary public URL used for generated links (emails, PDFs). Use your external https URL if you access from outside; local network access still works independently as long as SANCTUM_STATEFUL_DOMAINS below includes it too.
- Default
- https://YOUR-DOMAIN.COM
- Value
- https://YOUR-DOMAIN.COM
Leave BLANK if you access InvoiceShelf from more than one hostname/IP (e.g. local IP + external domain) - a blank value lets the session cookie scope itself to whichever host was used. Only set this to a single domain if you exclusively access via that one domain.
Comma-separated list of every host:port you'll load the app from - e.g. your LAN IP:port AND your external reverse-proxy domain:port. Include the port whenever it isn't the default 80/443.
- Default
- SERVER-IP:8090,YOUR-DOMAIN.COM
- Value
- SERVER-IP:8080,YOUR-DOMAIN.COM
Required for correct HTTPS/host detection behind a reverse proxy. Set to * to trust all proxies, or restrict to your reverse proxy's container/LAN IP for tighter security.
- Default
- *
- Value
- *
Hostname/container name or IP of your existing PostgreSQL 16 server. If it's on the serverproxy network, its container name works; otherwise use the Unraid server IP.
- Default
- CHANGE_ME
PostgreSQL port
- Default
- 5432
- Value
- 5432
Database name (must already exist on the external Postgres server)
- Default
- invoiceshelf
- Value
- invoiceshelf
Database user (must already exist and own the database)
- Default
- invoiceshelf
- Value
- postgres
Database user password
- Default
- CHANGE_ME
- Value
- postgres
Application environment
- Default
- production
- Value
- production
Enable debug mode
- Default
- false
- Value
- false
Database driver
- Default
- pgsql
- Value
- pgsql
Optional: path to a Docker secret file containing the DB password, instead of DB_PASSWORD
Cache driver
- Default
- file
- Value
- file
Session driver
- Default
- file
- Value
- file
Session lifetime in minutes
- Default
- 240
- Value
- 240
Run startup automation on container boot
- Default
- true
- Value
- true
Auto-run DB migrations on boot (set true for first run against a fresh DB, then false)
- Default
- false
- Value
- false
Auto-run Laravel optimize on boot
- Default
- false
- Value
- false
Enable PHP OPcache
- Default
- 1
- Value
- 1