Cómo instalar FossBilling con Nginx en Rocky Linux 9

FOSSBilling es un sistema de facturación gratuito y de código abierto, diseñado para facilitar el trabajo de clientes y vendedores. FOSSBilling es una bifurcación de BoxBilling. Proporciona una excelente experiencia a los clientes con una interfaz intuitiva y admite múltiples pasarelas de pago. FOSSBilling es adecuado para múltiples negocios, desde pequeñas a medianas o incluso grandes empresas. FOSSBilling puede ayudarte a automatizar la facturación, la recepción de pagos y la gestión y comunicación con los clientes.

En esta guía instalaré FOSSBilling en un servidor Rocky Linux 9. Esta guía incluye la instalación del servidor web Nginx, el servidor de bases de datos MariaDB, PHP-FPM 8.2 y la herramienta Certbot para generar certificados SSL/TSL. Al final, tendrás una solución de facturación y gestión de clientes que podrás utilizar en tu negocio diario.

Requisitos previos

Para terminar esta guía, necesitarás los siguientes requisitos:

  • Un servidor con Rocky Linux 9 instalado – Este ejemplo utiliza un Rocky Linux con nombre de host‘fossbilling-rocky‘.
  • Un usuario no root con privilegios de administrador sudo/root.
  • SELinux ejecutándose en modo permisivo.
  • Un nombre de dominio apuntando a la dirección IP de tu servidor – Este ejemplo utiliza un subdominio ‘fossbilling.hwdomain.io‘.

Si estos requisitos están listos, puedes completar la instalación de FOSSBilling.

Instalación del servidor web Nginx

FOSSBilling se puede ejecutar con los servidores web Nginx y Lighttpd. Esta guía utilizará Nginx como servidor web. En este paso instalarás Nginx desde el repositorio oficial Rocky Linux AppStream.

Para empezar, asegúrate de que el repositorio EPEL está añadido a tu sistema. O puedes instalarlo mediante el comando dnf que aparece a continuación.

sudo dnf install epel-release

A continuación, instala el servidor web Nginx mediante el siguiente comando dnf. Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar.

sudo dnf install nginx

Salida:

instalar nginx

Una vez instalado Nginx, ejecuta el siguiente comando systemctl para iniciar y habilitar el servicio Nginx. Esto iniciará y ejecutará Nginx en el puerto HTTP 80 por defecto y permitirá que Nginx se ejecute automáticamente al iniciar el sistema.

sudo systemctl start nginx
sudo systemctl enable nginx

Ahora comprueba el estado del servicio Nginx utilizando el comando systemctl que aparece a continuación. Deberías recibir una salida que indique que el servicio Nginx se está ejecutando y está habilitado.

sudo systemctl status nginx

Salida:

iniciar verificación nginx

El servicio Nginx se está ejecutando ahora, necesitarás abrir los protocolos HTTP y HTTPS en firewalld. Para ello, puedes ejecutar el siguiente comando firewall-cmd.

sudo firewall-cmd --add-service={http,https} --permanent

Una vez añadidos los protocolos HTTP y HTTPS a firewalld, ejecuta el siguiente comando para recargar firewalld y aplicar los cambios. A continuación, comprueba la lista de servicios habilitados en firewalld.

Deberías ver que los protocolos HTTP y HTTPS se han añadido a firewalld.

sudo firewall-cmd --reload
sudo firewall-cmd --list-all

Resultado:

configurar firewalld

Con esto, has instalado el servidor web Nginx y configurado firewalld para abrir los protocolos HTTP y HTTPS. En el siguiente paso, iniciarás la instalación del servidor de bases de datos MariaDB.

Instalación del servidor MariaDB

FOSSBilling utiliza MySQL/MariaDB para almacenar los datos de los usuarios. Requiere al menos el servidor MySQL 8 o MariaDB 10.x. En este paso, instalarás el servidor MariaDB desde el repositorio oficial de Rocky Linux, que es MariaDB 10.5 y es compatible con la última versión de FOSSBilling.

Instala el servidor de bases de datos MariaDB en tu sistema Rocky Linux mediante el siguiente comando dnf. Introduce y cuando se te solicite y pulsa ENTER para continuar.

sudo install mariadb-server

Salida:

instalar mariadb

Una vez instalado MariaDB, ejecuta el siguiente comando systemctl para iniciar y habilitar el servicio MariaDB.

sudo systemctl start mariadb
sudo systemctl enable mariadb

A continuación, ejecuta el siguiente comando systemctl para verificar el servicio MariaDB y asegurarte de que se está ejecutando. La salida ‘active (running)‘ confirma que el servidor MariaDB se está ejecutando. Y la salida‘loaded (../mariadb.service; enabled;)‘ confirma que el servicio MariaDB está activado y se ejecutará automáticamente al iniciar el sistema.

sudo systemctl status mariadb

Salida:

empezar a verificar mariadb

Con el servidor MariaDB en ejecución, ahora asegurarás MariaDB mediante el comando ‘mariadb-secure-installation’. Esto incluye establecer una contraseña de root para MariaDB, desactivar el inicio de sesión remoto para el usuario root de MariaDB, etc.

Ejecuta el siguiente comando ‘mariadb-secure-installation‘ para asegurar la instalación de MariaDB.

sudo mariadb-secure-installation

A continuación se te preguntarán algunas configuraciones de MariaDB:

  • ¿Cambiar la autenticación local a unix_socket? Introduce n para no.
  • ¿Configurar la contraseña raíz de MariaDB? Introduce y, luego escribe la nueva contraseña raíz de MariaDB y repite.
  • ¿Eliminar el usuario anónimo por defecto? Introduce y para confirmar.
  • ¿Desactivar el inicio de sesión remoto para el usuario root? Introduce y para confirmar.
  • ¿Eliminar la prueba de base de datos por defecto? Introduce y para confirmar.
  • ¿Recargar los privilegios de la tabla y aplicar los cambios? Introduce y para confirmar.

Con el servidor MariaDB instalado y en funcionamiento, a continuación crearás una nueva base de datos MariaDB y un nuevo usuario que se utilizarán para la instalación de FOSSBilling.

Crear base de datos y usuario

En este paso, crearás una nueva base de datos MariaDB y un nuevo usuario que se utilizarán para la instalación de FOSSBilling.

Ejecuta el siguiente comando‘mariadb‘ para acceder a MariaDB a través del usuario root. Cuando te pida una contraseña, introduce tu contraseña de root de MariaDB y pulsa ENTER.

sudo mariadb -u root -p

Después de acceder a la shell de MariaDB, ejecuta las siguientes consultas para crear una nueva base de datos y un nuevo usuario MariaDB. En este ejemplo, crearás una nueva base de datos fossbillingdb con el usuario‘fossbilling‘. Además, asegúrate de cambiar la contraseña por defecto en la siguiente consulta.

CREATE DATABASE fossbillingdb;
CREATE USER fossbilling@localhost IDENTIFIED BY 'password';
GRANT ALL ON fossbillingdb.* TO fossbilling@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;

Salida:

crear usuario de base de datos

Por último, ejecuta la siguiente consulta para verificar el usuario MariaDB fossbilling@localhost y asegurarte de que el usuario tiene privilegios para acceder a la base de datos‘fossbiilingdb‘.

La salida ‘GRANT ALL PRIVILEGES ON fossbillingdb.* to fossbilling@localhost‘ confirma que el usuario fossbilling@localhost tiene privilegios para acceder a la base de datos‘fossbillingdb‘.

Escribe quit para salir del intérprete de comandos MariaDB.

SHOW GRANTS FOR fossbilling@localhost;
quit

Salida:

verificar la base de datos de usuarios

Ahora que has creado la base de datos MariaDB y el usuario para FOSSBilling. En el siguiente paso, instalarás PHP y PHP-FPM en tu servidor Rocky Linux.

Instalación de PHP-FPM 8.2

La última versión de FOSSBilling es compatible con PHP 8.x. En este paso, instalarás PHP y PHP-FPM 8.2 a través del repositorio Remi. Así que primero, configurarás el repositorio Remi, instalarás los paquetes PHP y PHP-FPM, y luego configurarás PHP-FPM con el servidor web Nginx.

Añade el repositorio Remi de PHP mediante el siguiente comando dnf. Este comando instalará el repositorio Remi en tu sistema Rocky Linux. El archivo RPM ‘remi-release-9.rpm‘ confirma que se puede utilizar para la distribución RHEL 9. Además, introduce y cuando se te pida y pulsa ENTER para continuar.

sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-9.rpm

Salida:

instalar repo remi

A continuación, ejecuta el siguiente comando dnf para restablecer el módulo de repositorio para PHP. A continuación, comprueba la lista de módulos de repositorio de PHP que están disponibles en tu sistema.

sudo dnf module reset php
sudo dnf module list php

Cuando se te pida que configures la clave GPG para el repositorio Remi, introduce y para confirmar y pulsa INTRO.

aceptar clave gpg

Una vez ejecutado el comando ‘dnf module list php ‘, verás varias versiones de PHP proporcionadas por el repositorio oficial Rocky Linux AppStream y el repositorio Remi.

listar repos

Ejecuta el siguiente comando para habilitar el repositorio PHP para‘remi-8.2‘. Con esto, cada vez que instales paquetes PHP, estarás instalando paquetes PHP 8.2 del repositorio Remi.

Introduce y cuando se te pida y pulsa ENTER para habilitarlo.

sudo dnf module enable php:remi-8.2

Salida:

activar remi repo php 8.2

Con el repositorio PHP Remi configurado, puedes instalar paquetes PHP.

Ejecuta el siguiente comando dnf para instalar los paquetes PHP y PHP-FPM en tu servidor Rocky Linux. Introduce y cuando se te solicite y pulsa ENTER para continuar.

sudo dnf install php php-fpm php-mysql php-curl php-cli php-zip php-common php-mbstring php-xml

Salida:

instalar php

También se te pedirá que confirmes la clave GPG para el repositorio Remi. Introduce y para confirmar y pulsa ENTER.

aceptar clave gpg

Una vez instalado PHP, abre el archivo de configuración de PHP‘/etc/php.ini‘ utilizando el comando editor nano que aparece a continuación.

sudo nano /etc/php.ini

Cambia la configuración por defecto de PHP con las siguientes líneas.

upload_max_filesize = 16M 
post_max_size = 32M 
memory_limit = 256M 
max_execution_time = 600 
max_input_vars = 3000 
max_input_time = 1000

Guarda y sal del archivo‘/etc/php.ini‘ cuando hayas terminado.

Para ejecutar PHP-FPM con Nginx en distribuciones basadas en RHEL, debes asegurarte de que PHP-FPM se ejecuta con el usuario y grupo por defecto‘nginx‘.

En RHEL, el servidor web Nginx se ejecuta por defecto con el usuario‘nginx‘. Mientras que en las distribuciones basadas en Debian, tanto el servidor web Nginx como el Apache2 se ejecutan con el mismo usuario y grupo ‘www-data‘.

Abre la configuración del pool PHP-FPM‘/etc/php-fpm.d/www.conf‘ utilizando el comando del editor nano que aparece a continuación.

sudo nano /etc/php-fpm.d/www.conf

Cambia los parámetros por defecto ‘usuario‘ y‘grupo‘ a‘nginx‘.

user = nginx
group = nginx

Guarda y cierra el archivo cuando hayas terminado.

A continuación, ejecuta el siguiente comando systemctl para iniciar y habilitar el servicio PHP-FPM. Esto iniciará el servicio PHP-FPM con el archivo sock predeterminado ‘/run/php-fpm/www.sock‘ y permitirá que PHP-FPM se inicie automáticamente al arrancar el sistema.

La salida ‘Enlace simbólico creado ...’ confirma que el servicio PHP-FPM está activado.

sudo systemctl start php-fpm
sudo systemctl enable php-fpm

Salida:

start habilitar php-fpm

Ahora ejecuta el siguiente comando systemctl para verificar el estado del servicio PHP-FPM. Deberías obtener una salida que indique que el PHP-FPM está‘activo (en ejecución)‘, lo que confirma que el PHP-FPM está en ejecución. Y la salida‘Loaded …/…/; enabled;‘ confirma que el servicio PHP-FPM está activado.

sudo systemctl status php-fpm

Salida:

verificar php-fpm

Por último, ejecuta el siguiente comando php para verificar la versión de PHP instalada en tu sistema. A continuación, verifica la lista de extensiones habilitadas en tu sistema.

Recibirás una salida PHP 8.2 y la lista de extensiones PHP habilitadas, y asegúrate de que estas extensiones ‘curl’, ‘openssl’, ‘pdo_mysql’, y ‘zlib ‘ están habilitadas.

php --version
php -m

Salida:

verifica la versión de php y las extensiones

Con esto, has instalado PHP y PHP-FPM 8.2 en el sistema Rocky Linux. También has configurado PHP-FPM para que se ejecute con el servidor web Nginx. En el siguiente paso, iniciarás la instalación de FOSSBilling descargando el código fuente.

Descarga del código fuente de FOSSBilling

En este paso, descargarás el código fuente de FOSSBilling y establecerás el directorio de instalación de FOSSBilling en ‘/var/www/fossbilling’.

Antes de empezar, ejecuta el siguiente comando dnf para instalar el paquete unzip en tu sistema.

sudo dnf install unzip -y

Ahora crea un nuevo directorio‘/var/www/fossbilling‘ y mueve tu directorio de trabajo a él. A continuación, puedes descargar la última versión estable de FOSSBilling mediante el siguiente comando curl.

mkdir -p /var/www/fossbilling; cd /var/www/fossbilling
curl https://fossbilling.org/downloads/stable -L --output FOSSBilling.zip

Salida:

descargar fossbilling

Una vez descargado el código fuente de FOSSBilling, verás el archivo FOSSBilling.zip en tu directorio de trabajo. Ejecuta el siguiente comando unzip para extraer el archivo ‘FOSSBilling.zip‘. A continuación, cambia la propiedad del directorio de instalación de FOSSBilling‘/var/www/fossbilling‘ al usuario y grupo‘nginx‘.

unzip FOSSBilling.zip
sudo chown -R nginx:nginx /var/www/fossbilling

Con el código fuente de FOSSBilling descargado y el directorio de instalación configurado, a continuación configurarás el bloque de servidor Nginx que se utilizará para ejecutar la aplicación web FOSSBilling.

Configurar el bloque de servidor Nginx

En este paso, configurarás un nuevo bloque de servidor Nginx que se utilizará para ejecutar la aplicación web FOSSBilling. Antes de empezar, asegúrate de que tu nombre de dominio apunta a la dirección IP del servidor.

Crea un nuevo archivo de configuración de bloque de servidor Nginx‘/etc/nginx/conf.d/fossbilling.conf‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/nginx/conf.d/fossbilling.conf

Añade las siguientes líneas al archivo. Asegúrate de cambiar el nombre del dominio de instalación de destino‘fossbilling.hwdomain.io‘.

server {
    listen 80;

set $root_path ‘/var/www/fossbilling’;
server_name fossbilling.hwdomain.io;

index index.html index.htm index.php;
root $root_path;
try_files $uri $uri/ @rewrite;
sendfile off;

include /etc/nginx/mime.types;

# Block access to sensitive files and return 404 to make it indistinguishable from a missing file
location ~* .(ini|sh|inc|bak|twig|sql)$ {
return 404;
}

# Block access to hidden files except for .well-known
location ~ /\.(?!well-known\/) {
return 404;
}

# Disable PHP execution in /uploads
location ~* /uploads/.*\.php$ {
return 404;
}

# Deny access to /data
location ~* /data/ {
return 404;
}

location @rewrite {
rewrite ^/page/(.*)$ /index.php?_url=/custompages/$1;
rewrite ^/(.*)$ /index.php?_url=/$1;
}

location ~ \.php {
fastcgi_split_path_info ^(.+\.php)(/.+)$;

# fastcgi_pass need to be changed according your server setup:
# phpx.x is your server setup
# examples: /var/run/phpx.x-fpm.sock, /var/run/php/phpx.x-fpm.sock or /run/php/phpx.x-fpm.sock are all valid options
# Or even localhost:port (Default 9000 will work fine)
# Please check your server setup

fastcgi_pass unix:/run/php-fpm/www.sock;

fastcgi_param PATH_INFO       $fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors on;

include fastcgi_params;
}

location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
root $root_path;
expires off;
}
}

Guarda el archivo y sal de él cuando hayas terminado.

A continuación, ejecuta el siguiente comando para verificar la configuración de Nginx. A continuación, reinicia el servicio Nginx para aplicar los cambios. Si la comprobación de la configuración de Nginx se realiza correctamente, deberías obtener una salida como«comprobación correcta – sintaxis correcta«.

sudo nginx -t
sudo systemctl restart nginx

Salida:

configurar bloque servidor nginx

En este punto, tienes el FOSSBilling funcionando con el servidor web Nginx. Pero, todavía está en la conexión HTTP insegura. En el siguiente paso, asegurarás FOSSBiling con certificados SSL/TLS mediante Certbot y Letsencrypt.

Asegurar FOSSBilling con SSL/TLS Letsencrypt

Con la configuración del bloque de servidores Nginx creada, a continuación asegurarás la instalación de FOSSBilling con certificados SSL/TLS, y puedes conseguirlo utilizando la herramienta Certbot y los certificados SSL gratuitos de Letsencrypt.

Antes de empezar, asegúrate de que tu nombre de dominio apunta a la dirección IP del servidor y de que tienes una dirección de correo electrónico que utilizarás para registrarte en Letsencrypt.

Ahora ejecuta el siguiente comando dnf para instalar Certbot y el plugin Certbot Nginx. Introduce y cuando se te pida y pulsa ENTER para continuar.

sudo dnf install certbot python3-certbot-nginx

Salida:

instalar certbot

Una vez instalado Certbot, ejecuta el siguiente comando para generar certificados SSL/TLS para tu nombre de dominio. Además, asegúrate de cambiar el nombre de dominio y la dirección de correo electrónico en el siguiente comando.

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

Con este comando, se generarán los nuevos certificados SSL/TLS para tu nombre de dominio. Además, esto configurará automáticamente HTTPS en tu bloque de servidores Nginx y configurará la redirección automática de HTTP a HTTPS. Tus certificados SSL/TLS se generarán en el directorio ‘/etc/elstencrypt/live/fossbilling.hwdomain.io/‘.

Iniciar la instalación de FOSSBilling

Abre tu navegador web y visita el nombre de dominio de tu instalación de FosssBilling (es decir: https://fossbilling.hwdomain.io/).

El instalador de FOSSBilling debería comprobar y verificar los detalles de tu sistema. Asegúrate de que los requisitos obtienen el estado‘Ok’ con color verde. Haz clic en Siguiente para continuar.

comprobaciones del sistema

Ahora introduce los detalles de la base de datos MariaDB y el usuario que has creado y vuelve a hacer clic en Siguiente.

configuración de la base de datos

A continuación, introduce los datos del nuevo administrador de FOSSBilling. Introduce tu nombre de usuario, dirección de correo electrónico, contraseña y moneda por defecto. A continuación, haz clic en Siguiente para continuar.

configuración administrativa

Cuando la instalación de FOSSBilling se haya realizado correctamente, deberías recibir el mensaje«¡Enhorabuena! FOSSBilling se ha instalado correctamente’.

También verás algunas instrucciones para completar la instalación de FOSSBilling.

acabado

Vuelve al terminal de tu servidor Rocky Linux y ejecuta los siguientes comandos para finalizar la instalación de FOSSBilling.

Elimina el directorio‘install’ de FOSSBilling.

sudo rm -rf /var/www/fossbilling/install

Cambia el permiso del archivo de configuración FOssBilling‘config.php‘ a 0644. Esto eliminará el permiso de‘escritura’ para otros y grupos.

sudo chmod 0644 /var/www/fossbilling/config.php

Crea un nuevo cron para el FOSSBilling mediante el siguiente comando.

crontab -u nginx -e

Selecciona el editor de código que quieras utilizar. A continuación, introduce las siguientes líneas en el archivo.

*/5 * * * * php /var/www/fossbilling/cron.php

Guarda el archivo y sal del editor cuando hayas terminado.

acabado

Ahora vuelve al navegador y pulsa Finalizar.

Ahora obtendrás la siguiente página.

instalación finalizada

Si haces clic en el botón ‘Área de cliente’, serás redirigido a la página de inicio de FOSSBilling.

área de clientes

Si haces clic en el botón «Área deadministración«, serás redirigido a la página de inicio de sesión del administrador.

Inicia sesión con tu dirección de correo electrónico y contraseña, y haz clic en«Iniciar sesión«.

inicio de sesión de administrador

Si lo has hecho correctamente, deberías ver el panel de administración de FOSSBilling.

panel de administración

Con esto, ya has terminado la instalación de FOSSBilling y asegurado con certificados SSL/TLS a través de Certbot y Letsencrypt.

Conclusión

En esta guía, has instalado el software libre de facturación y gestión de usuarios FOSSBilling en un servidor Rocky Linux 9. También has configurado la Pila LEMP (servidor web Nginx, base de datos MariaDB y PHP-FPM) en un sistema Rocky Linux. Además, has asegurado la instalación de FOSSBilling con certificados SSL/TLS generados mediante Certbot y Letsencrypt.

A partir de aquí, ya puedes utilizar FOSSBilling para tu negocio. Puedes añadir más usuarios, configurar un servidor SMTP y muchas cosas más.

También te podría gustar...