Archiv der Kategorie: Server

Shell: Debian/Raspian booten zur Console

Wer Raspberry OS (ehemals Raspian) installiert hat, landet nach dem Boot-Vorgang auf dem Desktop. In diesem Fall kann eine Console geöffnet werden und mit „sudo raspi-config“ das Konfigurationsprogramm aufgerufen werden (1 System Options > S5 Boot / Auto Login). Dort lässt sich einstellen, dass nach dem Booten die Console und nicht der Desktop angezeigt wird.

In Debian gibt es kein „sudo raspi-config“, wohl aber eine Möglichkeit das Booten zur Console als Standart einzustellen:

sudo systemctl set-default multi-user.target

Von der Console kann mit „startx“ X-Windows gestartet werden. Den aktuellen Zustand erhält man mit:

systemctl get-default

Um zurück zum grafischen Modus (Desktop) zu gelangen wird folgendes eingegeben:

sudo systemctl set-default graphical.target

Git: Deploy Repo auf Webserver ohne .git-Files

Wer sein Projekt in einem Git-Repository verwaltet, kann Git nutzen, um die Dateien via Git auf den Webserver zu übertragen. Wird ein einfaches „git clone“ genutzt, dann befinden sich die Meta-Dateien von Git auf dem Webserver (.git-Verzeichnis) und geben Hackern & Co. Angriffsvektoren.

Wer jetzt nicht Tools wie Jenkins etc einsetzen will, kann mit Git aber trotzdem ein sicheres Deployen ermöglichen. Dazu wird auf dem Webserver ein „bare“ Repo (nacktes Repo) angelegt und über einen post-receive-Hook festgelegt, wo die Dateien ausgecheckt werden sollen.

Lokaler Rechner = Workstation zum Entwickeln, Remote Server = Webserver, wo die Dateien ausgecheckt werden sollen (im DOCUMENT_ROOT).

Annahme: Das „bare“-Repo soll in einem Homeverzeichnis untergebracht werden (/home/user/production.git). Die Pfadendung .git soll hier anzeigen, dass sich in diesem Ordner das Repo befindet. Es könnte auch in einem Ordner ausserhalb des DOCUMENT_ROOT liegen (zB /var/repo). Der Webserver DOCUMENT_ROOT soll /var/www/production sein. Der Name des Webserver-Users ist „user“, die Gruppe „users“.

Remote (myserver.de):

$ mkdir production.git
$ cd production.git
$ git init --bare
$ cd hooks
$ nano post-receive

#!/bin/sh
git –work-tree=/var/www/production –git-dir=/home/user/production.git checkout -f master

Dateiinhalt: /home/user/production.git/hooks/post-receive
$ chmod +x post-receive
# Der Hook muss ausführbar sein.
$ mkdir  /var/www/production
$ chown -R user:users /var/www/production
# Das Verzeichnis muss von dem User beschrieben werden können.

Lokal (Workstation, mit existierendem Repo „production“):

$ cd /home/localuser/production
$ git remote add web ssh://myserver.de/home/user/production.git

„web“ ist in diesem Fall der frei gewählte Name des remote Repos. Mit „git push web master“ wird nun eine Änderung in den Master-Branch des „web“-Repos gepusht. D.h in myserver.de/home/user/production.git befinden sich die Dateien für Git (vergleichbar dem lokalen Ordner /home/localuser/production/.git/) – aber nicht die Verzeichnisstruktur für den Webserver. Diese Dateien werden nach dem Push über den Git-Hook „post-receive“ in den Work-Tree kopiert (/var/www/production)

Shell: Lokaler Webserver ohne Apache2/nginx mit Python, PHP oder node js

manchmal soll auf die Schnelle eine HTML- oder Javascript-Datei getestet werden, ohne das ein Webserver im System installiert ist (zB Apache2 oder nginx). Abhilfe können hier Python, PHP oder node js als installierte Skript-Sprachen bieten.

PHP (muss installiert sein):
In den Ordner wechseln, in dem die ausführbaren Datein liegen (zB index.php oder index.html). Hier wird der eingebaute Server (-S, grosses „s“) für Port 8000 aufgerufen.

php -S localhost:8000

Python (muss installiert sein, Annahme: Python3):
In den Ordner wechseln, ind em die ausführbaren Datein liegen (zB main.py oder index.html).

python -m http.server 8000 --bind 127.0.0.1

Python ruft hier das http.server Modul auf, verbindet es mit Port 8000 und bindet es an die lokale IP 127.0.0.1 (sonst wären auch Zugriffe mit anderen IP’s möglich)

node js (muss installiert sein):

npm install -g http-server
http-server

Npm ist der Paket-Amanager von node js und wird mit diesem installiert. Die Zeile „npm install ..“ muss natürlich nur beim ersten Mal aufgerufen werden, um das http-server Paket zu installieren. Danach wird in den ordenr mit den auszuführenden Dateien gewechselt und „http-server“ aufgerufen.

Shell: Fehlendes Floppy-Laufwerk /dev/fd0 spammt Logs

Wenn das Kernelmodul „floppy“ geladen ist, aber kein Floppy-Drive vorhanden ist, werden die Logfiles gespammt (dmesg, syslog, je nach Konfiguration). Einträge sehen etwa folgendermassen aus:

dmesg:
[1016164.312385] end_request: I/O error, dev fd0, sector 0
[1016164.313839] floppy: error -5 while reading block 0

syslog:
May 12 07:20:21 server1 kernel: end_request: I/O error, dev fd0, sector 0
May 12 07:20:21 server1 kernel: floppy: error -5 while reading block 0

Die Lösung ist das Entfernen des floppy-Kernelmoduls und blacklisten desselbigen für den nächsten Reboot (Root-Rechte erforderlich).

# echo "blacklist floppy" | sudo tee /etc/modprobe.d/blacklist-floppy.conf
# rmmod floppy
# update-initramfs -u

Linux: Thin-Client als Server und Raspberry-Ersatz

Preiswerter und flexibler als ein Raspberry-Pi: Thin-Client als Server.
Thin-Clients sind derzeit für kleines Geld zu bekommen (zB: itniederrheinshop.de für unter 20 EUR)

Fujitsu Futro S900 AMD G-T40N 1 GHz, AMD Radeon HD6250:

  • Gigabit Ethernet
  • 2 GB DDR3-RAM
  • mSata-Slot 2 GB (reicht für minimales System)
  • Sata-Anschluß (allerdings wird ein spezielles Sata-Stromkabel benötigt)
  • wake-on-lan, wake-on-clock
  • Passive Kühlung = keine Geräusche / Verschleiß
  • geringer Stromverbrauch
  • Smartcard-Slot kann ausgebaut werden und bietet dann 2,5″ SSD Platz
  • DVI und Display-Port Videoanschluß

USB-Stick mit Debian 10 Netinstall vorbereiten und vom Stick booten (F2=Bios, F12=Bootmenu). Als Desktop-Umgebung wurde LXQT gewählt (Nachfolger von LXDE). Sinnvolles Paket: SSH-Server, Print-Server. Speicherverbrauch im Ruhebetrieb mit Desktop: 331 MB.

Nach der Installation ist die Auflösung allerdings sehr beschränkt, weil der Radeon-Grafiktreiber fehlt. Das lässt sich schnell abstellen:

Eintragen der non-free und contrib Pakete für apt:

# nano /etc/apt/sources.list

deb http://deb.debian.org/debian/ buster main non-free contrib
deb-src http://deb.debian.org/debian/ buster main non-free contrib

deb http://security.debian.org/debian-security buster/updates main contrib non-free
deb-src http://security.debian.org/debian-security buster/updates main contrib non-free

# apt update

# apt install firmware-linux-nonfree libgl1-mesa-dri xserver-xorg-video-ati

Nach dem Reboot steht die WUXGA-Auflösung bis 1920×1200 zur Verfügung.

Spar-Tipp:
Kostengünstige Speicheraufrüstung: Man kauft sich beim gleichen Händler noch einen HP-T510 Thin-Client. Der hat zwar nur 1 GB IDE-Flashspeicher, verfügt aber über 4 GB DDR3-RAM und kostet ebenfalls unter 20 EUR.
Für das Geld bekommt man keinen 4 GB Speicherriegel. Wer dann noch einen USB-Stick > 4 GB rumliegen hat, kann den HP-Rechner mit dem 2 GB aus dem Futro bestücken und hat ein zweites (schwächeres) System mit Gigabit-Ethernet.

Der HP hat übrigens ebenfalls Auflösungsprobleme (max. Auflösung 1024×768), was durch Installation von xserver-xorg-video-openchrome behoben werden kann.

Nachtrag:

Funktioniert auch beim leistungsstärkeren Modell Futro S920, was durch die 4 Threads und mehr Speicher als Server für Homeautomation geeeignet ist (MQTT, Node-Red, Influxdb2)