Geräte IP im Netzwerk finden

Du stöpselst deinen Raspberry Pi im Netzwerk ein und möchtest mit diesem nun kommunizieren. Dazu musst du Dein Netzwerk mittels nmap durchsuchen um die IP Adresse vom Raspberry Pi herausfinden. Selbstverständlich geht das mit jedem Gerät, welches im Netzwerk gefunden werden muss.

1. Installiere nmap

# apt install nmap

2. eruiere deine IP im Netzwerk mit ip address:

$ ip address
(...)
2: eno1: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
    inet 192.168.1.16/24 brd 192.168.1.255 scope global dynamic noprefixroute eno1
       valid_lft 76924sec preferred_lft 76924sec
(...)

3. scanne nun dein Netzwerk. Gib am Ende deiner IP eine Null (0) ein. Dann wird das gesamte lokale Netzwerk gescannt:

# nmap -sn 192.168.1.0/24

4. Stecke oder starte erst jetzt deinen Raspberry Pi und scanne das gesamte Netzwerk noch einmal:

# nmap -sn 192.168.1.0/24
Starting Nmap 7.95 ( https://nmap.org ) at 2025-09-11 13:36 CEST
(...)
Nmap scan report for 192.168.1.137
Host is up (0.0070s latency).
MAC Address: 2C:CF:67:2F:F2:6F (Raspberry Pi (Trading))
(...)

5. Die gesuchte IP vom Rapsberry Pi lautet hier: 192.168.1.137

qemu – blitzschnelle Virtualisierung

Das Paket qemu ermöglicht die Virtualisierung von einem weiteren Betriebssystem. Installiere auf deinem Debian das Paket mit:

# apt install qemu-system

Erstelle eine virtuelle Festplatte. Achte auf die korrekte Pfadangabe, wohin qemu die IMG-Datei ablegen soll. In diesem Beispiel wird ein Linux Mint installiert und sinngemäss heisst das Festplattenimage linuxmint.img:

$ qemu-img create -f qcow2 /pfad/zur/Datei/linuxmint.img 30G

Starte das System. Das aktivieren vom KVM mittels -enable-kmv führt zu einer verbesserten Performance. Im Befehl ist ebenfalls die ISO-Datei vom Betriebssystem anzugeben (hier Datei.iso), welches installiert werden soll:

$ qemu-system-x86_64 -enable-kvm -hda /pfad/zur/Datei/linuxmint.img -cdrom /pfad/zur/Datei.iso -boot d -m 8G -smp 8

Nach der Installation wird das Image ohne die Boot-Angaben gestartet. Der Befehlt kann auch als Starter angelegt werden. Somit kann das virtualisiere Betriebssystem mit einem Mausklick gestartet werden:

$ qemu-system-x86_64 -enable-kvm -hda /pfad/zur/Datei/linuxmint.img -m 8G -smp 8
  • qemu-system-x86_64 = qemu emuliert die x86_64 Architektur
  • -enable-kvm = schaltet KVM ein
  • 8G = entspricht dem RAM-Speicher in GB
  • -smp 8 = entspricht der Anzahl CPU-Kernen
Linux Mint in Debian. Die Virtualisierungssoftware qemu ermöglicht einen flüssigen Betrieb.

Apache: zweite Domain mit eigenem document-root

Ziel dieses Tutorial ist eine weiter Domain oder Subdomain (dev.example.com) mit eigenem DocumentRoot dem Webserver Apache hinzufügen.

01. Backup erstellen
Mach ein Backup von /etc/apache2

# cp -r /etc/apache2 /var/backups/apache2_original

Falls nachträglich etwas schief geht, kannst du das Backup unter /var/backups/apache2_original jederzeit wieder einspielen!

02. DocumentRoot erstellen
Normalerweise befindet sich DocumentRoot auf /var/www/html falls keine eigenen Regeln vergeben wurden. Wir erstellen nun einen Ordner unter /var/www/html, welcher auf die neue Webseite zeigt:

# mkdir dev.example.com

03. Seiten unter /etc/apache2 definieren
Unter /etc/apache2/sites-available erstellen wir nun zwei weitere Dokumente, welche auf die neue Domain oder Subdomain verweisen. Eine Datei verweist dabei auf VirtualHost *:80 und eine auf VirtualHost *:443. Aktiviere nach dem Erstellen der beiden Dateien die virtuellen Hosts mit a2ensite dev.example.com. Dieser Befehl macht nicht anderes, als die beiden Dateien nach /etc/apache2/sites-enabled zu kopieren. Dies kann auch manuell erledigt werden. Am Ende den Webserver noch neu starten:

<VirtualHost *:80>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/dev.example.com

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

RewriteEngine on
 RewriteCond %{SERVER_NAME} = dev.example.com
 RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,NE,R=permanent]
</VirtualHost>
<IfModule mod_ssl.c>
<VirtualHost *:443>

        ServerAdmin webmaster@localhost
        DocumentRoot /var/www/html/dev.example.com

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

ServerName dev.example.com
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateFile /etc/letsencrypt/live/dev.example.com/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/dev.example.com/privkey.pem

</VirtualHost>
<IfModule>
Dieses File benötigen wir einmal für den VirtualHost:443 und einmal für VirtualHost:80 unter sites-available und sites-enabled – also insgesamt vier Mal. Es reicht jedoch, die Dokumente unter sites-available zu erstellen und danach mittels cp nach sites-enabled zu kopieren.

04. example.com und dev.example.com haben nun separate DocumenRoot

hier am Beispiel mit meiner Testdomain jirah.ch und dev.jirah.ch. Falls du ein SSL-Zertifikat benötigst, müssen die DNS Einträge auf den Server (IP) zeigen.

LVM in Debian

LVM bietet unter Debian die fatastische Möglichkeit, Volumes im laufenden Betrieb zu erstellen, formatieren und einzuhängen. Mit Ausnahme des root Systems, können somit alle Volumes verkleinert oder vergrössert werden. Das root System kann im Nachhinein nur mit einem Live-System oder im rescue-Modus verkleinert oder vergrössert werden.

Wichtiger Schritt bei der geführten Partitionierung mittels LVM. Hier wählen wir die Grösse unseres root-Dateisystems. Es macht durchaus Sinn, nur einen kleinen Teil des gesamten Volumes zu verwenden. Alles Anderes kann im Nachhinein erstellt, formatiert und eingehängt werden.

Ist die Installation durch und der Server neu gestartet zeigen wir uns mit lvs alle Volumes an:

# lvs
  LV     VG            Attr       LSize   Pool Origin Data%  Meta%  Move Log Cpy%Sync Convert
  root   example-vg -wi-ao----  <8.36g                                                    
  swap_1 example-vg -wi-ao---- 976.00m

freien Speicherplatz auf der Volumgruppe finden wir mit:

# vgdisplay | grep Free
Free  PE / Size       7259 / <28.36 GiB

in diesem Beispiel stehen uns noch rund 28 GB freier Speicher zu Verfügung. Mittels lvcreate erstellen wir hier ein Volume mit dem Namen volume1 auf der Gruppe example-vg, formatieren dies als ext4 und hängen es unter /mnt ein:

# lvcreate -l 100%FREE -n volume1 example-vg
# mkfs.ext4 /dev/example-vg/volume1
# mount /dev/example-vg/volume1 /mnt

das Volume ist nun unter /mnt eingehängt:

# df -h | grep volume1
/dev/mapper/example--vg-volume1   28G     24K   27G    1% /mnt

Um das Volume permanent einzuhängen muss es unter /etc/fstab eingetragen werden.

Ein paar Beispiele:
Falls dein Server ein rescue-Modus hat, aktiviere diesen. Es ist wesentlich angenehmer, mit einem Live-System oder im rescue-Modus auf dem Server zu arbeiten, wenn Volumes verkleinert oder vergrössert werden müssen. Wird ein Volume vergrössert, muss es danach formatiert werden um den neuen Speicherplatz auch nutzen zu können. Dabei gehen alle Daten verloren. Sei also vorsichtig!

«Logical volume must be activated before resizing filesystem»
Falls diese Meldung erscheint, aktiviere zuerst das LV. Hier am Beispiel mit example-vg/root:

# lvchange -a y /dev/example-vg/root

SWAP auf 2GB vergrössern und anschliessend formatieren:

# lvresize -L 2GB /dev/example-vg/swap_1
# swapoff -a
# mkswap /dev/example-vg/swap_1
# swapon /dev/example-vg/swap_1

beanspruche allen freien Speicherplatz für volume und formatiere als ext4

# lvcreate -l 100%FREE -n volume example-vg
# mkfs.ext4 /dev/example-vg/volume

Das root-Volume auf 4GB reduzieren:

# lvreduce --resizefs -L 4GB /dev/example-vg/root

Lebensretter Live-System

Falls du es noch nicht hast, hol es dir! Ein Live-System von Debian auf einem USB-Stick. Lade das *.iso-File hier herunter und schreibe es auf einen leeren USB-Stick:

 dd if=/pfad/zum/isofile/debianlive.iso of=/dev/sdX

Ab jetzt kannst du vom USB-Stick booten. Hier an einem Beispiel, wo eine LVM neu verteilt wurde. Überhaupt ist ein Live-System ein absolutes «Must To Have». Achte auf die richtige Bezeichnung für deinen USB-Stick (hier sdX).

Live-System von Debian

Aktivieren der Logfiles von MariaDB unter Debian

Von Hause aus wird in Debian kein log-File für MariaDB erstellt. Dies muss aktiviert werden:

01. Erstelle unter /var/log den Ordner mariadb

# mkdir /var/log/mariadb

02. Füge folgendes unter /etc/mysql/my.cnf ein:

# nano /etc/mysql/my.cnf

[mysqld]
log_error=/var/log/mariadb/mysqld.log

und starte den Dienst neu:

# systemctl restart mariadb

03. ab jetzt dokumentiert Debian die Loginversuche auf den Datenbankserver und gibt z. B. bei einem misslungenen Versuch

# less /var/log/mariadb/mysqld.log | grep Access
2025-05-08 17:36:12 31 [Warning] Access denied for user 'root'@'localhost'

aus

muss ich den Server neu starten?

Nicht nach jedem apt update und apt upgrade muss der Server neu gestartet werden. Steht jedoch ein Update vom Kernel an, muss der Server neu gestartet werden. In den Log-Files während des Update gibt es Anzeichen, wann ein Neustart unausweichlich wird. Dann stehen dort typische Infozeilen, welche sich auf den Linuxkernel beziehen wie:

I: /vmlinuz.old is now a symlink to boot/vmlinuz-6.1.0-31-amd64
I: /initrd.img.old is now a symlink to boot/initrd.img-6.1.0-31-amd64
I: /vmlinuz is now a symlink to boot/vmlinuz-6.1.0-32-amd64
I: /initrd.img is now a symlink to boot/initrd.img-6.1.0-32-amd64

oder sowas:

intel-microcode: microcode will be updated at next boot

Übrigens…
falls du dich fragst, warum oben vmlinuz und nicht vmlinux steht, hier die Erklärung:

The kernel binary on ancient AT&T versions was called ‚unix‘.
When Berkeley wrote a new kernel with virtual memory, they called it
‚vmunix‘. So naturally the Linux kernel is ‚vmlinux‘ and the
compressed version is ‚vmlinuz‘ as above.

multifunktionaler, bootbarer USB-Stick

Mit dem Linuxtool Ventoy lässt sich ein multifunktionaler, bootbarer USB-Stick erstellen. Auf dem Stick kann somit nicht nur eine ISO-Datei sondern gleich mehrere abgelegt werden.

1) Lade Ventoy herunter und entpacke die Datei

für Linux wähle die Datei mit der Endung tar.gz

 

2) Starte den Ventoy-Server
navigiere zum Ordner, wo Ventoy entpackt wurde und starte den Server:

# bash VentoyWeb.sh

===============================================================
  Ventoy Server 1.1.05 is running ...
  Please open your browser and visit http://127.0.0.1:24680
===============================================================

################## Press Ctrl + C to exit #####################

 

3) Navigiere im Browser nach: http://127.0.0.1:24680

Wähle das korrekte Laufwerk aus und klicke auf Install. Alle Daten auf den Stick gehen dabei verloren. Diesen Schritt muss insgesamt 2 x bestätigt werden, bevor Ventoy den Stick bootfähig beschreibt.

4) ziehe alle ISO-Dateien, welche du auf dem Stick haben möchtest auf den Stick

5) das wars auch schon. Wenn du jetzt vom Stick startest, kannst du die ISO-Dateien bootbar ausführen.

suchen und ersetzen innerhalb einer Datei

Suchen und ersetzen innerhalb einer Datei geht bequem via Kommandozeile. In diesem Beispiel möchten wir in der Datei datenbank.sql alle 192.168.1.1 durch example.com ersetzen, ohne die Datei in einem Editor zu öffnen.
Der allgemeine Syntax dazu lautet:

$ sed -i -e "s/(suchen)/(ersetzen)/" "(dateiname)"

Angewendet auf unser Beispiel wird dadurch:

$ sed -i -e "s/192.168.1.251/example.com/g" "DATENBANK.sql"

aus https://192.168.1.1 wird dann überall https://example.com. /g steht dabei für global und ersetzt alle Muster in der Datei.

Dateien nach Muster suchen und löschen

In diesem Beispiel entfernen wir unter dem Pfad /pfad/zum/ordner/ alle Dateinamen, welche das Muster «400x» enthalten.

$ ls
(...)
a-super-real-2dfdefa9-7bf6-4d4f-9b79-39b8dc68cdd4-400x250.jpeg
a-super-real-2dfdefa9-7bf6-4d4f-9b79-39b8dc68cdd4-400x284.jpeg
a-super-real-2dfdefa9-7bf6-4d4f-9b79-39b8dc68cdd4-400x516.jpeg
(...)

Abhilfe schafft hier der Befehl find, kombiniert mit rm:

find . /pfad/zum/ordner/ -name "*400x*" -exec rm {} \;

Damit sind alle Dateien gelöscht, welche dem Suchbegriff 400x entsprechen.