Cómo instalar BoxBilling en Debian 11

BoxBilling es un software de facturación impulsado por la comunidad y escrito en PHP. Es un sistema de facturación gratuito y de código abierto, diseñado para ser fácil de usar tanto para clientes como para vendedores. BoxBilling proporciona una gran experiencia a los clientes con una interfaz intuitiva y también es compatible con múltiples pasarelas de pago.

En este tutorial, te mostraremos cómo instalar BoxBilling con Nginx, PHP-FPM y MariaDB en Debian 11 Bullseye.

Requisitos previos

  • Un servidor Debian 11 Bullseye.
  • Un usuario con privilegios sudo root.
  • Un nombre de dominio o subdominio apuntando a la dirección IP del servidor. Especialmente en un entorno de producción.

Instalar y configurar PHP

En primer lugar, instalarás y configurarás el PHP-FPM en tu sistema Debian. La última versión de BoxBilling requiere el PHP-FPM 7.4 o superior, que es la versión de PHP por defecto en el repositorio de Debian.

Antes de empezar, actualiza el índice de paquetes de Debian utilizando el comando‘apt‘ que aparece a continuación.

sudo apt update

Una vez refrescado el repositorio, ejecuta el siguiente comando para instalar PHP-FPM con todas las extensiones adicionales para BoxBilling.

sudo apt install php-fpm php-cli php-common php-zip php-mysql php-gd php-intl php-curl php-imap php-mbstring php-xml php-json libpcre3 openssl git unzip -y

Una vez finalizada la instalación de PHP, edita el archivo ‘php.ini’ utilizando el editor nano.

sudo nano /etc/php/7.4/fpm/php.ini
sudo nano /etc/php/7.4/cli/php.ini

Cambia la opción de‘memory_limit‘,‘max_execution_time‘, y‘date.timezone‘ con tu entorno preferido. En este ejemplo, estamos utilizando el servidor con 2GB de memoria RAM, por lo que asignaremos ‘memory_limit‘ para PHP a‘512MB‘. Para la opción ‘data.timezone‘, cámbiala con tu zona horaria.

memory_limit = 512M
max_execution_time = 360
date.timezone = Europe/Paris

Guarda el archivo y sal.

Ahora, reinicia el servicio PHP-FPM y aplica la nueva configuración ejecutando el siguiente comando‘systemctl‘.

sudo systemctl restart php7.4-fpm

Por último, verifica el servicio PHP-FPM utilizando el comando que aparece a continuación.

sudo systemctl status php7.4-fpm

Verás la salida como el servicio PHP-FPM está activo en ejecución.

Comprobación de PHP-FPM

Instalar Nginx y MariaDB

En este paso, instalarás el servidor web Nginx y la base de datos MariaDB. La aplicación BoxBilling requiere al menos MySQL v8, pero también admite otra implementación de MySQL como MariaDB.

Instala Nginx y MariaDB en el servidor Debian 11 utilizando el comando‘apt‘ que aparece a continuación.

sudo apt install nginx-full mariadb-server -y

Una vez completada la instalación de Nginx y MariaDB, ejecuta el siguiente comando para verificar el servicio Nginx y el servicio MariaDB.

sudo systemctl status nginx
sudo systemctl status mariadb

Ahora deberías obtener el resultado de que los servicios Nginx y MariaDB están activos y en funcionamiento.

Comprobación del servicio Nginx

Comprobación de MariaDB

Configurar la base de datos MariaDB

Tras la instalación de MariaDB, se recomienda configurar la contraseña de root para MariaDB. Utilizarás el comando ‘mysql_secure_installation’ para configurar la contraseña raíz de MariaDB e instalar MariaDB con seguridad básica.

Ejecuta el comando‘mysql_secure_installation‘ en tu servidor terminal.

mysql_secure_installation

Ahora se te pedirá que escribas la contraseña raíz de MariaDB. Pulsa ENTER para continuar porque la instalación por defecto de MariaDB viene sin contraseña de root.

Enter current password for root (enter for none):
OK, successfully used password, moving on...

Ahora escribe‘Y’ para cambiar la autenticación por defecto del usuario root al método‘unix_socket_authentication‘. Esto garantizará que el usuario root esté siempre conectado a MariaDB desde la máquina local.

Setting the root password or using the unix_socket ensures that nobody
can log into the MariaDB root user without the proper authorisation.

You already have your root account protected, so you can safely answer ‘n’.

Switch to unix_socket authentication [Y/n] Y
Enabled successfully!
Reloading privilege tables..
… Success!

Escribe «Y« para cambiar la contraseña de root de MariaDB, luego introduce la nueva contraseña de MariaDB y repite la operación.

You already have your root account protected, so you can safely answer 'n'.

Change the root password? [Y/n] Y
New password:
Re-enter new password:
Password updated successfully!
Reloading privilege tables..
… Success!

Escribe«Y» para eliminar el usuario anónimo por defecto en MariaDB.

By default, a MariaDB installation has an anonymous user, allowing anyone
to log into MariaDB without having to have a user account created for
them.  This is intended only for testing, and to make the installation
go a bit smoother.  You should remove them before moving into a
production environment.

Remove anonymous users? [Y/n] Y
… Success!

Escribe«Y» para desactivar el inicio de sesión remoto para el usuario root.

Normally, root should only be allowed to connect from 'localhost'.  This
ensures that someone cannot guess at the root password from the network.

Disallow root login remotely? [Y/n] Y
… Success!

Escribe«Y» para eliminar la base de datos por defecto«test» y todos los privilegios sobre ella.

By default, MariaDB comes with a database named 'test' that anyone can
access.  This is also intended only for testing, and should be removed
before moving into a production environment.

Remove test database and access to it? [Y/n] Y
– Dropping test database…
… Success!
– Removing privileges on test database…
… Success!

Por último, recarga los privilegios de la tabla en MariaDB para aplicar los nuevos cambios.

Reloading the privilege tables will ensure that all changes made so far
will take effect immediately.

Reload privilege tables now? [Y/n] Y
… Success!

Cleaning up…

Y ya has configurado la contraseña de root de MariaDB y tu servidor MariaDB está protegido.

All done!  If you've completed all of the above steps, your MariaDB
installation should now be secure.

Thanks for using MariaDB!

Configurar una nueva base de datos y un nuevo usuario para BoxBilling

En este paso, crearás una nueva base de datos y un nuevo usuario para la instalación de BoxBilling. Todos los datos relacionados con BoxBilling se almacenarán en la base de datos MariaDB.

Ahora, accede al shell de MariaDB utilizando el siguiente comando.

mysql -u root -p

Ejecuta las siguientes consultas para crear una nueva base de datos y un nuevo usuario‘boxbilling‘ con la contraseña‘dbpassBoxBilling‘, y luego concede todos los privilegios en la base de datos‘boxbilling‘ al usuario‘boxbilling@localhost‘. Después, recarga todos los privilegios de la tabla para aplicar los nuevos cambios en MariaDB.

CREATE DATABASE boxbilling;
CREATE USER boxbilling@localhost IDENTIFIED BY 'dbpassBoxBilling';
GRANT ALL ON boxbilling.* TO boxbilling@localhost WITH GRANT OPTION;
FLUSH PRIVILEGES;

Ahora escribe‘exit‘ para salir de la shell de MariaDB. Y ya habrás creado la nueva base de datos MariaDB y el nuevo usuario para la instalación de BoxBilling.

Comprobación de MariaDB

Descargar el código fuente de BoxBilling

BoxBilling se puede instalar de muchas formas. Puedes instalar la última versión de BoxBilling desde el código fuente e instalar todas las dependencias PHP utilizando ‘Composer’, o descargar la versión estable de BoxBilling y moverla al directorio raíz de la web.

En este paso, instalaremos la última versión estable de BoxBilling. En el momento de escribir esto, la última versión estable de BoxBilling es la v4.22.

Crea un nuevo directorio raíz web‘/var/www/boxbilling‘ y mueve tu directorio de trabajo a él.

mkdir -p /var/www/boxbilling/
cd /var/www/boxbilling

Descarga la última versión estable del código fuente de BoxBilling utilizando el comando wget y extrae el archivo‘BoxBilling.zip‘ utilizando el comando unzip.

wget https://github.com/boxbilling/boxbilling/releases/download/4.22.1.3/BoxBilling.zip
unzip Boxbilling.zip

Ahora, crea nuevos directorios‘cache‘ y‘upload‘ en‘/var/www/boxbilling/‘.

mkdir -p /var/www/boxbilling/bb-data/{cache,uploads}

A continuación, cambia la propiedad del directorio ‘/var/www/boxbilling ‘ al usuario y grupowww-data’ utilizando el siguiente comando.

sudo chown -R www-data:www-data /var/www/boxbilling

Permite al usuariowww-data’ escribir en el directorio‘cache‘ y‘upload‘.

sudo chmod u+rw /var/www/boxbilling/bb-data/{cache,uploads}

Y ahora ya estás listo para configurar el servidor web Nginx para el software BoxBilling.

Configurar Nginx para BoxBilling

En este paso, añadirás nuevos bloques de servidor Nginx para BoxBilling. Antes de crear la configuración del bloque de servidor, asegúrate de que tienes el nombre de dominio apuntado al servidor. Además, asegúrate de que tienes los certificados SSL generados para tu dominio, puedes utilizar los certificados SSL gratuitos de Letsencrypt.

Mueve tu directorio de trabajo a‘/etc/nginx/sites-available‘ y crea una nueva configuración de bloques de servidor‘boxbilling.conf‘ utilizando el editor nano.

cd /var/www/sites-available/
nano boxbilling.conf

Copia y pega la siguiente configuración. Y asegúrate de cambiar el nombre de dominio y la ruta de los certificados SSL.

server {
    listen 80;
    server_name billing.example.io;
    return 302 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;

set $root_path '/var/www/boxbilling';

server_name  billing.example.io;

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

ssl_certificate /etc/letsencrypt/live/billing.example.io/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/billing.example.io/privkey.pem;

ssl_protocols TLSv1.2;
ssl_prefer_server_ciphers on;
ssl_ciphers ECDHE-RSA-AES256-GCM-SHA512:DHE-RSA-AES256-GCM-SHA512:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-SHA384;
ssl_ecdh_curve secp384r1; # Requires nginx >= 1.1.0
ssl_session_timeout  10m;
ssl_session_cache shared:SSL:10m;
ssl_session_tickets off; # Requires nginx >= 1.5.9
# ssl_stapling on; # Requires nginx >= 1.3.7
# ssl_stapling_verify on; # Requires nginx => 1.3.7
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;
add_header X-Frame-Options DENY;
add_header X-Content-Type-Options nosniff;
add_header X-XSS-Protection "1; mode=block";

access_log /var/log/nginx/example.com.access.log;
error_log /var/log/nginx/example.com.error.log;

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

location ~ \.php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
include fastcgi_params;
fastcgi_intercept_errors on;
}

# Disable PHP execution in bb-uploads and bb-data
location ^~ /bb-uploads/ { }
location ^~ /bb-data/ {
deny all;
}

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

location ~ /\.ht {
deny all;
}
}

Guarda el archivo y sal.

A continuación, ejecuta el siguiente comando para activar la configuración de bloques del servidor ‘boxbilling.conf’ y verifica la configuración de Nginx.

ln -s /etc/nginx/sites-available/boxbilling.conf /etc/nginx/sites-enabled/
sudo nginx -t

Si la configuración de Nginx es correcta, verás el mensaje de salida‘Sintaxis OK‘.

Por último, reinicia el servicio Nginx para aplicar la nueva configuración.

sudo systemctl restart nginx

Configurar Nginx para BoxBilling

Instalación y configuración de BoxBilling

Llegados a este punto, ya has configurado BoxBilling y el servidor web Nginx. Ahora empezarás a instalar y configurar BoxBilling desde el navegador web.

Abre tu navegador web y escribe el nombre de dominio de BoxBilling en la barra de direcciones.

https://boxbilling.example.io/

Asegúrate de que todos los requisitos tienen el color verde, lo que significa que tu sistema cumple los requisitos para instalar BoxBilling.

Marca la casilla de Licencia ‘Acepto’ y pulsa el botón‘SIGUIENTE‘.

Requisitos del sistema BoxBilling

Introduce la base de datos y el usuario para BoxBilling y pulsa de nuevo el botón ‘SIGUIENTE‘.

Configurar la base de datos BoxBilling

Ahora, introduce el nuevo usuario administrador, el correo electrónico y la contraseña para BoxBilling y haz clic en ‘SIGUIENTE‘.

Crear nuevo usuario administrador

Ya has instalado correctamente BoxBilling, pero necesitarás una configuración adicional que deberás aplicar al servidor de BoxBilling.

Pulsa el botón ‘FINALIZAR‘ y habrás completado la instalación de BoxBilling.

Acabado Instalación

Puedes ir a la página de inicio de BoxBilling, y verás una página similar a la siguiente.

Página de inicio de BoxBilling

Postinstalación de BoxBilling

Una vez completada la instalación de BoxBilling, tendrás que eliminar el directorio ‘install’ y cambiar el permiso del archivo ‘bb-config.php’, y crear un nuevo cronjob para la aplicación BoxBilling.

Elimina el directorio ‘install de BoxBilling utilizando el siguiente comando.

rm -rf /var/www/boxbilling/install

Cambia el permiso del archivo ‘bb-config.php’ a 644. Esto significa que sólo el usuario ‘www-data’ puede escribir en este archivo.

sudo chmod 644 /var/www/boxbilling/bb-config.php

Ahora crea un nuevo cronjob para el usuario ‘www-data’. La aplicación BoxBilling se ejecuta principalmente bajo el servidor web Nginx con el usuario ‘www-data‘.

export EDITOR=nano
sudo crontab -u www-data -e

Copia y pega el siguiente script.

*/5 * * * * php /var/www/boxbilling/bb-cron.php

Guarda el cron y sal.

Ahora tu BoxBilling está listo para tus clientes.

Acceder a la página de administración de BoxBilling

La página de administración de BoxBilling se encuentra en la ruta URL‘/bb-admin‘. Introduce la siguiente URL en la barra de direcciones de tu navegador web.

https://boxbilling.example.io/bb-admin/

En la página de inicio de sesión del administrador de BoxBilling, introduce tu usuario y contraseña, haz clic en el botón‘INICIAR SESIÓN‘.

BoxBilling Login admin

Ahora verás el panel de administración de Boxbilling como se muestra a continuación.

Panel de administración de Boxbilling

Conclusión

¡Enhorabuena! Ya has instalado BoxBilling con PHP-FPM, Nginx y MariaDB en la última versión de Debian 11. Ahora puedes utilizarlo como tu central de gestión de compras gratuita con tus clientes y usuarios.

También te podría gustar...