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:
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:
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:
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:
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:
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:
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:
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:
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.
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.
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:
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:
También se te pedirá que confirmes la clave GPG para el repositorio Remi. Introduce y para confirmar y pulsa ENTER.
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:
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:
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:
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:
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:
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:
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.
Ahora introduce los detalles de la base de datos MariaDB y el usuario que has creado y vuelve a hacer clic en Siguiente.
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.
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.
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.
Ahora vuelve al navegador y pulsa Finalizar.
Ahora obtendrás la siguiente página.
Si haces clic en el botón ‘Área de cliente’, serás redirigido a la página de inicio de FOSSBilling.
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«.
Si lo has hecho correctamente, deberías ver el panel de administración de FOSSBilling.
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.