Cómo instalar FossBilling con Nginx en Debian 11

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ás la solución de facturación de código abierto FossBilling en el servidor Debian 11. Configurarás FossBilling con LEMP Stack (Linux, Nginx, MariaDB y PHP-FPM) y asegurarás FossBilling con certificados SSL/TLS mediante Certbot y Letsencrypt.

Requisitos previos

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

  • Un servidor Debian 11 – Este ejemplo utiliza un servidor Debian con el nombre de host‘fossbilling-server‘.
  • Un usuario no root con privilegios de administrador sudo/root.
  • Un nombre de dominio apuntando a una dirección IP del servidor – Este ejemplo utiliza un subdominio ‘fossbilling.hwdomain.io‘.

Con estos requisitos, estás listo para instalar FossBilling.

Instalar el servidor web Nginx

En este primer paso, instalarás el servidor web Nginx en tu sistema Debian. A continuación, verificarás el servicio Nginx para asegurarte de que se está ejecutando y está habilitado.

Para empezar, ejecuta el siguiente comando apt para actualizar y refrescar el índice de paquetes de Debian.

sudo apt update

Una vez actualizado el repositorio, instala el servidor web Nginx mediante el siguiente comando apt. Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar.

sudo apt install nginx

Salida:

instalar nginx

Una vez instalado Nginx, ejecuta el siguiente comando systemctl para comprobar el estado del servicio Nginx y asegurarte de que se está ejecutando.

sudo systemctl is-enabled nginx
sudo systemctl status nginx

La siguiente salida confirma que el servicio Nginx se está ejecutando y está habilitado, lo que significa que se iniciará automáticamente al arrancar el sistema.

verificar nginx

Instalar y configurar el cortafuegos UFW

En Debian, el cortafuegos por defecto es iptables. Para hacerlo más fácil, puedes instalar UFW para gestionar el cortafuegos del sistema.

En este paso, instalarás UFW y abrirás los servicios SSH, HTTP y HTTPS para permitir el acceso a los usuarios/clientes.

Instala UFW ejecutando el siguiente comando apt. Introduce y cuando se te solicite y pulsa ENTER para continuar.

sudo apt install ufw

Salida:

instalar ufw

Una vez instalado UFW, ejecuta el siguiente comando ufw para abrir las aplicaciones OpenSSH y‘WWW Full ‘. Las aplicaciones OpenSSH abrirán el puerto SSH 22 por defecto y las aplicaciones ‘WWW Full’ abrirán los servicios HTTP y HTTPS en los puertos 80 y 443.

sudo ufw allow OpenSSH
sudo ufw allow "WWW Full"

Si lo consigues, deberías obtener un mensaje como«Reglas actualizadas«.

A continuación, ejecuta el siguiente comando ufw para iniciar y habilitar el cortafuegos UFW. Cuando se te solicite, introduce y para confirmar y pulsa ENTER para continuar.

sudo ufw enable

La salida «El cortafuegos está activo y habilitado al iniciar el sistema» confirma que el cortafuegos UFW se está ejecutando y se ejecutará automáticamente al arrancar.

configuración ufw

Por último, ejecuta el siguiente comando para verificar el estado del cortafuegos UFW. Deberías ver que el cortafuegos UFW estáactivo’ con las aplicaciones OpenSSH y‘WWW Full‘ añadidas sobre él.

sudo ufw status

Resultado:

Estado de ufw

Con el cortafuegos UFW instalado y configurado, empezarás a instalar el servidor de bases de datos MariaDB.

Instalar y configurar el servidor MariaDB

En este paso, instalarás el servidor MariaDB, asegurarás la implementación de MariaDB mediante ‘mariadb-secure-installation’, y luego crearás una nueva base de datos MariaDB y el usuario que utilizará FossBilling.

Instala el servidor MariaDB utilizando el siguiente comando apt. Cuando se te solicite, introduce y y pulsa ENTER para continuar.

sudo apt install mariadb-server

Salida:

instalar mariadb

Una vez instalado MariaDB, ejecuta el siguiente comando systemctl para verificar el servicio MariaDB y asegurarte de que se está ejecutando.

sudo systemctl is-enabled mariadb
sudo systemctl status mariadb

La siguiente salida confirma que el servidor MariaDB se está ejecutando y está habilitado, lo que significa que se iniciará automáticamente al arrancar el sistema.

comprobar mariadb

Con el servidor MariaDB en ejecución, a continuación asegurarás la instalación de MariaDB mediante el comando «mariadb-secure-installation«. Ejecuta el siguiente comando «mariadb-secure-installation» para empezar a proteger tu servidor 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 de root 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.

Ahora que has asegurado la implementación de MariaDB y configurado la contraseña raíz de MariaDB, crearás una nueva base de datos y un nuevo usuario que se utilizarán para la instalación de FossBilling.

Para empezar, ejecuta el siguiente comando‘mariadb‘ para acceder al intérprete de comandos de MariaDB. Cuando se te pida la contraseña, introduce tu contraseña raíz de MariaDB.

sudo mariadb -u root -p

A continuación, ejecuta las siguientes consultas para crear una nueva base de datos y un nuevo usuario para Fossbilling. En este ejemplo, crearás una nueva base de datos‘fossbillingdb‘, y el usuario MariaDB‘fossbilling‘. Además, asegúrate de cambiar la contraseña en las consultas siguientes.

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

Salida:

crear base de datos y usuario

Ahora verifica los privilegios del usuario MariaDB ‘fossbilling‘ y asegúrate de que el usuario tiene privilegios para acceder a la base de datos‘fossbillingdb‘.

SHOW GRANTS FOR fossbilling@localhost;
quit

Ahora escribe quit para salir.

Salida:

verificar usuario mariadb

Con esto, ya has instalado el servidor MariaDB, configurado el usuario raíz MariaDB y creado la base de datos y el usuario para FossBilling. En el siguiente paso, instalarás y configurarás PHP-FPM en el servidor Debian.

Instalar y configurar PHP-FPM 8.2

En este paso, instalarás y configurarás PHP-FPM en tu servidor Debian. La última versión de FossBilling si compatible con PHP 8.x. Por tanto, ahora instalarás PHP 8.2 para la instalación de FossBiling.

Antes de eso, debes añadir un repositorio PHP de terceros a tu servidor Debian. Esto se debe a que PHP 8.0 aún no está disponible en el repositorio de Debian 11.

Para empezar, ejecuta el siguiente comando para instalar las dependencias básicas en tu sistema Debian. Introduce y cuando se te pida y pulsa ENTER para continuar.

sudo apt install ca-certificates gnupg2 apt-transport-https software-properties-common

Salida:

instalar dependencias

Ahora ejecuta el siguiente comando wget para descargar la clave GPG del repositorio PHP.

wget -q -O /usr/share/keyrings/sury-php.gpg https://packages.sury.org/php/apt.gpg

A continuación, ejecuta el siguiente comando para añadir el repositorio PHP a tu servidor Debian.

echo "deb [signed-by=/usr/share/keyrings/sury-php.gpg] https://packages.sury.org/php/ $(lsb_release -sc) main" | tee /etc/apt/sources.list.d/sury-php.list

A continuación, refresca y actualiza el índice de paquetes mediante el siguiente comando apt. Esto descargará el índice de listas de paquetes para el nuevo repositorio PHP.

sudo apt update

Salida:

configurar repositorio

Ahora ejecuta el siguiente comando apt para instalar los paquetes PHP y PHP-FPM. Introduce y cuando se te pida y pulsa ENTER para continuar. Además, asegúrate de que la versión de PHP que vas a instalar es PHP 8.1 o 8.2.

sudo apt install php php-fpm

Salida:

instalar php-fpm

A continuación, puedes instalar las extensiones PHP necesarias para FossBilling mediante el siguiente comando apt. Introduce y para confirmar la instalación y pulsa ENTER para continuar.

sudo apt install libcurl4-openssl-dev php-mysql php-curl php-cli php-zip php-common php-mbstring php-xml

Salida:

instalar extensiones php

Cuando los paquetes PHP estén instalados, abre el archivo ‘/etc/php/8.2/fpm/php.ini ‘ utilizando el siguiente comando del editor nano.

sudo nano /etc/php/8.2/fpm/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/8.2/fpm/php.ini ‘ cuando hayas terminado.

A continuación, ejecuta el siguiente comando systemctl para reiniciar el servicio PHP-FPM y aplicar los cambios.

sudo systemctl restart php8.2-fpm

A continuación, verifica el servicio PHP-FPM para asegurarte de que el servicio está activado y en ejecución. La salida‘active (running)‘ confirma que el servicio PHP-FPM se está ejecutando, y la salida ‘loaded (…/php8.2.service; enabled;..)‘ confirma que el servicio está habilitado y se ejecutará automáticamente al iniciar el sistema.

sudo systemctl is-enabled php8.2-fpm
sudo systemctl status php8.2-fpm

Salida:

verificar php-fpm

Por último, ejecuta el siguiente comando para verificar la versión de PHP y la lista de extensiones habilitadas en tu sistema Debian. En tu terminal, deberías ver una salida como«PHP 8.2«, que confirma que has instalado PHP 8.2. Y para la lista de extensiones PHP, asegúrate de que las extensiones‘pdo_mysql’, ‘curl’, ‘openssl’ y ‘zlib ‘ están habilitadas.

php --version
php -m

Resultado:

verificar php

Has instalado la Pila LEMP con el servidor web Nginx, el servidor de bases de datos MariaDB y PHP-FPM. Ahora estás listo para descargar e instalar FossBilling.

Descargar el código fuente de FOSSBilling

En este paso, descargarás el código fuente de Fossbilling y configurarás el directorio de instalación de FossBilling, que estará ubicado en el directorio‘/var/www/fossbilling‘.

Primero, ejecuta el siguiente comando apt para instalar el paquete unzip.

sudo apt install unzip -y

A continuación, crea un nuevo directorio‘/var/www/fossbilling‘, y mueve tu directorio de trabajo a él. A continuación, descarga 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

Después de descargar FossBilling, deberías obtener un nuevo archivo‘FOSSBilling.zip‘ en tu directorio de trabajo actual.

descargar fossbilling

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‘www-data‘.

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

Con el código fuente de FossBilling descargado y el directorio de instalación correctamente configurado. A continuación, crearás una nueva configuración de bloque de servidor Nginx que se utilizará para ejecutar FossBilling.

Configuración del bloque de servidor Nginx

En este paso, crearás una nueva configuración de bloque de servidor Nginx que se utilizará para ejecutar la aplicación FOSSBilling. Antes de empezar, asegúrate de que tienes un nombre de dominio apuntando a la dirección IP de tu servidor Debian. Este ejemplo utiliza el dominio ‘fossbiling.hwdomain.io’.

Ejecuta el siguiente comando del editor nano para crear una nueva configuración de bloque de servidor Nginx‘/etc/nginx/sites-available/fossbilling‘.

sudo nano /etc/nginx/sites-available/fossbilling

Añade la siguiente configuración de bloque de servidor al archivo. Asegúrate de cambiar el nombre de dominio ‘fossbilling.hwdomain.io’ y de que tienes la ruta correcta de tu archivo sock PHP-FPM.

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 to 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/php-fpm.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 del editor cuando hayas terminado.

A continuación, ejecuta el siguiente comando para activar el archivo de bloqueo del servidor Nginx‘/etc/nginx/sites-available/fossbilling‘. A continuación, verifica la configuración de Nginx para asegurarte de que tienes los archivos de configuración adecuados.

sudo ln -s /etc/nginx/sites-available/fossbilling /etc/nginx/sites-enabled/
sudo nginx -t

Si se realiza correctamente, deberías obtener una salida como ‘test successful – syntax ok‘.

Por último, ejecuta el siguiente comando systemctl para reiniciar el servicio Nginx y aplicar los cambios.

sudo systemctl restart nginx

Salida:

configurar bloque servidor nginx

Con el bloque del servidor Nginx creado, ya estás listo para acceder e iniciar la instalación de FossBilling. Pero antes de eso, siempre es recomendable asegurar tu FossBilling con certificados SSL/TLS que se pueden generar mediante Certbot y Letsencrypt.

Proteger FossBilling con certificados SSL/TLS de Letsencrypt

En este punto, tu instalación de FossBilling es accesible, pero todavía en el protocolo HTTP inseguro. Para asegurar FossBilling, puedes implementar una conexión HTTPS segura añadiendo certificados SSL/TLS a tu bloque de servidor Nginx. Para conseguirlo, puedes generar certificados SSL/TLS gratuitos a través de Certbot y 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 apt para instalar Certbot y el plugin Certbot Nginx. Introduce y cuando se te pida y pulsa ENTER para continuar.

sudo apt 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 ahora 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.

fossbilling instalar

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

setup dataabses

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.

éxito de la instalación

Vuelve al terminal de tu servidor Debian 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 de 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 FossBilling mediante el siguiente comando.

crontab -u www-data -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.

instalación de acabado

Ahora vuelve al navegador web y pulsa Finalizar.

Ahora obtendrás la siguiente página.

área de administración

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«.

login admin

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

salpicadero

Con esto, ya has finalizado 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 Debian 11. También has configurado la pila LEMP (servidor web Nginx, base de datos MariaDB y PHP-FPM) en un sistema Debian. 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.

Scroll al inicio