InvoicePlane es un sistema web autohospedado de software libre escrito en el lenguaje de programación PHP y requiere de una base de datos SQL. La aplicación proporciona una gestión similar a un CRM para tus clientes. Puedes introducir detalles de contacto, notas o agregar campos personalizados.
Es una aplicación bastante sólida para administrar tu círculo de facturación completo como cotizaciones, facturas y pagos. Es bastante personalizable para adaptarlo a las necesidades al estar desarrollado en PHP.
Puedes utilizar formatos de cantidad, plantillas de correo electrónico y PDF configurándolo desde el propio panel web. Adicionalmente acepta pagos en línea utilizando PayPal para pagar las facturas.
Aquí te dejamos algunos enlaces sobre Invoice Plane:
Prerrequisitos
- Un servidor Ubuntu 20.04 LTS con usuario root o con permisos para poder realizar sudo su.
- Un registro DNS tipo A con la dirección IP pública del servidor para adquirir un certificado.
Instalación
En este artículo te explicamos cómo instalar InvoicePlane, pero previamente instalando NGINX con PHP, MariaDB y adquiriendo un certificado Let's Encrypt con Certbot. Accede al servidor con un cliente SSH y sigue los siguientes pasos.
Primero, actualiza el repositorio e instala las actualizaciones:
# apt update && apt upgrade
Luego, instala NGINX, MySQL, PHP (algunos paquetes son opcionales) y Certbot:
# apt install nginx mariadb-server php-cli php-fpm php-common php-curl php-dompdf php-gd php-zip php-apcu php-yaml php-xdebug php-mbstring php-gd php-xml php-json php-mysql certbot python3-certbot-nginx
Puedes comprobar la instalación de PHP verificando la versión:
# php -v
Después, accede al directorio temporal y descarga InvoicePlane de la web oficial (puedes verificar la última versión en https://www.invoiceplane.org/downloads):
# cd /tmp && wget https://www.invoiceplane.org/download/v1.5.11
Descomprime el fichero descargado:
# apt install -y unzip && unzip v1.5.11 -d /var/www/html/
Crea un usuario y una base de datos para InvoicePlane siguiendo los siguientes pasos. Primero inicia y activa MariaDB:
# systemctl start mariadb && systemctl enable mariadb
Posteriormente, configura MySQL:
# mysql_secure_installation
Y accede a MariaDB para crear el usuario y la base de datos:
# mysql -u root
Crea la base de datos, usuario y da permisos en ella:
MariaDB .. > create database invoicedb;
MariaDB .. > create user 'invoiceuser'@'localhost' identified by 'password';
MariaDB .. > grant all privileges on invoicedb.* to 'invoiceuser'@'localhost';
MariaDB .. > flush privileges;
MariaDB .. > quit;
Una vez finalizado, copia el fichero de ejemplo de configuración para la configuración de InvoicePlane:
# cp /var/www/html/ipconfig.php.example /var/www/html/ipconfig.php
Edítalo y añade el registro o dominio que utilizaras como URL:
# nano /var/www/html/ipconfig.php
Debes editar la línea IP_URL para añadirlo:
IP_URL=https://invoiceplane.ejemplo.com
Cambia la propiedad y el grupo recursivamente del todo el directorio web:
# chown -R www-data:www-data /var/www/html/
También modifica los permisos:
# chmod -R 755 /var/www/html/
Edita el fichero del site:
# nano /etc/nginx/sites-available/default
Cambia el server_name del fichero por el registro del subdominio o dominio:
server_name invoiceplane.ejemplo.com;
Añade en la línea index el index.php:
index index.php;
Modifica la línea try_files por:
try_files $uri $uri/ /index.php?$args;
También descomenta las líneas para el uso de PHP y deniega .htaccess (no utilizado por NGINX). Debe quedar de esta forma:
# pass PHP scripts to FastCGI server
location ~ \.php$ {
# include snippets/fastcgi-php.conf;
include fastcgi.conf;
# fastcgi_index index.php;
# With php-fpm (or other unix sockets):
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
# With php-cgi (or other tcp sockets):
# fastcgi_pass 127.0.0.1:9000;
fastcgi_param HTTPS on;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
#
location ~ /\.ht {
deny all;
}
Guarda y sal del editor de fichero. Posteriormente, verifica la configuración modificada con:
# nginx -t
Si no aparecen errores, reinicia el servicio web para recargar los cambios:
# systemctl restart nginx.service
Por último, certifica con Certbot con redirect:
# certbot --nginx --redirect -d invoiceplane.ejemplo.com
Con esta última acción, podrás acceder directamente para utilizar el Wizard de InvoicePlane para finalizar la instalación desde un navegador mediante la URL asignada:
Haz clic en Setup y selecciona el idioma deseado para InvoicePlane:
Haz clic en continuar y verifica que tengas todos los requisitos:
Si cumples los requisitos podrás continuar con la instalación y indicar la base de datos anteriormente creada:
Prueba la conexión:
Haz clic en los botones de continuar para crear las tablas y registros. Posteriormente, una vez finalizado con la base de datos deberás crear un usuario y añadir la información para la facturación:
Una vez completado, aparecerá el siguiente mensaje:
Como indica la advertencia, por precaución desactiva la configuración ejecutando el siguiente comando:
# sed 's/DISABLE_SETUP=false/DISABLE_SETUP=true/g' /var/www/html/ipconfig.php
A continuación haz clic en el botón de iniciar sesión, introduce el correo y la contraseña creada para acceder al Dashboard de InvoicePlane:
¡Felicidades! Has completado la instalación y configuración del sistema de facturación Invoice Plane en un servidor Ubuntu 20.04 LTS.
Ahora puedes implementar fácilmente Invoice Plane para un entorno en producción para tu facturación.