How to Install Invoice Ninja on Debian 9

In this tutorial we will show you how to install Invoice Ninja on Debian 9. Invoice Ninja is an open-source software application for invoicing and billing customers. It is built using PHP, on top of the Laravel framework. Some of the features include: recurring invoices, creating tasks and projects, invoice designs, more than 40 payment options and partial payments.

This guide should work on other Linux VPS systems as well but was tested and written for Debian 9 VPS. If you want to install Invoice on CentOS 7, follow this tutorial.

Step 1: Update your Debian server:

Log in to your VPS via SSH as a sudo user:

ssh [email protected]_Addressinv

Once you are logged in, issue the following commands to make sure all installed packages are up to date:

sudo apt-get update
sudo apt-get upgrade

Step 2: Install Nginx, MariaDB and PHP 7

To install Nginx, MariaDB PHP 7 and all ty nessesary PHP modules on your Debian server run the following command:

sudo apt-get install nginx php-fpm mysql-server php-cli php-common php-curl php-gd php-mysql php-xml php-mcrypt php-mbstring

When the MariaDB installation is complete, run the following command to secure your MariaDB installation:

sudo mysql_secure_installation

Step 3: Create a MariaDB database for Invoice Ninja

Login to the MariaDB console with the root account:

mysql -u root -p

Create a MariaDB database, user and grant permissions to the user using the following command:

MariaDB [(none)]> CREATE DATABASE ninja;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON ninja.* TO 'ninja'@'localhost' IDENTIFIED BY 'strongpassword';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> \q

Do not forget to replace ‘strongpassword’ with an actual strong password.

Step 4: Download Invoice Ninja

We can either download the archive file from the download.invoiceninja.comor checkout the code from the GitHub Invoice Ninja repository. If you clone the GitHub repository you will need to use Composer to install the Invoice Ninja PHP dependencies while the archive file includes all required third party PHP packages. In this post we will install Invoice Ninja using the zip archive.

Download the latest stable version of the Invoice Ninja zip archive in the /tmp directory on your server with:

wget https://download.invoiceninja.com/ -O /tmp/invoice-ninja.zip

Once the download is completed extract the archive in the /var/www/html/ directory:

sudo unzip /tmp/invoice-ninja.zip -d /var/www/html/

Change the ownership to the www-data user with the following command:

sudo chown -R www-data: /var/www/html/ninja

Step 5: Configure Nginx to serve Invoice Ninja

Open your favorite text editor and create a new Nginx server block for the Invoice Ninja:

sudo nano /etc/nginx/sites-available/your_ninja_domain.com.conf
server {
    listen 80 default_server;
    server_name your_ninja_domain.com www.your_ninja_domain.com;

    root /var/www/html/ninja/public;

    index index.php;

    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    access_log  /var/log/nginx/your_ninja_domain.com.access.log;
    error_log   /var/log/nginx/your_ninja_domain.com.error.log;

    sendfile off;

    location ~ \.php$ {
        fastcgi_split_path_info ^(.+\.php)(/.+)$;
        fastcgi_pass unix:/var/run/php/php7.0-fpm.sock;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }

    location ~ /\.ht {
        deny all;
    }
}

Activate the server block by creating a symbolic link with the following command:

sudo ln -s /etc/nginx/sites-available/your_ninja_domain.com.conf  /etc/nginx/sites-enabled/your_ninja_domain.com.conf 

Test the Nginx configuration and if there are no errors restart the nginx service  using the following commands:

sudo nginx -t
sudo service nginx restart

Step 6: Install Invoice Ninja

Open http://your_ninja_domain.com/ in your favorite web browser and you will be redirected to the Invoice Ninja setup page.

From here you can finish the setup by entering the following information:

Application Settings

  • URL: your_ninja_domain.com
  • HTTPS: check the box if you have SSL installed
  • Debug: do not check the box

Database Connection

  • Driver: MySQL
  • Host: localhost
  • Database: ninja
  • Username: ninja
  • Password: strongpassword

Email Settings

Enter your email settings. You can use either you VPS SMTP or any supported third party SMTP provider.

User Details

Installing Invoice Ninja on Debian 9This is your Invoice Ninja administrator account. Enter your first name, last name, email address and password.
Finally select the I agree to the Terms of Service and Privacy Policy and click on the Submit button to finish the installation.

That’s it. You have successfully installed Invoice Ninja on Debian 9. For more information about how to manage your Invoice Ninja installation, please refer to the official Invoice Ninja documentation.


Install Invoice Ninja on Debian 9Of course, you don’t have to install Invoice Ninja on Debian 9, if you use one of our Managed Hosting services, in which case you can simply ask our expert system administrators to install Invoice Ninja on Debian 9 for you, using the LEMP stack or any other web hosting stack of your choice. They are available 24×7 and will take care of your request immediately.

PS. If you liked this post, on how to install Invoice Ninja on Debian 9, please share it with your friends on the social networks using the buttons below or simply leave a comment in the comments section. Thanks.