Cómo instalar SolidInvoice en Ubuntu 22.04

SolidInvoice es una solución de facturación gratuita, sencilla y elegante basada en PHP. Está diseñada para que las pequeñas empresas gestionen sus operaciones diarias de facturación. SolidInvoice proporciona una API RESTful para la integración y ofrece varios canales de notificación, como mensajes de texto, correos electrónicos o HipChat.

Esta guía te mostrará cómo instalar SolidInvoice en un servidor Ubuntu 22.04. Configurarás SolidInvoice con la pila LAMP y asegurarás la instalación con Certbot y letsencrypt.

Requisitos previos

Antes de empezar, asegúrate de que tienes

  • Un servidor Ubuntu 22.04.
  • Un usuario no root con privilegios sudo.
  • Un nombre de dominio apuntando a una dirección IP del servidor.

Instalación de dependencias

SolidInvoice es una aplicación de facturación de código abierto escrita en PHP y MySQL. Para instalarla, debes instalar LAMP Stack en tu sistema Ubuntu. En este primer paso, instalarás LAMP Stack desde el repositorio por defecto de Ubuntu.

Actualiza el índice de paquetes de Ubuntu con el siguiente comando.

sudo apt update

Ahora instala las dependencias de LAMP Stack (Linux, Apache, MySQL/MariaDB y PHP) utilizando el siguiente comando. En este ejemplo, utilizarás PHP 8.x por defecto para la instalación de SolidInvoice.

sudo apt install apache2 mariadb-server mariadb-client php php-curl php-common php-mbstring php-json php-mysql php-opcache php-bcmath php-intl php-gd php-xml php-soap php-zip php-apcu

Escribe Y para confirmar la instalación.

instalar deps

Una vez finalizada la instalación, ejecuta el siguiente comando para comprobar el estado de los servicios Apache y MariaDB y asegurarte de que ambos servicios se están ejecutando.

sudo systemctl status apache2
sudo systemctl status mysql

Si Apache o MariaDB se están ejecutando, verás una salida active(running).

comprobar apache

Por último, comprueba la versión de PHP con el siguiente comando. Verás que PHP 8.x está instalado en tu sistema Ubuntu.

php -v

comprobar php

Configurar el servidor MariaDB

Después de instalar la pila LAMP, tienes que configurar la instalación de tu servidor MariaDB. En primer lugar, asegurarás el servidor MariaDB y, a continuación, crearás una nueva base de datos y un nuevo usuario que SolidInvoice utilizará.

Para asegurar la instalación del servidor MariaDB, introduce lo siguiente:

sudo mariadb-secure-installation

En el proceso, introduce Y para confirmar los cambios en MariaDB, o N para rechazarlos. A continuación se indican las configuraciones del servidor MariaDB que se te pedirán:

  • La instalación por defecto de MariaDB viene sin contraseña, pulsa ENTER cuando se te pida la contraseña.
  • Ahora introduce Y para configurar la contraseña raíz de MariaDB. A continuación, escribe la nueva contraseña para MariaDB y repite la contraseña.
  • Introduce Y para eliminar el usuario anónimo de tu instalación de MariaDB.
  • Vuelve a introducir Y cuando se te pida para desactivar el inicio de sesión remoto para el usuario raíz de MariaDB.
  • Introduce Y para eliminar la prueba de base de datos por defecto de tu MariaDB.
  • Por último, introduce Y para recargar los privilegios de las tablas y aplicar los nuevos cambios.

Ahora que has asegurado MariaDB, introduce lo siguiente para iniciar sesión en MariaDB como usuario raíz por defecto. Introduce tu contraseña de root de MariaDB cuando te lo pida.

sudo mariadb -u root -p

Una vez conectado, ejecuta las siguientes consultas para crear una nueva base de datos solidinvoicedb, un usuario solidinvoice, con la contraseña p4ssword. Asegúrate de cambiar los detalles con tu información, estos detalles de la base de datos serán utilizados por SolidInvoice.

CREATE DATABASE solidinvoicedb;
CREATE USER solidinvoice@localhost IDENTIFIED BY 'p4ssword';
GRANT ALL PRIVILEGES ON solidinvoicedb.* TO solidinvoice@localhost;
FLUSH PRIVILEGES;

crear base de datos y usuario

Ahora ejecuta la siguiente consulta para comprobar los privilegios del usuario solidinvoice. Asegúrate de que el usuario solidinvoice puede acceder a la base de datos solidinvoicedb.

SHOW GRANTS FOR solidinvoice@localhost;

Por último, escribe quit para salir del servidor MariaDB.

comprobar db

Configurar PHP

Con el servidor MariaDB asegurado y configurado, vas a configurar tu instalación de PHP. En este caso, necesitas modificar el archivo de configuración por defecto de PHP php.ini.

Abre la configuración por defecto de PHP /etc/php/8.1/apache2/php.ini utilizando el editor nano.

sudo nano /etc/php/8.1/apache2/php.ini

Cambia la configuración por defecto de PHP por la siguiente, y asegúrate de ajustar el memory_limit y date.timezone con el entorno de tu servidor.

date.timezone = Europe/Amsterdam
memory_limit=512M
upload_max_filesize=64M
post_max_size=120M
max_execution_time=120

Guarda el archivo y sal.

Ahora reinicia el servicio Apache para aplicar tu modificación a PHP con el siguiente comando.

sudo systemctl restart apache2

Descarga de SolidInvoice

Ahora que ya tienes MariaDB y PHP configurados, puedes descargar el código fuente de SolidInvoice y configurar la instalación con los permisos y la propiedad adecuados.

Ve al directorio /var/www y descarga el código fuente de SolidInvoice utilizando wget. Consulta la página de versiones de SolidInvoice para obtener la última versión.

cd /var/www/
wget https://github.com/SolidInvoice/SolidInvoice/releases/download/2.2.5/SolidInvoice-2.2.5.zip

Extrae el código fuente de SolidInvoice al directorio solidinvoice y cambia la propiedad al usuario www-data. Así, el directorio DocumentRoot o Web-root para la instalación de SolidInvoice será /var/www/solidinvoice.

unzip SolidInvoice-2.2.5.zip -d solidinvoice
sudo chown -R www-data:www-data /var/www/solidinvoice

Ahora ejecuta el siguiente comando para asegurarte de que el usuario www-data puede escribir en algunos de los directorios y archivos de SolidInvoice.

sudo chmod u+rw /var/www/solidinvoice/app/cache
sudo chmod u+rw /var/www/solidinvoice/app/logs
sudo chmod u+rw /var/www/solidinvoice/var/cache
sudo chmod u+rw /var/www/solidinvoice/var/logs
sudo chmod u+rw /var/www/solidinvoice/web/upload
sudo chmod u+rw /var/www/solidinvoice/app/config/parameters.yml

Configurar el host virtual Apache

Después de haber configurado el directorio DocumentRoot para SolidInvoice, necesitas crear un nuevo host virtual Apache que se utilizará para ejecutar la instalación. Para ello, asegúrate de haber preparado tu nombre de dominio para SolidInvoice.

En primer lugar, ejecuta el siguiente comando para habilitar el módulo de reescritura en Apache.

sudo a2enmod rewrite

Crea una nueva configuración de host virtual de Apache /etc/apache2/sites-available/solidinvoice.conf utilizando el comando del editor nano que aparece a continuación.

sudo nano /etc/apache2/sites-available/solidinvoice.conf

Introduce la siguiente configuración y asegúrate de cambiar la opción ServerName por tu dominio de destino.

<VirtualHost *:80>
 ServerName invoice.hwdomain.io
 ServerAlias www.invoice.hwdomain.io
DocumentRoot /var/www/solidinvoice/public
<Directory //var/www/solidinvoice/public>
# enable the .htaccess rewrites
AllowOverride All
Order allow,deny
Allow from All
</Directory>

ErrorLog /var/log/apache2/solidinvoice.error.log
CustomLog /var/log/apache2/solidinvoice.access.log combined
</VirtualHost>

Guarda el archivo y sal del editor.

Ahora introduce el siguiente comando para activar el archivo de host virtual solidinvoice.conf y comprueba tu sintaxis de Apache. Si tu sintaxis es correcta, verás una salida ‘Sintaxis OK‘.

sudo a2ensite solidinvoice.conf
sudo apachectl configtest

Por último, introduce el siguiente comando para reiniciar Apache y aplicar el nuevo archivo host virtual solidinvoice.conf. Una vez ejecutado, tu SolidInvoice debería estar funcionando.

sudo systemctl restart apache2

configurar apache

Asegurar SolidInvoice con HTTPS

En este ejemplo, asegurarás SolidInvoice con certificados SSl/TLS mediante Certbot y letsencrypt. Así que ahora instalarás Certbot y generarás certificados SSL/TLS para tu nombre de dominio SolidInvoice.

En primer lugar, instala el plugin Certbot y Certbot Apache con el siguiente comando. Introduce Y para confirmar la instalación

sudo apt install certbot python3-certbot-apache

Una vez completada la instalación, genera certificados SSL/TLS utilizando el siguiente comando certbot. Asegúrate de cambiar la información del nombre de dominio y la dirección de correo electrónico con tus datos.

sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d hwdomain.io

Una vez finalizado el proceso, tus certificados SSL/TLS deberían estar disponibles en el directorio /etc/letsencrypt/live/domain.com. Además, tu instalación de SolidInvoice debería estar protegida con HTTPS automáticamente.

Instalación de SolidInvoice

Abre tu navegador web y visita tu nombre de dominio, por ejemplo https://invoice.hwdomain.io/. En la Comprobación de requisitos del sistema, asegúrate de que todo está correcto y, a continuación, haz clic en Siguiente para confirmar.

requisitos

Selecciona el controlador de base de datos para MySQL e introduce los detalles de tu base de datos MariaDB y el usuario para SolidInvoice. Una vez hecho esto, vuelve a hacer clic en Siguiente.

configuración db

Ahora puedes ver que se ha creado el esquema de base de datos para SolidInvouice, haz clic en Siguiente para continuar.

migraciones db

Para la Configuración del sistema, selecciona la configuración regional predeterminada en inglés e introduce los detalles de tu usuario administrador, correo electrónico y contraseña. A continuación, vuelve a hacer clic en Siguiente para confirmar.

configuración administrativa

Una vez completada la instalación, verás el mensaje «¡Has instalado correctamente SolidInvoice!» e instrucciones adicionales para crear una tarea cron.

instalación finalizada

Vuelve al terminal del servidor y crea una nueva tarea cron para el usuario www-data con el siguiente comando.

sudo crontab -u www-data -e

Pega el script crontab de la página, luego guarda y cierra el archivo.

* * * * * php /var/www/solidinvoice/bin/console cron:run -e prod -n

Vuelve a tu navegador web y haz clic en Iniciar sesión ahora.

inicio de sesión

Ahora se te pedirá que crees el nombre de tu empresa y la moneda por defecto. Haz clic en Crear para confirmar.

crear orgz

Si todo va bien, deberías ver el panel de SolidInvoice como el siguiente.

salpicadero

Conclusión

¡Enhorabuena! Has instalado SolidInvoice en el servidor Ubuntu 22.04. Tienes SolidInvoice funcionando con la pila LAMP (Apache, MySQL/MariaDB y PHP) en Ubuntu y has asegurado tu instalación con HTTPS mediante Letsencrypt. Ahora puedes añadir nuevos componentes, como el servidor SMTP, a SolidInvoice y utilizarlo.

También te podría gustar...