Cómo instalar BoxBilling en Debian 11

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.
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.
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.
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
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.
Introduzca la base de datos y el usuario para BoxBilling y haga clic en ‘SIGUIENTE‘ de nuevo.
Ahora, escriba el nuevo usuario administrador, el correo electrónico y la contraseña para BoxBilling y haga clic en ‘SIGUIENTE‘.
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.
Puede ir a la página de inicio de BoxBilling, y verá una página similar a la de abajo.
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‘.
Ahora verá el panel de administración de Boxbilling como se muestra a continuación.
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.