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.
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.
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!
Gib„Y“ 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!
Gib„Y“ 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.
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
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„.
Gib die Datenbank und den Benutzer für BoxBilling ein und klicke erneut auf die Schaltfläche„NEXT„.
Gib jetzt den neuen Admin-Benutzer, die E-Mail und das Passwort für BoxBilling ein und klicke auf„NEXT“.
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.
Du kannst zur Startseite von BoxBilling wechseln und siehst dort eine ähnliche Seite wie unten.
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„.
Jetzt siehst du das Boxbilling-Admin-Dashboard wie unten abgebildet.
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.