Managing invoices and payments professionally does not have to rely on paid software. Many small to medium-sized businesses now choose open-source solutions that are flexible, customizable, and can be self-hosted. One of the popular applications in this category is InvoicePlane, a lightweight yet feature-rich open-source invoicing system. This guide will walk you through a complete and structured installation on an Ubuntu server.
Introduction to InvoicePlane
InvoicePlane is an open-source application for managing invoices, quotes, payments, clients, and business reports. The project is actively maintained and freely available for deployment on your own server.
Some key features offered by InvoicePlane include:
- Invoice & Quote Management: Easily create, send, and manage invoices and quotations.
- Client Management: Store customer data along with payment history.
- Payment Tracking: Supports manual payment recording or integration with various payment methods.
- Templates & Customization: Uses PDF templates to generate professional invoices.
- Multi Currency: Supports multiple currencies.
- Tax Management: Manage taxes for goods and services.
- Comprehensive Dashboard: View business overview, outstanding invoices, and statistics.
- API (optional): Integrate InvoicePlane with other applications.
- Quote → Invoice Conversion: Convert quotes into invoices in a single click.
System Requirements
Minimum Software
- Web Server: Apache (recommended)
- PHP:
- Version: PHP 7.4 – PHP 8.1
- Required extensions:
mysqligdopensslmbstringcurlzlibintlzipbcmath
- Database: MySQL 5.7+ or MariaDB 10.3+
Minimum Hardware
- RAM: 1 GB (recommended 2 GB)
- Storage: 10 GB+
This tutorial uses Ubuntu as the operating system.
Server Preparation
Update the server system first:
sudo apt update && sudo apt upgrade -yInstall Apache web server and certbot:
sudo apt install apache2 certbot python3-certbot-apache -yInstall MariaDB:
sudo apt install mariadb-server -yAdd the ondrej/php PPA repository:
sudo add-apt-repository ppa:ondrej/php -y
sudo apt upgrade -yInstall PHP 8.1 and required extensions:
sudo apt install libapache2-mod-php8.1 php8.1 php8.1-common php8.1-cli \
php8.1-curl php8.1-intl php8.1-gd php8.1-xsl php8.1-mbstring php8.1-zip \
php8.1-xml php8.1-bz2 php8.1-mysql php8.1-soap php8.1-gmp php8.1-bcmath \
php8.1-apcu php8.1-imagick php8.1-imap php8.1-xdebug unzip -yCreate Database
Log in to MariaDB:
sudo mysqlCreate the database and user:
CREATE DATABASE invoiceplane;
CREATE USER 'invoiceplane'@'localhost' IDENTIFIED BY 'secretpassword';
GRANT ALL PRIVILEGES ON invoiceplane.* TO 'invoiceplane'@'localhost';
FLUSH PRIVILEGES;
exitVirtual Host Configuration
Create an Apache virtual host configuration for invoiceplane.domain.com:
sudo nano /etc/apache2/sites-available/invoiceplane.domain.com.confInsert the following configuration:
<VirtualHost *:80>
ServerName invoiceplane.domain.com
DocumentRoot /var/www/invoiceplane.domain.com
<Directory /var/www/invoiceplane.domain.com>
Options -Indexes +FollowSymLinks +MultiViews
AllowOverride All
Require all granted
</Directory>
ErrorLog /var/log/apache2/invoiceplane.domain.com_error.log
CustomLog /var/log/apache2/invoiceplane.domain.com_access.log combined
</VirtualHost>Enable the virtual host and restart apache2:
sudo a2ensite invoiceplane.domain.com
sudo systemctl restart apache2Request an SSL certificate:
sudo certbot --non-interactive \
-m [email protected] \
--agree-tos \
--no-eff-email \
--apache -d invoiceplane.domain.com \
--redirectInstall InvoicePlane
Download InvoicePlane:
wget https://github.com/InvoicePlane/InvoicePlane/releases/download/v1.6.3/v1.6.3.zip -O InvoicePlane_v1.6.3.zipExtract the archive:
unzip InvoicePlane_v1.6.3.zipMove it to the /var/www directory:
sudo mv ip /var/www/invoiceplane.domain.comEnable the .htaccess file:
cd /var/www/invoiceplane.domain.com
sudo mv htaccess .htaccessEnable and configure ipconfig.php:
sudo cp ipconfig.php.example ipconfig.php
sudo nano ipconfig.phpAdjust the configuration:
IP_URL=https://invoiceplane.domain.com
REMOVE_INDEXPHP=trueSet directory ownership:
sudo chown -R www-data:www-data /var/www/invoiceplane.domain.comAccess https://invoiceplane.domain.com and follow the installation steps:
- Start setup by clicking
Setup. - Select language.
- Check system requirements and directory permissions.
- Enter database name, username, and password.
- Install tables.
- Configure VAT calculation.
- Create a user account.
Reopen ipconfig.php:
sudo nano ipconfig.phpDisable setup:
DISABLE_SETUP=trueThe InvoicePlane installation is now complete.
Conclusion
InvoicePlane is an ideal solution for businesses that need a self-hosted, flexible, and user-friendly invoicing system. By following this guide, you have successfully installed InvoicePlane on an Ubuntu server with a complete setup including LAMP stack, virtual host, SSL, and application deployment. Once running, you can immediately use it to manage invoices, clients, and payments professionally.




