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.
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).
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
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;
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.
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
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.
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.
Ahora puedes ver que se ha creado el esquema de base de datos para SolidInvouice, haz clic en Siguiente para continuar.
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.
Una vez completada la instalación, verás el mensaje «¡Has instalado correctamente SolidInvoice!» e instrucciones adicionales para crear una tarea cron.
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.
Ahora se te pedirá que crees el nombre de tu empresa y la moneda por defecto. Haz clic en Crear para confirmar.
Si todo va bien, deberías ver el panel de SolidInvoice como el siguiente.
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.