BoxBilling installeren op Debian 11

BoxBilling is een community-gedreven factureringssoftware geschreven in PHP. Het is gratis en open-source facturering, ontworpen om gemakkelijk te gebruiken te zijn voor zowel klanten als verkopers. BoxBilling biedt een geweldige ervaring voor klanten met een intuïtieve interface en ondersteunt ook meerdere betalingsgateways.

In deze handleiding laten we je zien hoe je BoxBilling kunt installeren met Nginx, PHP-FPM, en MariaDB op Debian 11 Bullseye.

Vereisten

  • Een Debian 11 server Bullseye.
  • Een gebruiker met sudo root rechten.
  • Een domeinnaam of sub-domein dat naar het IP adres van de server wijst. Vooral in een productie omgeving.

Installeren en instellen van PHP

Eerst installeer en configureer je de PHP-FPM op je Debian systeem. De nieuwste versie van BoxBilling vereiste de PHP-FPM 7.4 of hoger, wat de standaard PHP versie is op de Debian repository.

Ververs, voordat je aan de slag gaat, de Debian pakket-index met het‘apt‘ commando hieronder.

sudo apt update

Nadat de repository ververst is, voer je het volgende commando uit om PHP-FPM te installeren met alle extra uitbreidingen voor 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

Als de hele PHP installatie klaar is, bewerk dan het bestand ‘php.ini’ met nano editor.

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

Verander de optie van‘memory_limit‘,‘max_execution_time‘, en‘date.timezone‘ met de omgeving van je voorkeur. In dit voorbeeld gebruiken we de server met 2GB RAM geheugen, dus wijzen we‘memory_limit‘ voor PHP toe aan‘512MB‘. Verander voor de optie‘data.timezone‘ deze met je tijdzone.

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

Bewaar het bestand en sluit af.

Herstart nu de PHP-FPM dienst en pas de nieuwe configuratie toe door het onderstaande‘systemctl‘ commando uit te voeren.

sudo systemctl restart php7.4-fpm

Verifieer ten slotte de PHP-FPM dienst met het onderstaande commando.

sudo systemctl status php7.4-fpm

Je ziet de uitvoer als de PHP-FPM dienst actief draait.

Controleren van PHP-FPM

Nginx en MariaDB installeren

In deze stap installeer je de Nginx webserver en de MariaDB databank. De BoxBilling toepassing vereist ten minste MySQL v8, maar ondersteunt ook een andere MySQL implementatie zoals MariaDB.

Installeer Nginx en MariaDB op de Debian 11 server met het‘apt‘ commando hieronder.

sudo apt install nginx-full mariadb-server -y

Nadat de installatie van Nginx en MariaDB voltooid is, voer je het volgende commando uit om de Nginx dienst en de MariaDB dienst te verifiëren.

sudo systemctl status nginx
sudo systemctl status mariadb

Nu zou je de uitvoer moeten krijgen dat de Nginx en MariaDB diensten actief zijn en draaien.

Nginx dienst controleren

MariaDB controleren

Opzetten van de MariaDB Database

Na de MariaDB installatie is het aan te raden het root wachtwoord voor MariaDB in te stellen. Je zult het ‘mysql_secure_installation’ commando gebruiken om het MariaDB root wachtwoord in te stellen en MariaDB met basisbeveiliging in te zetten.

Voer het commando‘mysql_secure_installation‘ uit op je terminal server.

mysql_secure_installation

Nu wordt je gevraagd het root wachtwoord voor MariaDB in te typen. Druk op ENTER om door te gaan want de standaard MariaDB installatie komt zonder root wachtwoord.

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

Typ nu‘Y‘ om de standaard authenticatie voor de root gebruiker om te schakelen naar de‘unix_socket_authentication‘ methode. Dit zal ervoor zorgen dat de root gebruiker altijd vanaf de lokale machine met de MariaDB verbonden is.

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!

Typ‘Y‘ om het root wachtwoord voor MariaDB te veranderen, voer daarna het nieuwe wachtwoord voor MariaDB in en herhaal.

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!

Typ‘Y‘ om de standaard anonieme gebruiker op MariaDB te verwijderen.

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!

Typ‘Y‘ om remote login voor de gebruiker root uit te schakelen.

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!

Typ‘Y‘ om de standaard database’test‘ en alle rechten erop te verwijderen.

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!

Herlaad tenslotte de tabelbevoegdheden op MariaDB om de nieuwe veranderingen toe te passen.

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

En je hebt het MariaDB root wachtwoord ingesteld en je MariaDB server is nu beveiligd.

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

Thanks for using MariaDB!

Opzetten van een nieuwe database en gebruiker voor BoxBilling

In deze stap maak je een nieuwe database en gebruiker voor de installatie van BoxBilling. Alle gegevens met betrekking tot BoxBilling zullen in de MariaDB database worden opgeslagen.

Meld je nu aan in de MariaDB shell met het volgende commando.

mysql -u root -p

Voer de volgende queries uit om een nieuwe database en gebruiker‘boxbilling‘ aan te maken met het wachtwoord‘dbpassBoxBilling‘, en verleen daarna alle privileges op de database‘boxbilling‘ aan de gebruiker[email protected]‘. Herlaad daarna alle tabelprivileges om de nieuwe veranderingen op MariaDB toe te passen.

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

Typ nu‘exit‘ om uit te loggen uit de MariaDB shell. En je hebt de nieuwe MariaDB databank en gebruiker voor de BoxBilling installatie aangemaakt.

MariaDB controleren

De broncode van BoxBilling downloaden

BoxBilling kan op verschillende manieren geïnstalleerd worden. Je kunt de nieuwste versie van BoxBilling vanaf de broncode installeren en alle PHP afhankelijkheden installeren met ‘Composer’, of de stabiele versie van BoxBilling downloaden en die naar de web-root directory verplaatsen.

In deze stap installeren we de laatste stabiele versie van BoxBilling. Op het moment van dit schrijven is de nieuwste stabiele versie BoxBilling v4.22.

Maak een nieuwe web-root directory‘/var/www/boxbilling‘ en verplaats je werkdirectory daarheen.

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

Download de nieuwste stabiele versie van BoxBilling broncode met het wget commando en pak het bestand‘BoxBilling.zip‘ uit met het unzip commando.

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

Maak nu een nieuwe directories‘cache‘ en‘upload‘ op de‘/var/www/boxbilling/‘.

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

Verander vervolgens het eigendom van de map ‘/var/www/boxbilling’ in ther gebruiker en groep‘www-data‘ met het onderstaande commando.

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

Sta de gebruiker‘www-data‘ toe te schrijven naar de directory‘cache‘ en‘upload‘.

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

En nu ben je klaar om Nginx webserver in te stellen voor de BoxBilling software.

Nginx configureren voor BoxBilling

In deze stap voeg je nieuwe Nginx serverblokken voor BoxBilling toe. Voor je de configuratie van de serverblokken maakt, moet je zeker zijn dat de domeinnaam naar de server wijst. Zorg er ook voor dat je de SSL certificaten voor je domein gegenereerd hebt, je kunt de gratis SSL certificaten van Letsencrypt gebruiken.

Verplaats je werkdirectory naar‘/etc/nginx/sites-available‘ en maak een nieuwe serverblokken configuratie‘boxbilling.conf‘ met nano editor.

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

Kopieer en plak de volgende configuratie. En let erop dat je de domeinnaam en het pad van de SSL certificaten verandert.

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;
     }
 }

Bewaar het bestand en sluit af.

Voer daarna het volgende commando uit om de serverblok configuratie‘boxbilling.conf‘ actief te maken en de Nginx configuratie te verifiëren.

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

Als je Nginx configuratie juist is, zie je de uitvoer boodschap zoals‘Syntax OK‘.

Tenslotte herstart je de Nginx dienst om de nieuwe configuratie toe te passen.

sudo systemctl restart nginx

Nginx instellen voor BoxBilling

Installeren en configureren van BoxBilling

Op dit punt heb je de BoxBilling en Nginx webserver geconfigureerd. Nu begin je met de installatie en configuratie van BoxBilling vanuit de web browser.

Open je web browser en typ de BoxBilling domeinnaam in de adresbalk.

https://boxbilling.example.io/

Controleer of alle vereisten de groene kleur hebben, wat betekent dat je systeem voldoet om BoxBilling te installeren.

Vink het Licentie vakje ‘I agree’ aan en klik op de‘NEXT‘ knop.

Systeemeisen BoxBilling

Voer de database en gebruiker voor BoxBilling in en klik weer op‘NEXT‘.

Opzetten van database BoxBilling

Typ nu de nieuwe admin gebruiker, e-mail, en wachtwoord voor BoxBilling en klik op‘NEXT’.

Maak een nieuwe admin gebruiker aan

En je hebt BoxBilling met succes geïnstalleerd, maar je hebt nog een extra set-up nodig die je op de BoxBilling server moet toepassen.

Klik op de‘FINISH‘ knop en je hebt de installatie van BoxBilling voltooid.

Installatie afwerken

Je kunt naar de startpagina van BoxBilling gaan, en je ziet een gelijkaardige pagina als hieronder.

BoxBilling homepage

BoxBilling na de installatie

Nadat de installatie van BoxBilling voltooid is, moet je de ‘install’ directory verwijderen en de rechten van het bestand ‘bb-config.php’ veranderen, en een nieuwe cronjob voor de BoxBilling toepassing maken.

Verwijder de BoxBilling‘install‘ directory met het volgende commando.

rm -rf /var/www/boxbilling/install

Verander de toestemming van het‘bb-config.php‘ in 644. Dit betekent dat alleen gebruiker ‘www-data’ naar dit bestand mag schrijven.

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

Maak nu een nieuwe cronjob voor de gebruiker ‘www-data’. De BoxBilling toepassing draait hoofdzakelijk onder de Nginx webserver met gebruiker‘www-data‘.

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

Kopieer en plak het volgende script.

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

Sla de cron op en sluit af.

Nu is je BoxBilling klaar voor je klanten en cliënten.

Inloggen op de BoxBilling admin pagina

De BoxBilling admin pagina bevindt zich op het URL pad‘/bb-admin‘. Voer de volgende URL in op de adresbalk van je webbrowser.

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

Voer op de BoxBilling admin inlogpagina je gebruikersnaam en wachtwoord in en klik op de knop‘LOG ME IN‘.

BoxBilling Inloggen admin

Nu zie je het Boxbilling admin dashboard zoals hieronder.

Boxbilling admin dashboard

Conclusie

Gefeliciteerd! Je hebt nu BoxBilling met PHP-FPM, Nginx, en MariaDB geïnstalleerd op de nieuwste Debian 11 bullseye. Je kunt het nu gebruiken als je gratis centraal inkoopbeheer met je klanten en cliënten.