Invoice Ninja is a popular open-source invoicing application that allows users to quickly and easily create professional invoices, track expenses, and manage clients. In this tutorial, we will go through the steps required to install Invoice Ninja on Void Linux.
Before we begin, ensure that you have the following:
Note: This tutorial assumes that you have a basic understanding of Linux terminal commands and have administrative privileges on your server.
Start by downloading the latest version of Invoice Ninja using the following command:
$ wget https://download.invoiceninja.com/ninja-v5.3.10.zip
Note: Make sure to verify the downloaded file’s checksum to verify its authenticity.
Once the download completes, extract the file using the following command:
$ unzip ninja-v5.3.10.zip
This will create a directory named ninja
that contains Invoice Ninja’s source code.
Move the ninja
directory to your web server’s document root directory using the following command:
$ sudo mv ninja /var/www/html/
Note: Replace /var/www/html/
with your web server’s document root directory.
After moving the directory, ensure that your web server has the appropriate permissions to access the files by running the following command:
$ sudo chown -R www-data:www-data /var/www/html/ninja
Note: Replace www-data
with your web server user.
To run Invoice Ninja, we need to install its dependencies. Run the following command to install the dependencies:
$ sudo xbps-install -S mariadb mariadb-server mariadb-libs php php-fpm php-pdo_mysql php-dom php-mbstring php-zip php-gd php-curl php-opcache
Note: This command will install MariaDB as well as the required PHP extensions.
Next, we need to create a new database and user for Invoice Ninja. Run the following commands to log in to the MariaDB shell and create a new database and user:
$ sudo mysql -u root
MariaDB [(none)]> CREATE DATABASE ninja;
MariaDB [(none)]> GRANT ALL PRIVILEGES ON ninja.* TO 'ninjauser'@'localhost' IDENTIFIED BY 'password';
MariaDB [(none)]> FLUSH PRIVILEGES;
MariaDB [(none)]> exit;
Note: Replace ninjauser
and password
with your desired username and password.
Now, we need to configure PHP to work with Invoice Ninja. Open the PHP FPM configuration file /etc/php-fpm.d/www.conf
in your preferred editor and make the following changes:
listen = /run/php-fpm.sock
listen.owner = www-data
listen.group = www-data
user = www-data
group = www-data
Save the changes and restart the PHP FPM service:
$ sudo service php-fpm restart
We need to configure our web server to serve Invoice Ninja. Below are the steps to configure Nginx:
Create a new Nginx server block:
$ sudo nano /etc/nginx/sites-available/ninja.conf
Add the following configuration to the file:
server {
listen 80;
server_name example.com; # Replace with your domain
root /var/www/html/ninja/public;
index index.php;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
location ~ \.php$ {
fastcgi_pass unix:/run/php-fpm.sock;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
location ~ /\.ht {
deny all;
}
}
Save the file and create a symbolic link to enable the server block:
$ sudo ln -s /etc/nginx/sites-available/ninja.conf /etc/nginx/sites-enabled/
Restart the Nginx service:
$ sudo service nginx restart
Note: If you use Apache, the configuration steps will vary; consult your web server’s documentation.
Visit http://example.com/setup
in your web browser (replace example.com
with your domain) to complete the Invoice Ninja installation. Follow the on-screen instructions, and input your database credentials when prompted.
After the installation, delete the setup
directory using the following command:
$ sudo rm -rf /var/www/html/ninja/public/setup
Now, you have successfully installed and configured Invoice Ninja on Void Linux. You can access it by visiting your domain in your web browser (e.g. http://example.com
).
If you want to self-host in an easy, hands free way, need an external IP address, or simply want your data in your own hands, give IPv6.rs a try!
Alternatively, for the best virtual desktop, try Shells!