Introducción
Invoice Ninja es una solución gratuita de código abierto para facturación desde un servidor web. Es ideal para ecommerce y realiza facturación, cotizaciones, gastos, seguimiento del tiempo y más funcionalidades que serán de utilidad a tu proyecto.
Está construida con Laravel y Flutter y tiene aplicaciones cliente para Android, iOS, macOS, entre otros. Es bastante reconocida por trabajadores autónomos, pequeñas empresas y startups.
Puedes descubrir más detalles sobre Invoice Ninja en la página oficial de la aplicación.
En este tutorial te ayudamos a instalarla de manera fácil, ¡sigue los pasos!
Para instalar Invoice Ninja usa la imagen preinstalada que encontrarás en tu panel de control de Ubuntu 20.04 LTS (64 Bits) utilizando el servicio NGINX, PHP y MariaDB.
Procedimiento de instalación
Actualiza repositorios y paquetes:
# apt update && apt upgradeInstalación de dependencias:
# apt install gcc g++ make php php-{fpm,bcmath,ctype,fileinfo,json,mbstring,pdo,tokenizer,xml,curl,zip,gmp,gd,mysqli} mariadb-server mariadb-client curl git nginx vim -yDescarga el instalador de composer:
# curl -sS https://getcomposer.org/installer -o composer-setup.phpEjecuta el instalador de composer:
# php composer-setup.php --install-dir=/usr/bin --filename=composerInicia y activa MariaDB:
# systemctl start mariadb# systemctl enable mariadbConfigura la seguridad de la base de datos:
# mysql_secure_installationComprueba el estado del servicio PHP instalado:
# systemctl status php7.4-fpm.serviceAccede a MariaDB:
# mysql -u rootCrea la base de datos, usuario y da permisos en ella:
MariaDB .. > create database ninjadb;
MariaDB .. > create user 'ninja'@'localhost' identified by 'password';
MariaDB .. > grant all privileges on ninjadb.* to 'ninja'@'localhost';
MariaDB .. > flush privileges;
MariaDB .. > quit;Crea así el directorio para certificados de NGINX:
# mkdir -p /etc/nginx/certCrea certificado auto firmado:
# openssl req -new -x509 -days 365 -nodes -out /etc/nginx/cert/ninja.crt -keyout /etc/nginx/cert/ninja.keyElimina el directorio default:
# rm /etc/nginx/sites-enabled/defaultCrea el fichero de configuración para Invoice Ninja:
# vim /etc/nginx/conf.d/invoiceninja.confInserta ahora el siguiente contenido (Modificar server_name por el correspondiente):
server {
listen 443 ssl http2 default_server;
listen [::]:443 ssl http2 default_server;
server_name invoiceninja;
# Here, enter the path to your invoiceninja directory, in the public dir.
root /usr/share/nginx/invoiceninja/public;
client_max_body_size 20M;
gzip on;
gzip_types application/javascript application/x-javascript text/javascript text/plain application/xml application/json;
gzip_proxied no-cache no-store private expired auth;
gzip_min_length 1000;
index index.php index.html index.htm;
# Enter the path to your existing ssl certificate file, and certificate private key file
# If you don’t have one yet, you can configure one with openssl in the next step.
ssl_certificate "/etc/nginx/cert/ninja.crt";
ssl_certificate_key "/etc/nginx/cert/ninja.key";
ssl_session_cache shared:SSL:1m;
ssl_session_timeout 10m;
ssl_ciphers 'AES128+EECDH:AES128+EDH:!aNULL';
ssl_prefer_server_ciphers on;
ssl_protocols TLSv1.2 TLSv1.3;
charset utf-8;
# Load configuration files for the default server block.
include /etc/nginx/default.d/*.conf;
location / {
try_files $uri $uri/ /index.php?$query_string;
}
if (!-e $request_filename) {
rewrite ^(.+)$ /index.php?q= last;
}
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
# Here we pass to php-fpm listen socket. For configuration see /etc/php-fpm.d/*.conf.
fastcgi_pass unix:/run/php/php7.4-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;
}
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/ininja.access.log;
error_log /var/log/nginx/ininja.error.log;
sendfile off;
}
server {
listen 80;
server_name invoiceninja;
add_header Strict-Transport-Security max-age=2592000;
rewrite ^ https://$server_name$request_uri? permanent;
}
Detén ahora Apache2:
# systemctl stop apache2Desactiva Apache2:
# systemctl disable apache2Inicia NGINX:
# systemctl start nginxActiva NGINX:
# systemctl enable nginxAccede al directorio configurado de NGINX:
# cd /usr/share/nginxCrea el directorio y accede a él:
# mkdir invoiceninja && cd invoiceninjaDescarga así último paquete (Revisarlo en https://github.com/invoiceninja/invoiceninja/releases):
# wget https://github.com/invoiceninja/invoiceninja/releases/download/v5.1.42-release/invoiceninja.zipInstala unzip:
# apt install unzipDescomprime ahora el fichero mediante unzip:
# unzip invoiceninja.zipRealiza la instalación mediante composer:
# php /usr/bin/composer install --no-devGenera esta llave:
# php artisan key:generate# php artisan optimizeCambia la propiedad y el grupo del directorio:
# chown -R www-data:www-data /usr/share/nginx/invoiceninjaModifica ahora los permisos del directorio:
# chmod -R g+s /usr/share/nginx/invoiceninjaAbre crontab del usuario www-data:
# sudo -u www-data crontab -eInserta en estos momentos el siguiente trabajo programado:
* * * * * php /usr/share/nginx/invoiceninja/artisan schedule:run >> /dev/null 2>&1Instala dependencias opcionales:
# apt install gconf-service libasound2 libatk1.0-0 libc6 libcairo2 libcups2 libdbus-1-3 libexpat1 libfontconfig1 libgcc1 libgconf-2-4 libgdk-pixbuf2.0-0 libglib2.0-0 libgtk-3-0 libnspr4 libpango-1.0-0 libpangocairo-1.0-0 libstdc++6 libx11-6 libx11-xcb1 libxcb1 libxcomposite1 libxcursor1 libxdamage1 libxext6 libxfixes3 libxi6 libxrandr2 libxrender1 libxss1 libxtst6 ca-certificates fonts-liberation libappindicator1 libnss3 lsb-release xdg-utils wgetY finaliza la configuración accediendo desde el navegador para acabar la instalación:
Añade la configuración seleccionada para la base de datos:
Completa los datos, acepta los términos de uso e inicia sesión:
¡Perfecto! Has completado el procedimiento, ya puedes empezar a utilizar Invoice Ninja:
Recuerda que puedes utilizar la certificación de Let's Encrypt en lugar de un certificado auto firmado, puedes seguir el siguiente tutorial para ello: Certificado TLS/SSL de Let´s Encrypt: te enseñamos cómo configurarlo.
Esperamos haberte ayudado con este artículo. Si te quedan dudas sobre esta u otra cuestión relacionada con tus servidores en Clouding, escríbenos a soporte@clouding.io. ¡Estamos para ayudarte! 😉