Wer ein preiswertes System lokal aufsetzen möchte, aber nicht die Instabilität und schlechte Leistung eines Raspberry Pi riskieren will, mag sich mal den Acepc T11 anschauen. Der T11 wird als Neuware zur Zeit (Stand September 2019) für 130 Euro (inkl. Windows 10) angeboten. Dieser lüfterlose Mini-PC ist nur unwesentlich größer als ein Raspi, kommt aber bereits mit einer eingebauten SSD und einem Netzteil daher. Vergleicht man die Kosten eines Raspis mit den erforderlichen Zusatzkosten für ein 3A-Netzteil und einer schnellen und SD-Karte mit dem Preis eines T11, so ist der kleine Aufpreis gut angelegt.

Wer gerne die Kontrolle über seinen Computer behalten und nicht von plötzlichen Updates überrascht werden möchte, kann den T11 auch mit Linux betreiben. Ich habe den T11 mit einem Linux Mint 19.1 und CentOS 8 getestet. Dabei wurde allerdings der WLAN-Adapter nicht erkannt. Dieses Problem scheint bekannt und es gibt im Internet verschiedene Forenbeiträge. Ich habe verschiedene Tipps erfolglos ausprobiert, aber dann die Lust auf weitere Forschung verloren und einen externen WLAN-Adapter (Edimax EW-7612UAn) angeschlossen, der sofort funktionierte. Alternativ kann man den T11 auch über ein Ethernet-Kabel direkt am Router anschließen, schließlich wird so ein Server sowieso eher stationär betrieben.

Acepc T11

Ein solcher Mini-PC als Server bietet sich immer an, wenn im Betrieb wenig Platz vorhanden ist und die Bedienung hauptsächlich über mobile Endgeräte erfolgen soll. Wer jedoch eine stationäre Kasse installieren möchte, wird vermutlich mit einem fest installierten Convertible oder Notebook, das die Funktion von Server und Bediengerät gleichermaßen übernimmt, glücklicher werden.

Ein kleiner Hinweis: Der Acepc T11 bootet nicht headless, d.h. der Minirechner erwartet, dass ein Monitor angeschlossen ist während des Bootvorgangs. Man kann jedoch ein HDMI Dummy Plug für unter 15 Euro kaufen, der dem Rechner vorgaukelt, es sei ein Monitor angesteckt.

CentOS auf dem T11

In diesem Abschnitt wird beschrieben, wie man den T11 zu einem schnellen OrderSprinter-Server macht, indem man auf den Rechner ein CentOS Linux-System aufspielt.

Vorbereitung

An dem kleinen Mini-PC müssen zunächst ein Monitor oder TV per HDMI-Kabel angeschlossen werden, dann ein mit einem CentOS-Iso vorbereiteter USB-Stick, zusätzlich eine Tastatur, eine Maus und ein Netzwerkkabel zwischen Router und T11.

Installation des Betriebssystems

Durch Drücken der Entfernen-Taste beim Einschalten kommt man ins BIOS und kann dort das Quiet Boot auf Disabled stellen, damit man auch etwas mehr sieht. Nach dem Speichern des Wertes und Neustarten des T11 kommt man durch Drücken von F7 in das Boot-Menü und kann dort den USB-Stick mit dem vorbereiteten CentOS auswählen.

Sobald der USB-Stick ausgewählt wird, wird man gefragt, ob man CentOS installieren möchte oder zusätzlich das Installationsmedium prüfen möchte. Ebenso gibt es erweiterte Möglichkeiten unter Troubleshooting (Installieren im Basic-Grafikmodus, oder Wiederherstellungsmaßnahmen).

Wählt man aus, dass man installieren möchte, so bootet ein Linux und es lassen sich in einer grafischen Benutzeroberfläche zunächst die Spracheinstellung vornehmen. Wenn man die Voreinstellung "Englisch" ändert und beispielsweise "Deutsch" auswählt, werden die folgenden Dialoge in einer bunten Mischung aus Deutsch und Englisch präsentiert. Die deutschen Übersetzungen von Begriffen, die man üblicherweise nur in Englisch kennt, ist oft sehr witzig, aber manchmal auch sehr unverständlich, so dass die Voreinstellung "Englisch" oft die bessere Wahl ist.

Dagegen macht es natürlich Sinn, die angeschlossene Tastatur im Dialog korrekt auszuwählen und auch die korrekte Zeitzone sollte man schon bei der Installation einstellen.

Im nächsten Schritt kann man die Installation genauer festlegen. Von Interesse ist vor allem die Softwareauswahl, die standardmäßig auf "Server mit GUI" eingestellt ist. Aus Performancegründen empfiehlt es sich, diese Einstellung zu ändern, denn eine grafische Oberfläche wird bei einem reinen Server nicht benötigt. Die Basisumgebung "Server" passt besser. Unter "Additional software for Selected Environment" sollte man "Headless Management" anhaken.

Unter "Netzwerk und Hostname" kann man dem Rechner nun einen Namen geben. Unter den Ethernet-Einstellungen könnte man nun auch viele weitere Einstellungen vornehmen (Wake On LAN usw.), aber diese Details sollen an dieser Stelle außen vor gelassen werden.

Da auf dem Rechner Windows 10 vorinstalliert ist, muss für die Betreiebssysteminstallation Plartz geschaffen werden: Die große nfts-Partitionen mmcblk0p3 kann man löschen, um genug freien Speicher zu haben.

Im nächsten Schritt wird man nach einem Root Password und dem Erzeugen eines neuen Benutzeraccounts gefragt.

Die eigentliche Installation ist der zeitintensivste Teil, denn er dauert etwa 15 Minuten.

Wenn man den Rechner aus der Ferne überwachen möchte, lässt sich als Root mit dem Kommando

systemctl enable --now cockpit.socket
die Web Console aktivieren. Diese ist dann über https://{Rechnername}:9090 erreichbar. Dabei ist zu bestätigen, dass man dem self-signed SSL-Zertifikat vertraut.

Web Console

Die Web Console zeigt wichtige Systeminformationen, z.B. die aktuelle Auslastung oder die Anzeige des Speichers:

Speicheranzeige in der Web Console

Ganz praktisch ist jedoch das Terminal:

Terminal in der CentOS Web Console

Allerdings ist auch SSH bereits aktiviert, so dass man z.B. von einem anderen Rechner per

ssh gastro@moon
auf den Rechner zugreifen kann. Nun soll der T11 als OrderSprinter-Server dienen, d.h. er muss einen Webserver mit PHP-Intepregter und eine Datenbank betreiben. Den Apache-Webserver kann man so installieren, aktivieren und über das Netzwerk erreichbar machen:
dnf install httpd
systemctl enable httpd
systemctl start httpd
systemctl status httpd
firewall-cmd --permanent --zone=public --add-service=http 
firewall-cmd --permanent --zone=public --add-service=https
firewall-cmd --reload

Apache-Installation und Start

Wenn man bereits jetzt versucht, die OrderSprinter-Instanz aufzusetzen, wird dies nicht funktionieren, weil SELinux sämtliche Zugriffe von PHP auf Dateien im html-Verzeichnis blockt (das sieht man recht gut auf der Webconsole unter "Protokolle"). Per sestatus erkennt man, dass SELinux aktiviert ist.

SE-Linux

In der Datei /etc/selinux/config lässt sich der Eintrag "SELINUX" auf "disabled" setzen. Das verringert zwar die Sicherheit, aber wir gehen davon aus, dass sich der Server in einem abgesicherten Netz befindet. Damit die Einstellung wirksam wird, muss man den Rechner neustarten.

shutdown -r now

Neben dem reinen Einbinden von PHP sind auch diverse PHP-Module zu installieren:

dnf install php php-mysqlnd php-pdo php-gd php-curl php-zip php-xml php-common php-json
systemctl restart httpd 

In den Anleitungen finden auf der Homepage finden sich viele Angaben, wie man die /etc/php.ini tunen sollte, damit die Installation auch bei großen Datenbeständen noch gut funktioniert.

Der wichtigste Bestandteil eines OrderSprinter-Servers ist die Datenbank:

dnf install mariadb-server mariadb
systemctl enable mariadb
systemctl start mariadb
systemctl status mariadb
mysql_secure_installation

Das letzte Kommando mysql_secure_installation ermöglicht das Setzen eines Root-Passwortes und das sichere Konfigurieren der Datenbank. Die Vorschläge sollte man ünbernehmen!

Die folgenden Schritte bestehen im Anlegen einer Datenbank und dem Erstellen eines Benutzers, der vollen Zugriff auf die Datenbank erhalten soll:

CREATE DATABASE ordersprinter
    -> DEFAULT CHARACTER SET utf8
    -> DEFAULT COLLATE utf8_general_ci;
GRANT ALL ON ordersprinter.* TO os@localhost IDENTIFIED BY "secret";

Nun kann man die OrderSprinter-Version downloaden, z.B. per wget mit anschließendem Entpacken und Kopieren des Inhalts des webapp-Verzeichnisses nach /var/www/html.

Wenn ein Auto-Update funktionieren soll, muss man dem Webserver die Möglichkeit geben, die Dateien unter /var/www/html zu beschreiben. Entweder setzt man die Eigentumsrechte auf den Webserver-Account oder gibt alle Rechte an alle Benutzer. Letzteres sollte man nur machen, wenn man den Webserver in einer gut abgesicherten Umgebung laufen lässt.

chown -R apache:apache /var/www/html/*
chmod -R 777 /var/www/html

Das Ausschalten des Mini-PC geschieht am besten über das Terminal der WebConsole.
Stefan Pichel, Januar 2020