Cómo instalar BoxBilling en Debian 11

Comprobando PHP-FPM

BoxBilling es un software de facturaci√≥n impulsado por la comunidad y escrito en PHP. Es un software de facturaci√≥n gratuito y de c√≥digo abierto dise√Īado para ser f√°cil de usar tanto para los clientes como para los vendedores. BoxBilling proporciona una gran experiencia para los clientes con una interfaz intuitiva y tambi√©n soporta m√ļltiples pasarelas de pago.

En este tutorial, le 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 de root sudo.
  • Un nombre de dominio o subdominio que apunta a la direcci√≥n IP del servidor. Especialmente en un entorno de producci√≥n.

Instalación y configuración de PHP

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, actualice el √≠ndice de paquetes de Debian usando el comando ‘apt‘ a continuaci√≥n.

sudo apt update

Después de actualizar el repositorio, ejecute 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 que la instalaci√≥n de PHP haya terminado, edite el archivo ‘php.ini’ usando el editor nano.

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

Cambie la opci√≥n de ‘memory_limit’, ‘max_execution_time’, y ‘date.timezone’ con su entorno preferido. En este ejemplo, estamos usando el servidor con 2GB de memoria RAM, por lo que asignaremos ‘l√≠mite_de_memoria‘ para PHP a ‘512MB‘. Para el ‘data.timezone‘, c√°mbielo por su zona horaria.

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

Guarde el archivo y salga.

Ahora, reinicie el servicio PHP-FPM y aplique la nueva configuraci√≥n ejecutando el comando ‘systemctl’ que aparece a continuaci√≥n.

sudo systemctl restart php7.4-fpm

Por √ļltimo, verifique el servicio PHP-FPM usando el comando que se indica a continuaci√≥n.

sudo systemctl status php7.4-fpm

Ver√° la salida como el servicio PHP-FPM est√° activo corriendo.

Comprobando PHP-FPM

Instalando Nginx y MariaDB

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

Instale Nginx y MariaDB en el servidor Debian 11 utilizando el comando ‘apt’ que se indica a continuaci√≥n.

sudo apt install nginx-full mariadb-server -y

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

sudo systemctl status nginx
sudo systemctl status mariadb

Ahora debería obtener la salida como los servicios Nginx y MariaDB están activos y en ejecución.

Comprobando el servicio Nginx

Comprobando MariaDB

Configuración de la base de datos MariaDB

Despu√©s de la instalaci√≥n de MariaDB, se recomienda configurar la contrase√Īa de la ra√≠z de MariaDB. Utilizar√°s el comando ‘mysql_secure_installation’ para configurar la contrase√Īa ra√≠z de MariaDB y desplegar MariaDB con seguridad b√°sica.

Ejecute el comando ‘mysql_secure_installation’ en su servidor de terminal.Anuncio

mysql_secure_installation

Ahora se le pedir√° que escriba la contrase√Īa de root para MariaDB. Pulse 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 escriba ‘Y‘ para cambiar la autenticaci√≥n por defecto para el usuario root a la ‘unix_socket_authentication‘. Esto asegurar√° 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!

Escriba ‘Y‘ para cambiar la contrase√Īa de root para MariaDB, luego introduzca la nueva contrase√Īa para MariaDB y repita.

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!

Escriba ‘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!

Escriba ‘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!

Escriba ‘Y‘ para eliminar la base de datos por defecto ‘prueba‘ y todos los privilegios encima.

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, recargue 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√° asegurado.

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

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

En este paso, usted creará una nueva base de datos y un usuario para la instalación de BoxBilling. Todos los datos relacionados con BoxBilling serán almacenados en la base de datos MariaDB.

Ahora, inicie sesión en el shell de MariaDB utilizando el siguiente comando.

mysql -u root -p

Ejecute las siguientes consultas para crear una nueva base de datos y un nuevo usuario ‘boxbilling‘ con la contrase√Īa ‘dbpassBoxBilling‘, y luego conceder todos los privilegios en la base de datos ‘boxbilling‘ al usuario ‘[email¬†protected]‘. Despu√©s de eso, recargue todos los privilegios de la tabla para aplicar los nuevos cambios en MariaDB.

CREATE DATABASE boxbilling;
CREATE USER [email protected] IDENTIFIED BY 'dbpassBoxBilling';
GRANT ALL ON boxbilling.* TO [email protected] WITH GRANT OPTION;
FLUSH PRIVILEGES;

Ahora escriba ‘salga de‘ para salir del shell de MariaDB. Y ya has creado la nueva base de datos MariaDB y el usuario para la instalaci√≥n de BoxBilling.

Comprobando MariaDB

Descarga del código fuente de BoxBilling

BoxBilling puede ser instalado de varias maneras. Puedes instalar la √ļltima versi√≥n de BoxBilling desde el c√≥digo fuente e instalar todas las dependencias de PHP usando ‘Composer’, o descargar la versi√≥n estable de BoxBilling y moverla al directorio web-root.

En este paso, instalaremos la √ļltima versi√≥n estable de BoxBilling. En el momento de escribir este art√≠culo, la √ļltima versi√≥n estable de BoxBilling es v4.22Anuncio publicitario

Cree un nuevo directorio ra√≠z web ‘/var/www/boxbilling’ y mueva su directorio de trabajo a √©l.

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

Descargue la √ļltima versi√≥n estable del c√≥digo fuente de BoxBilling utilizando el comando wget y extraiga 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, cree nuevos directorios ‘cache’ y ‘upload’ en ‘/var/www/boxbilling/’.

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

A continuaci√≥n, cambie la propiedad del directorio ‘/var/www/boxbilling’ a su usuario y grupo ‘www-data’ utilizando el siguiente comando.

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

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

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

Y ahora est√° listo para configurar el servidor web Nginx para el software BoxBilling.

Configuración de Nginx para BoxBilling

En este paso, a√Īadir√° nuevos bloques de servidor Nginx para BoxBilling. Antes de crear la configuraci√≥n del bloque del servidor, aseg√ļrese de que tiene el nombre de dominio apuntado al servidor. Tambi√©n, aseg√ļrese de tener los certificados SSL generados para su dominio, puede utilizar los certificados SSL gratuitos de Letsencrypt.

Mueva su directorio de trabajo a ‘/etc/nginx/sites-available’ y cree una nueva configuraci√≥n de bloques de servidor ‘boxbilling.conf’ usando el editor nano.

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

Copie y pegue la siguiente configuraci√≥n. Y aseg√ļrese 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;
}
}

Guarde el archivo y salga.

A continuaci√≥n, ejecute el siguiente comando para activar la configuraci√≥n del bloque del servidor ‘boxbilling.conf’ y verificar 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√° el mensaje de salida como ‘Sintaxis OK‘.

Lasty, reinicia el servicio Nginx para aplicar la nueva configuración.

sudo systemctl restart nginx

Configuración de Nginx para BoxBilling

Instalación y configuración de BoxBilling

En este punto, usted ha configurado el servidor web BoxBilling y Nginx. Ahora comenzar√° a instalar y configurar BoxBilling desde el navegador web.

Abra su navegador web y escriba el nombre del dominio de BoxBilling en la barra de direcciones.

https://boxbilling.example.io/

Aseg√ļrese de que todos los requisitos tienen el color verde, lo que significa que su sistema se cumple para instalar BoxBilling.

Marque la casilla Licencia ‘Estoy de acuerdo’ y haga clic en ‘SIGUIENTE‘ bot√≥n.

Requisitos del sistema BoxBilling

Introduzca la base de datos y el usuario para BoxBilling y haga clic en ‘SIGUIENTE‘ de nuevo.

Configuración de la base de datos BoxBilling

Ahora, escriba el nuevo usuario administrador, el correo electr√≥nico y la contrase√Īa para BoxBilling y haga clic en ‘SIGUIENTE‘.

Crear nuevo usuario administrador

Y ya has instalado con éxito BoxBilling, pero necesitarás una configuración adicional que debes aplicar al servidor de BoxBilling.

Haga clic en el bot√≥n ‘FINALIZAR‘ y habr√°s completado la instalaci√≥n de BoxBilling.

Finalizar la instalación

Puede ir a la p√°gina de inicio de BoxBilling, y ver√° una p√°gina similar a la de abajo.

P√°gina de inicio de BoxBilling

Instalación del puesto de BoxBilling

Despu√©s de que la instalaci√≥n de Boxbilling se haya completado, necesitar√° eliminar el directorio ‘install’ y cambiar el permiso del archivo ‘bb-config.php’, el crear un nuevo cronjob para la aplicaci√≥n BoxBilling.

Elimine el directorio ‘install’ de BoxBilling usando el siguiente comando.

rm -rf /var/www/boxbilling/install

Cambie el permiso de ‘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 cree 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

Copie y pegue el siguiente script.

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

Guarde el cron y salga.

Ahora su BoxBilling est√° listo para sus clientes y consumidores.

Accediendo 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’. Introduzca la siguiente URL en la barra de direcciones de su navegador.

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

En la p√°gina de inicio de sesi√≥n del administrador de BoxBilling, introduzca su usuario y contrase√Īa, haga clic en el bot√≥n ‘INICIAR SESI√ďN‘.

BoxBilling Login admin

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

Tablero de administración de Boxbilling

Conclusión

¬°Enhorabuena! Ya ha instalado BoxBilling con PHP-FPM, Nginx y MariaDB en la √ļltima versi√≥n de Debian 11. Ahora puede utilizarlo como su central de gesti√≥n de compras gratuita con sus clientes y consumidores.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *