Webserver Setup am Raspberry Pi

Folgende Schritte sind durchzuführen, damit dein eigenes Bestellsystem funktioniert.

Falls du die Standard-Installation wählen willst, dann schau doch zuerst bei den ersten Schritten nach!

Installation über das beigelegte Raspberry Image

Die einfachste Möglichkeit das System zum Laufen zu bekommen ist das image.zip zu eintpacken und via Balena Etcher auf deine Karte zu spielen. Das Image funktioniert zumindest am Raspi 3B, 4 und 4B.

Alle System-Passwörter sind hier “orderjutsu“. Du kannst die Passwörter nach dem ersten Login folgend umstellen:

# Login am raspberry mit pi@192.168.192.10 mit dem Passwort "orderjutsu"
sudo -i
echo "dein_neues_passwort_fuer_alles" | tee /boot/password.txt
/opt/boot_password.sh
Url: http://192.168.192.10
Benutzername: admin@orderjutsu.local
Passwort: admin
Web-App: http://192.168.192.10/app/ (funktioniert auch mit iOS)
Android: http://192.168.192.10/app.apk 

Nach dem Entpacken musst du das Automatische-Update durchführen um die aktuellste Version am System zu haben.


Du brauchst ein grundlegendes Verständnis von Linux und die Fähigkeit, einen Text-Editor wie nano oder vi zu nutzen um dieser Anleitung zu folgen!

Hier sind alle Schritte nochmal genau beschrieben wenn du es per Hand installieren willst.

1. Installation des Betriebsystems

Nach diesem Schritt kannst du auf deinen optimierten Rapsberry per SSH mit Fixer IP verbinden.

Zuerst besorgt man das Installationsimage von Raspberry. Ich nehme das Raspian Lite Image von https://www.raspberrypi.org/downloads/raspbian/

Funktioniert auch sicher mit der Desktop Version, jedoch habe ich keinen Raspberry Bildschirm vor Ort und fange daher auch nichts damit an.

Dann brauchst du noch ein Imaging Tool. Ich nehme dafür Etcher auf meinem 64Bit Windows 10 PC. https://www.balena.io/etcher/.

Etcher ist intuitiver als das Win32DiskImager Tool, weil man eine Harddrive (also Platte oder SD-Karte) und nicht eine Partition mit Laufwerksbuchstabe aussucht.

Bei Etcher sucht man sich nach dem Image eine SD-Karte aus.

Das Schreiben dauert rund 2-3 Minuten und danach hast du auf einmal drei Partitionen in der Datenträgerverwaltung. Kann sein, dass du auch einmal die Karte aus- und einstecken musst.

Nach dem Schreiben des Images, hast du drei Partitionen auf der SD-Karte.

SSH aktivieren

In der neuen “boot” Parition der SD Karte, erstellst du jetzt ein File names ssh oder ssh.txt.

Damit kannst du dich einloggen.

Jetzt kannst du den Raspberry zusammenbauen und an deinen Router hängen. Ich preferiere LAN-Kabel. Du kannst die nächsten Schritte aber auch über WLAN oder per HDMI Kabel am Fernseher erledigen. Das musst du dann aber ergoogeln.

IP Addresse finden

Am leichtesten ist es, am Router nachzuschauen.

Der leichteste Weg führt über den Router.

Es gibt noch andere Wege, die IP zu finden. Du kannst gerne auf der Raspberry Seite nachlesen.

SSH Verbindung

Mit der IP startest du Putty und verbindest dich als User pi auf die IP. Das Standard-Passwort ist raspberry

Verbinden per Putty zum Raspberry per SSH.
Auf den nächsten Schritt wird schon hingewiesen.

Jetzt solltest du gleich das Passwort ändern, wie oben beschrieben mit dem Befehl passwd.

Wie du eine PPK-Autentifizierung ohne Passwort mit Putty machst, kannst du in meinem Blog nachlesen.

Jetzt configurieren wir den Raspberry noch ein wenig.

Fixe IP vergeben

Das File /etc/dhcpcd.conf steuert die Vergabe der IP. Enthalten ist eine Standardkonfiguration für statische IPs. Ich nutze immer das 192.168.192.1/24 Netz, weil die Drucker so ausgeliefert werden.

Bearbeiten kannst du das File als root mit sudo vi /etc/dhcpcd.conf. Wenn du vi nicht kannst, dann nimm nano oder sowas in der Art.

Die IP-Adressen Vergabe am Pi mit Raspbian ist am leichtesten im /etc/dhcpcd.conf File.

Sollte das gar nicht gehn, kannst du auch folgenden Command absetzen.

echo "interface eth0" | sudo tee -a /etc/dhcpcd.conf
echo "static ip_address=192.168.192.10/24" | sudo tee -a /etc/dhcpcd.conf
echo "static routers=192.168.192.1"  | sudo tee -a /etc/dhcpcd.conf
echo "static domain_name_servers=192.168.192.1"  | sudo tee -a /etc/dhcpcd.conf

Den Raspberry tunen mit raspi-config

Zuerst wechselst du den Benutzer mit sudo -i.

Den Benutzer zu root wechseln.

Jetzt kannst du mal das System updaten mit apt update und apt upgrade -y. Ist nie verkehrt und dauert nur ein paar Minuten. Kommt zwar im zweiten Teil dazu, aber auch System Pakete sollten aktuell sein.

Mit dem Command raspi-config stellst du gleich mal zwei Sachen um.

  1. Advanced OptionsExpand Filesystem – geht von selber
  2. Advanced OptionsMemory Split – hier reichen 4MB
  3. Network OptionsN1 Hostname – orderjutsu.local

Dann mal restarten und schauen ob alles passt.

2. Installation der Webserver-Komponenten

Wenn dieser Schritt erledigt ist, ist dein Raspberry für Orderjutsu bereit und optimiert. Danach wirst du die Software installieren.

Login via SSH am Raspberry und Wechsel zum root user mit sudo -i und dann kommen nach der Reihe diese Befehle.

sudo -i

Und jetzt beginnt die eigentliche Installation…

apt update

export DEBIAN_FRONTEND="noninteractive"
 
echo "postfix postfix/mailname string orderjutsu.local" | debconf-set-selections 
echo "postfix postfix/main_mailer_type string 'Internet Site'" | debconf-set-selections


# PHP Version for Raspian Buster 7.1, stretch 7.0, 
PHP_VERSION=7.4
 
apt install -y nginx nginx-extras \
    php$PHP_VERSION-cli php$PHP_VERSION-fpm  php$PHP_VERSION-xml php$PHP_VERSION-soap \
    php$PHP_VERSION-curl php$PHP_VERSION-mbstring php$PHP_VERSION-zip php$PHP_VERSION-gd \
    php$PHP_VERSION-mysql php$PHP_VERSION-common \
    postfix mailutils \
    mariadb-server mariadb-client
 
apt update
apt -y upgrade
sed -i -e 's/^mydestination.*/mydestination = localhost/' /etc/postfix/main.cf
systemctl restart postfix
echo
echo "[mysqld]
bind-address = 0.0.0.0
innodb_flush_log_at_trx_commit = 2
sql_mode=" | tee /etc/mysql/mariadb.conf.d/99-orderjutsu.cnf
systemctl restart mysql
echo

Und jetzt musst du noch composer installieren, das geht so…

 
EXPECTED_SIGNATURE="$(wget -q -O - https://composer.github.io/installer.sig)"
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
ACTUAL_SIGNATURE="$(php -r "echo hash_file('sha384', 'composer-setup.php');")"

if [ "$EXPECTED_SIGNATURE" != "$ACTUAL_SIGNATURE" ]; then
    echo 'ERROR: Invalid installer signature';
    rm composer-setup.php
else
    php composer-setup.php
    rm composer-setup.php
    mv composer.phar /usr/local/bin/composer
fi
echo

Das war es eigentlich schon. Es sollte immer alles irgendwie OK und grün sein. Wenn du die vorgeschlagene IP genommen hast, kannst du jetzt auf http://192.168.192.10 den Nginx-Welcome-Screen sehen.

3. Installation Orderjutsu

Nach diesem Schritt ist Orderjutsu installiert und du kannst mit der Konfiguration einer Veranstaltung beginnen.

Da ich persönlich es für überaus unklug halte, alle Webseiten als www-data auszuführen, legen wir lieber einen neuen User an, der dann als Orderjutsu fungiert und mit dem wir uns dann in weiterer Folge einloggen.

Ich hab dafür ein eigenes Script, das ich eigentlich immer nutze. Das ladest du mit den nächsten Commands runter und führst es gleich aus. Man kann das alles per Hand schreiben, aber das braucht dich alles nicht zu interessieren.

# vorher noch die standardseite löschen
rm /etc/nginx/sites-enabled/default

sudo wget -O /usr/local/bin/ran_useradd https://git.rent-a-ninja.org/snippets/1/raw
sudo chmod +x /usr/local/bin/ran_useradd
sudo ran_useradd orderjutsu.local
echo
Setup für einen neuen User mit Datenbank und Passwort.

Das Passwort brauchst du gleich, also notier es dir auf.

Du kannst jetzt auch schon mit SFTP (über Filezilla) auf den Webspace mit den Daten zugreifen.

Nimm jetzt dein erworbenes Orderjutsu.zip und extrahiere es irgendwo hin. Dann ersetze den Inhalt unter /var/www/vhosts/orderjutsu.local/httpdocs auf dem Server mit dem Inhalt des Zips. Bitte vergiss nicht, dies als orderjutsu User zu machen. Sonst hast du später ein Dateirechte-Problem.

Per SFTP kannst du nun den Inhalt des Zip auf den Raspberry kopieren.

ACHTUNG: Auch neue SD Karten können defekt sein. Wenn beim Hochladen der Dateien Fehler auftauchen, könnte es an einer fehlerhaften SD Karte liegen! Versuch bitte zur Sicherheit eine andere Karte.

Du solltest dich jetzt als orderjutsu mit dem vorher notierten Passwort via Putty einloggen und folgendes durchführen.

# ich gehe davon aus, dass du dich jetzt als orderjutsu angemeldet hast.
cd httpdocs
cp .env.example .env
sed -ne 's/password=\(.*\)/DB_PASSWORD=/p' ~/.my.cnf  | tee -a ~/httpdocs/.env
chmod +x update.sh
composer install
php artisan key:generate
php artisan config:clear
echo
Dann installierst du mal alles, das dauert ein bisschen.

Soweit so gut. Jetzt hast du mal die Software installiert. Kümmere dich nicht um irgendwelche “Software-Vorschläge” oder sonstige Warnungen. Jetzt wird die Datenbank aufgesetzt. Dank Laravel ist das ein recht einfacher Prozess.

php artisan migrate --force --seed
Das Ergebnis sollte irgendwie so aussehen.

Damit ist dein ganz persönliches Orderjutsu einsatzbereit und mit einem Fest vorinstalliert.

4. Administration

Jetzt kannst du dich einloggen:

Url: http://192.168.192.10
Benutzername: admin@orderjutsu.local
Passwort: admin
Web-App: http://192.168.192.10/app/ (funktioniert auch mit iOS)
Android: http://192.168.192.10/app.apk 

DokumentationWebserver Setup am Raspberry Pi