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:
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.
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:
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.
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:
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:
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.
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:
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:
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:
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:
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:
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:
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:
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:
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.
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:
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:
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.
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 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.
Ahora vuelve al navegador web 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 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.