So installierst du BoxBilling unter Debian 11

BoxBilling ist eine in PHP geschriebene, von der Community betriebene Abrechnungssoftware. Es ist eine kostenlose und quelloffene Abrechnungssoftware, die sowohl für Kunden als auch für Verkäufer einfach zu bedienen ist. BoxBilling bietet eine intuitive Benutzeroberfläche für Kunden und unterstützt mehrere Zahlungsgateways.

In diesem Tutorial zeigen wir dir, wie du BoxBilling mit Nginx, PHP-FPM und MariaDB auf Debian 11 Bullseye installierst.

Voraussetzungen

  • Ein Debian 11 Server Bullseye.
  • Ein Benutzer mit sudo Root-Rechten.
  • Ein Domainname oder eine Subdomain, die auf die IP-Adresse des Servers zeigt. Besonders in einer Produktionsumgebung.

Installieren und Konfigurieren von PHP

Zuerst installierst und konfigurierst du den PHP-FPM auf deinem Debian-System. Die letzte Version von BoxBilling benötigt PHP-FPM 7.4 oder höher, die Standard-PHP-Version im Debian-Repository.

Bevor du loslegst, aktualisiere den Debian-Paketindex mit dem unten stehenden„apt„-Befehl.

sudo apt update

Nachdem das Repository aktualisiert wurde, führe den folgenden Befehl aus, um PHP-FPM mit allen zusätzlichen Erweiterungen für BoxBilling zu installieren.

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

Sobald die PHP-Installation abgeschlossen ist, bearbeite die Datei „php.ini“ mit dem Editor nano.

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

Ändere die Optionen„memory_limit„,„max_execution_time“ und„date.timezone“ entsprechend deiner bevorzugten Umgebung. In diesem Beispiel verwenden wir einen Server mit 2 GB RAM-Speicher, also setzen wir„memory_limit“ für PHP auf„512 MB„. Ändere die Option„data.timezone“ in deine Zeitzone.

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

Speichere die Datei und beende sie.

Starte nun den PHP-FPM-Dienst neu und wende die neue Konfiguration an, indem du den Befehl„systemctl“ ausführst.

sudo systemctl restart php7.4-fpm

Überprüfe abschließend den PHP-FPM-Dienst mit dem unten stehenden Befehl.

sudo systemctl status php7.4-fpm

Du siehst die Ausgabe, dass der PHP-FPM-Dienst aktiv ist und läuft.

PHP-FPM überprüfen

Installation von Nginx und MariaDB

In diesem Schritt installierst du den Webserver Nginx und die Datenbank MariaDB. Die BoxBilling-Anwendung benötigt mindestens MySQL v8, unterstützt aber auch andere MySQL-Implementierungen wie MariaDB.

Installiere Nginx und MariaDB auf dem Debian 11 Server mit dem Befehl„apt“ (siehe unten).

sudo apt install nginx-full mariadb-server -y

Nachdem die Installation von Nginx und MariaDB abgeschlossen ist, führe den folgenden Befehl aus, um den Nginx-Dienst und den MariaDB-Dienst zu überprüfen.

sudo systemctl status nginx
sudo systemctl status mariadb

Jetzt solltest du die Ausgabe erhalten, dass die Dienste Nginx und MariaDB aktiv sind und laufen.

Überprüfen des Nginx-Dienstes

Überprüfen von MariaDB

Einrichten der MariaDB-Datenbank

Nach der MariaDB-Installation solltest du das Root-Passwort für MariaDB einrichten. Du wirst den Befehl „mysql_secure_installation“ verwenden, um das Root-Passwort für MariaDB einzurichten und MariaDB mit grundlegender Sicherheit einzusetzen.

Führe den Befehl„mysql_secure_installation“ auf deinem Terminalserver aus.

mysql_secure_installation

Nun wirst du aufgefordert, das Root-Passwort für MariaDB einzugeben. Drücke ENTER, um fortzufahren, denn die Standardinstallation von MariaDB kommt ohne Root-Passwort.

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

Gib nun„Y“ ein, um die Standardauthentifizierung für den Root-Benutzer auf die Methode„unix_socket_authentication“ umzustellen. Damit wird sichergestellt, dass der Root-Benutzer immer vom lokalen Rechner aus mit MariaDB verbunden ist.

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!

Gib„Y“ ein, um das Root-Passwort für MariaDB zu ändern, gib dann das neue Passwort für MariaDB ein und wiederhole es.

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!

Gib„Y“ ein, um den anonymen Standardbenutzer für MariaDB zu entfernen.

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!

GibY“ ein, um die Fernanmeldung für den Benutzer root zu deaktivieren.

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!

GibY“ ein, um die Standarddatenbank„test“ und alle Berechtigungen auf ihr zu entfernen.

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!

Zum Schluss lädst du die Tabellenberechtigungen in MariaDB neu, um die neuen Änderungen anzuwenden.

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…

Damit hast du das MariaDB Root-Passwort konfiguriert und dein MariaDB-Server ist nun sicher.

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

Thanks for using MariaDB!

Neue Datenbank und Benutzer für BoxBilling einrichten

In diesem Schritt erstellst du eine neue Datenbank und einen neuen Benutzer für die BoxBilling-Installation. Alle Daten, die mit BoxBilling zusammenhängen, werden in der MariaDB-Datenbank gespeichert.

Melde dich mit dem folgenden Befehl in der MariaDB-Shell an.

mysql -u root -p

Führe die folgenden Abfragen aus, um eine neue Datenbank und einen neuen Benutzer„boxbilling“ mit dem Passwort„dbpassBoxBilling“ zu erstellen und erteile dem Benutzer„boxbilling@localhost“ alle Rechte für die Datenbank„boxbilling„. Danach lädst du alle Tabellenberechtigungen neu, um die neuen Änderungen in MariaDB anzuwenden.

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

Gib nun„exit“ ein, um dich von der MariaDB-Shell abzumelden. Damit hast du die neue MariaDB-Datenbank und den neuen Benutzer für die BoxBilling-Installation erstellt.

Überprüfen von MariaDB

Herunterladen des BoxBilling-Quellcodes

BoxBilling kann auf verschiedene Arten installiert werden. Du kannst die neueste Version von BoxBilling aus dem Quellcode installieren und alle PHP-Abhängigkeiten mit „Composer“ installieren oder du lädst die stabile Version von BoxBilling herunter und verschiebst sie in das Web-Root-Verzeichnis.

In diesem Schritt werden wir die neueste stabile Version von BoxBilling installieren. Zum Zeitpunkt der Erstellung dieses Artikels ist die letzte stabile Version von BoxBilling v4.22.

Erstelle ein neues Web-Root-Verzeichnis„/var/www/boxbilling“ und verschiebe dein Arbeitsverzeichnis dorthin.

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

Lade den Quellcode der neuesten stabilen Version von BoxBilling mit dem Befehl wget herunter und entpacke die Datei„BoxBilling.zip“ mit dem Befehl unzip.

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

Erstelle nun die neuen Verzeichnisse„cache“ und„upload“ im Verzeichnis„/var/www/boxbilling/„.

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

Als Nächstes änderst du mit dem folgenden Befehl die Eigentümerschaft des Verzeichnisses „/var/www/boxbilling“ auf den Benutzer und die Gruppe„www-data„.

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

Erlaube dem Benutzer„www-data„, in die Verzeichnisse„cache“ und„upload“ zu schreiben.

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

Jetzt kannst du den Nginx-Webserver für die BoxBilling-Software einrichten.

Nginx für BoxBilling konfigurieren

In diesem Schritt fügst du neue Nginx-Serverblöcke für BoxBilling hinzu. Bevor du den Serverblock konfigurierst, musst du sicherstellen, dass der Domainname auf den Server zeigt. Vergewissere dich außerdem, dass du die SSL-Zertifikate für deine Domain erstellt hast. Du kannst die kostenlosen SSL-Zertifikate von Letsencrypt verwenden.

Verschiebe dein Arbeitsverzeichnis nach„/etc/nginx/sites-available“ und erstelle mit dem nano-Editor eine neue Serverblock-Konfiguration„boxbilling.conf„.

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

Kopiere die folgende Konfiguration und füge sie ein. Achte darauf, dass du den Domainnamen und den Pfad der SSL-Zertifikate änderst.

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

Speichere die Datei und beende sie.

Als Nächstes führst du den folgenden Befehl aus, um die Serverblock-Konfiguration„boxbilling.conf“ zu aktivieren und die Nginx-Konfiguration zu überprüfen.

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

Wenn deine Nginx-Konfiguration korrekt ist, siehst du eine Meldung wie„Syntax OK„.

Starte schließlich den Nginx-Dienst neu, um die neue Konfiguration zu übernehmen.

sudo systemctl restart nginx

Nginx für BoxBilling einrichten

Installieren und Konfigurieren von BoxBilling

Jetzt hast du BoxBilling und den Nginx-Webserver konfiguriert. Jetzt beginnst du mit der Installation und Konfiguration von BoxBilling über den Webbrowser.

Öffne deinen Webbrowser und gib den Domainnamen von BoxBilling in die Adresszeile ein.

https://boxbilling.example.io/

Vergewissere dich, dass alle Anforderungen grün sind. Das bedeutet, dass dein System für die Installation von BoxBilling geeignet ist.

Aktiviere das Lizenzkästchen „Ich stimme zu“ und klicke auf die Schaltfläche„NEXT„.

Systemanforderungen BoxBilling

Gib die Datenbank und den Benutzer für BoxBilling ein und klicke erneut auf die Schaltfläche„NEXT„.

Einrichten der Datenbank BoxBilling

Gib jetzt den neuen Admin-Benutzer, die E-Mail und das Passwort für BoxBilling ein und klicke auf„NEXT“.

Neuen Admin-Benutzer anlegen

Damit hast du BoxBilling erfolgreich installiert, aber du brauchst noch eine zusätzliche Einrichtung, die du auf dem BoxBilling-Server vornehmen musst.

Klicke auf die Schaltfläche„FINISH“ und du hast die Installation von BoxBilling abgeschlossen.

Installation beenden

Du kannst zur Startseite von BoxBilling wechseln und siehst dort eine ähnliche Seite wie unten.

BoxBilling Homepage

BoxBilling nach der Installation

Nachdem die Installation von BoxBilling abgeschlossen ist, musst du das „install“-Verzeichnis entfernen und die Berechtigung der Datei „bb-config.php“ ändern, um einen neuen Cronjob für die BoxBilling-Anwendung zu erstellen.

Entferne das BoxBilling-„install„-Verzeichnis mit dem folgenden Befehl.

rm -rf /var/www/boxbilling/install

Ändere die Berechtigung für die Datei„bb-config.php“ auf 644. Das bedeutet, dass nur der Benutzer „www-data“ in diese Datei schreiben darf.

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

Erstelle nun einen neuen Cronjob für den Benutzer „www-data“. Die BoxBilling-Anwendung läuft hauptsächlich unter dem Nginx-Webserver mit dem Benutzer„www-data„.

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

Kopiere das folgende Skript und füge es ein.

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

Speichere den Cronjob und beende ihn.

Jetzt ist deine BoxBilling-Anwendung bereit für deine Kunden und Kundinnen.

Einloggen auf der BoxBilling-Administrationsseite

Die BoxBilling-Administrationsseite befindet sich unter dem URL-Pfad„/bb-admin„. Gib die folgende URL in die Adresszeile deines Webbrowsers ein.

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

Gib auf der BoxBilling-Admin-Login-Seite deinen Benutzer und dein Passwort ein und klicke auf die Schaltfläche„LOG ME IN„.

BoxBilling Login admin

Jetzt siehst du das Boxbilling-Admin-Dashboard wie unten abgebildet.

Boxbilling Admin Dashboard

Fazit

Herzlichen Glückwunsch! Du hast nun BoxBilling mit PHP-FPM, Nginx und MariaDB auf dem neuesten Debian 11 Bullseye installiert. Du kannst es jetzt als kostenlose, zentrale Einkaufsverwaltung für deine Kunden und Klienten nutzen.

Das könnte dich auch interessieren …