InvoicePlane is a free and open source invoicing application. Its source code can be found on this Github repository. This guide will show you how to install InvoicePlane on a fresh Fedora 28 Vultr instance.
Requirements
- Nginx
- MySQL version 5.5 or greater, or the equivalent version of MariaDB. This guide will use MariaDB.
- PHP version 7.0 or greater
- The following PHP extensions must be installed and activated:
php-gd
php-hash
php-json
php-mbstring
php-mcrypt
php-mysqli
php-openssl
php-recode
php-xmlrpc
php-zlib
Before you begin
Check the Fedora version.
cat /etc/fedora-release
# Fedora release 28 (Twenty Eight)
Create a new non-root user account with sudo
access and switch to it.
useradd -c "John Doe" johndoe && passwd johndoe
usermod -aG wheel johndoe
su - johndoe
NOTE: Replace johndoe
with your username.
Ensure that your system is up to date.
sudo dnf check-upgrade || sudo dnf upgrade -y
Set up the timezone.
timedatectl list-timezones
sudo timedatectl set-timezone 'Region/City'
Install the unzip
package.
sudo dnf install -y unzip
For simplicity, disable SELinux and Firewall.
sudo setenforce 0
sudo systemctl stop firewalld
sudo systemctl disable firewalld
Install PHP and required PHP extensions
Install PHP and necessary PHP extensions.
sudo dnf install -y php php-cli php-fpm php-gd php-json php-mbstring php-mcrypt php-mysqlnd php-xmlrpc php-common php-recode
Check the version.
php -v
Enable and start php-fpm.service
.
sudo systemctl start php-fpm.service
sudo systemctl enable php-fpm.service
Install MariaDB
Install MariaDB.
sudo dnf install -y mariadb-server
Check the MariaDB version.
mysql --version
Start and enable MariaDB.
sudo systemctl start mariadb.service
sudo systemctl enable mariadb.service
Run mysql_secure installation
script to improve MariaDB security and to set the root
user password.
sudo mysql_secure_installation
Connect to MariaDB shell as the root
user.
mysql -u root -p
# Enter password:
Create an empty MariaDB database and a user for the InvoicePlane application, and remember the credentials.
CREATE DATABASE dbname;
GRANT ALL ON dbname.* TO 'username' IDENTIFIED BY 'password';
FLUSH PRIVILEGES;
EXIT
Install Nginx
Install Nginx
sudo dnf install -y nginx
Check Nginx version.
sudo nginx -v
Start and enable Nginx.
sudo systemctl start nginx.service
sudo systemctl enable nginx.service
Configure Nginx for InvoicePlane. Run sudo vim /etc/nginx/conf.d/invoiceplane.conf
and populate the file with the following configuration.
server {
listen 80;
listen [::]:80;
server_name example.com;
root /var/www/invoiceplane;
index index.php index.html;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_index index.php;
try_files $uri =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_pass unix:/run/php-fpm/www.sock;
}
}
Test the Nginx configuration.
sudo nginx -t
Reload Nginx.
sudo systemctl reload nginx.service
Install InvoicePlane
Download the latest stable version of InvoicePlane and extract the archive.
sudo mkdir -p /var/www
cd /var/www/
sudo curl -O -J -L https://invoiceplane.com/download/v1.5.9
sudo unzip v1.5.9.zip
sudo rm v1.5.9.zip
sudo mv ip invoiceplane
Navigate to /var/www/invoiceplane
folder.
cd /var/www/invoiceplane
Make a copy of the ipconfig.php.example
file and rename the copy to ipconfig.php
.
sudo cp ipconfig.php.example ipconfig.php
Open the ipconfig.php
file and add your URL to it.
sudo vim ipconfig.php
# Something like this
IP_URL=http://example.com
NOTE: Don't forget to replace http://example.com
URL with your own URL.
Change ownership of the /var/www/invoiceplane
directory to nginx
.
sudo chown -R nginx:nginx /var/www/invoiceplane
Run sudo vim /etc/php-fpm.d/www.conf
and set the user and group to nginx
. Initially, it will be set to apache
.
sudo vim /etc/php-fpm.d/www.conf
# user = nginx
# group = nginx
Run sudo vim /etc/php.ini
and set date.timezone
.
date.timezone = Region/City
Restart php-fpm.service
.
sudo systemctl restart php-fpm.service
Run the InvoicePlane installer from your web browser and follow the instructions.
http://your-domain.com/index.php/setup
Once the installation has finished, you may log into InvoicePlane using the email address and password you have chosen during the installation.
If you want to secure your installation, you may disable the setup. To do so, replace the line DISABLE_SETUP=false
with DISABLE_SETUP=true
in your ipconfig.php
file.