Linux Debian 12 als Web Server installieren
Windows 10 wird nur noch bis Oktober 2025 von Microsoft unterstützt und Windows 11 läuft nicht auf der schon etwas älteren Hardware. Alten Laptop entsorgen? Für mich der Zeitpunkt sich wieder einmal mit Linux zu beschäftigen. Inzwischen gibt es ein fast unüberschaubare Anzahl von Linux Derivaten. Aber welche ist für meinen Zweck geeignet? Ich benötige keine grafische Oberfläche, da ich den alten Laptop (ein HP 250 G3 aus dem Jahr 2015 mit 4 GB Hauptspeicher) als Web Server im lokalen Netzwerk betreiben möchte. Letztendlich habe ich mich für Debian entschieden, da diese Linux Version auch auf dem Raspberry Pi eingesetzt wird.Download von Debian als ISO Datei. Aktuell (Februar 2025) ist die Version 12.9. Die ISO Datei ist ca. 632 MB groß. Mit einem geeigneten Tool (ich nutze Rufus) einen bootbaren USB Stick (alternativ eine CD/DVD) erstellen. USB Stick mit dem Laptop verbinden und diesen einschalten. Während des Startvorganges Esc drücken, um ins Bootmenü zu kommen. USB Stick auswählen und bestätigen.
- Im Startmenü Install wählen (nicht Graphical install).
Für Windows Nutzer etwas ungewohnt: Navigation mit Pfeiltasten, Tabulator-Taste, Leertaste und Enter-Taste. - Sprache German auswählen.
- Land Deutschland.
- Tastatur Layout Deutsch.
- Netzwerkeinrichtung: primäre Netzwerk-Schnittstelle auswählen (abhängig davon, ob der Laptop über ein RJ45 Kabel mit dem lokalen Netzwerk verbunden ist oder WLAN zum Einsatz kommen soll), hier: WLAN.
- Eigenes WLAN Netzwerk auswählen.
- WPA/WPA2 PSK auswählen.
- Zugangspasswort zum WLAN eingeben (WPA-Passphrase). Wird im Klartext angezeigt! Ist die WLAN erfolgreich hergestellt, erhält der Laptop vom lokalen Router über DHCP eine IP Adresse.
- Rechnername eingeben. Vorgeschlagen wird debian. Rechnernamen ändern oder übernehmen. Hinweis: der Rechnername wird in jeder Befehlszeile angezeigt. Ein kurzer Name ist daher empfehlenswert.
- Domain-Name bleibt leer (nur interessant wenn ein Web Server im Internet betrieben wird).
- Root-Passwort eingeben. root ist der Systemadministrator, der alle Rechte besitzt. Das Passwort sollte daher mindestens 8 Zeichen lang und komplex sein.
- Root-Passwort ein zweites Mal bestätigen.
- Jetzt wird noch ein Benutzerkonto für die alltägliche Arbeit mit eingeschränkten Rechten angelegt. Ich nutze als vollständigen Namen meinen Vornamen Uli. Natürlich ist auch eine Kombination aus Vorname und Nachname möglich.
- Benutzername eingeben. Auch hier nutze ich meinen Vornamen uli. In Linux üblicherweise in Kleinbuchstaben.
- Für den neuen Benutzer muss ebenfalls ein Passwort vergeben und im nächsten Schritt ein zweites Mal bestätigt werden.
- Im Anschluss muss die Festplatte partioniert werden. War vor der Linux Installation Windows installiert, muss zuerst über die Methode Manuell diese Partition gelöscht werden.
- Die erste lokale Festplatte erhält unter Linux den Namen sda. Der USB Bootstick sollte mit dem Namen sdb auftauchen.
- Empfehlung: alle vorhandenen Partitionen löschen. Dazu jede Partition auswählen und Die Partition löschen wählen. Anschließend sollte die komplette Festplatte als FREIER SPEICHER angezeigt werden (bei mir 500.1 GB).
- Geführte Partitionierung auswählen.
- Geführt - den größten freien Speicherbereich verwenden.
- Partitionierungsschema: Alle Dateien auf eine Partition ...
Es werden automatisch drei Partitionen angelegt: ESP, ext4 und Swap. - Partitionierung beenden und Änderungen übernehmen.
- Mit der Tabulator-Taste zu Ja wechseln und bestätigen. Vorsicht: letzte Chance hier abzubrechen, um alte Daten zu retten!
- Die Partitionen werden angelegt und das Basissystem wird installiert (das dauert mehrere Minuten). Die Wartezeit kann genutzt werden, um über den lokalen Access Point die IP Adresse des Laptops herauszufinden. Beispiel Fritz!Box: Heimnetz - Netzwerkverbindungen. Empfehlung: den Eintrag editieren und eine feste IP Adresse vergeben.
- Spiegelserver aussuchen. Deutschland bestätigen. Da mir die Geschwindigkeit der Spiegelserver nicht bekannt ist, bestätige ich deb.debian.org
- HTTP Proxy wird im lokalen Netzwerk nicht benötigt, kann leer bleiben.
- An der Paketverwendungserfassung teilnehmen? Nein.
- Softwareauswahl (jeweils mit Leertaste aktivieren/deaktivieren)
- Entfernen: Debian desktop environment
- Entfernen: GNOME
- Installieren: web server
- Installieren: SSH server (für den Remote Zugriff von z.B. einem Windows PC)
- Letzter Schritt: Installation abschließen. Vor der Bestätigung den USB-Stick entfernen
Nach dem Neustart des Computers meldet sich das Betriebssystem mit:
debian login:
Eine Anmeldung mit dem Systemadministrator Konto root oder dem im Rahmen der Installation angelegten Benutzer uli ist jetzt möglich.
Alternativ ist auch die Anmeldung von einem Windows Computer mit einem SSH Client möglich. Ich nutze dafür PuTTY. Die Verbindung erfolgt entweder über die IP Adresse (z.B. 192.168.0.10) oder den Rechnernamen debian (siehe oben). Beim erstmaligen Zugriff erscheint eine Sicherheitswarnung, die mit Accept bestätigt wird. Die Anmeldung erfolgt mit dem Benutzer uli. Aus Sicherheitsgründen ist eine Anmeldung über SSH mit dem Systemadministrator root deaktiviert.
uli@debian's password:
Linux debian 6.1.0-31-amd64 #1 SMP PREEMPT_DYNAMIC Debian 6.1.128-1 (2025-02-07)
x86_64
The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.
Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
uli@debian:~$
System aktualisieren
Grundsätzlich ist es immer empfehlenswert das Betriebssystem und die Anwendungen aktuell zu halten. Mit dem über SSH angemeldeten Benutzer uli ist das nicht möglich. Es werden root Berechtigungen benötigt. Folgende Optionen sind möglich:
- Anmeldung am Linux Computer mit dem Systemadministrator Konto root.
- Über SSH und dem angemeldeten Benutzer uli durch Eingabe von su (Bestätigen und root Passwort eingeben).
- Mit dem angemeldeten Benutzer uli und der Eingabe von sudo vor jedem Befehl. Mit sudo werden Befehle mit den Berechtigungen des Systemadministrators root (oft auch Superuser genannt) ausgeführt. Das Problem: sudo ist nicht verfügbar (siehe unten)
Passwort:
root@debian:/home/uli# apt update
OK:1 http://security.debian.org/debian-security bookworm-security InRelease
OK:2 http://deb.debian.org/debian bookworm InRelease
OK:3 http://deb.debian.org/debian bookworm-updates InRelease
Paketlisten werden gelesen… Fertig
Abhängigkeitsbaum wird aufgebaut… Fertig
Statusinformationen werden eingelesen… Fertig
Alle Pakete sind aktuell.
root@debian:/home/uli#
In diesem Fall ist nichts zu tun. Alle Pakete sind aktuell. Sollten Pakete zur Aktualisierung anstehen, erreicht man das mit:
Durch Eingabe von exit wird man wieder zum "normalen" Benutzer.
exit
uli@debian:~$
Web Server
Bei der Installation von Debian wurde auch web server ausgewählt. Installiert wurde der Apache Web Server - einer der am weitesten verbreiteten Web Server weltweit. Dieser Web Server steht bereits zur Verfügung. Das lässt sich einfach durch Eingabe der IP Adresse in einem Browser überprüfen:

In welchem Verzeichnis finde ich den Quellcode?
Das Standard Verzeichnis ist hier zu finden: /var/www/html
ls
index.html
cd (change directory) wechselt in das gewünschte Verzeichnis, ls (list) zeigt den Inhalt des Verzeichnisses an. Es existiert aktuell nur die Startseite index.html. Wird im Browser eine Adresse angegeben (hier: 192.168.0.10), sucht Apache automatisch nach einer Datei mit dem Namen index.html. Ist diese vorhanden, wird der HTML Code an den Browser übertragen. Besitzt diese Datei einen anderen Namen, muss dieser in der Adresse angegeben werden, z.B. http://192.168.0.10/startseite.html.
Damit der Benutzer uli HTML Dokumente bearbeiten kann, müssen die Berechtigungen angepasst werden. Zuerst wird der Eigentümer mit chown (change owner) geändert. Für diese Aufgabe sind root Rechte erforderlich!
Der Eigentümer der bereits existierenden Datei index.html ist allerdings noch root. Der Benutzer uli kann diese Datei nicht bearbeiten.
-rw-r--r-- 1 root root 10701 12. Feb 11:04 index.html
chmod ug+rwx index.html
In der ersten Zeile wird der Eigentümer der Datei index.html geändert. Die zweite Zeile ändert die Berechtigungen für Eigentümer uli und Gruppe uli auf Lesen (r) und Schreiben (w). Die Berechtigungen anderer Benutzer (o = other) bleiben auf r.
Viele dynamische Webseiten werden mit der Scriptsprache PHP programmiert. Ein ganz einfaches PHP Script soll einen Text am Browser ausgeben. Dazu muss eine PHP Datei mit einem Texteditor (z.B: nano) erstellt werden.

echo "Hello world";
?>
PHP Code im Quellcode wird eingebettet in <?php und ?>. Der eigentliche PHP Code besteht also nur aus einer Zeile: echo "Hello world"; und gibt den Text Hello world am Browser aus.
Quellcode speichern ([Strg]+X, mit J bestätigen). Im Browser die Adresse 192.168.0.10/test.php eingeben und bestätigen. Das Browserfenster bleibt aber leer. Warum? Die Erklärung ist einfach: PHP steht noch nicht zur Verfügung und muss erst installiert werden (Version 8.2).
Anschließend den Web Serer neu starten:
/etc/init.d/apache2 start
Im Browser liefert 192.168.0.10/test.php jetzt das gewünschte Ergebnis und gibt "Hello world" aus.
Sehr hilfreich ist ein sehr einfaches Script, das umfangreiche Informationen zu PHP und dem Apache Server ausgibt:
echo phpinfo();
?>
Anpassungen am Apache2 Web Server können über die Konfigurationsdatei /etc/apache2/apache2.conf vorgenommen werden. Die Apache2 Logfiles liegen in /var/log/apache2.
Von Windows auf das Dateisystem von Linux zugreifen
Eine Methode, die unter Linux immer möglich ist, ist FTP (File Transfer Protocol). Entwickelt man Internetseiten mit HTML oder PHP, wäre es viel einfacher über den Windows Explorer auf das Dateisystem von Linux zuzugreifen. Genau für diesen Zweck wurde Samba entwickelt, das erst einmal installiert werden muss:
Die Samba Konfigurationsdatei ist umfangreich. Es ist einfacher diese umzubenennen und eine neue Datei anzulegen.
nano /etc/samba/smb.conf
workgroup = smb
security = user
map to guest = Bad Password
[homes]
comment = Home Directories
browsable = yes
read only = no
create mode = 0750
[www]
path = /var/www/html/
public = yes
writable = yes
comment = smb share
printable = no
guest ok = yes
Datei speichern, anschließend den Samba Service neu starten und optional Status abfragen.
systemctl status smbd.service
Jetzt müssen wir noch einen Samba User hinzufügen.
New SMB password:
Retype new SMB password:
Added user uli.
Aus einer Windows Umgebung heraus kann jetzt über die Eingabeaufforderung auf den Share zugegriffen werden:
Samba User und Passwort eingeben. Alternativ über den Windows Explorer mit der rechten Maustaste auf Netzwerk klicken und Netzwerklaufwerk verbinden... auswählen:


Aus Sicherheitsgründen sollte man Anmeldedaten nicht speichern. In einer Testumgebung ist das allerdings vertretbar.
sudo installieren und konfigurieren
Bereits zu Beginn des Artikels wurde der sudo Befehl erwähnt, der es einem Benutzer mit eingeschränkten Rechten ermöglicht, Befehle auszuführen, die Systemadministratorrechte (root) erfordern. In vielen Linux Distributionen ist sudo bereits enthalten, hier muss der Befehl erst installiert werden.
Damit der Benutzer uli auch sudo nutzen kann, müssen noch Berechtigungen vergeben werden.
sudo kann jetzt genutzt werden, allerdings muss jedes Mal das Passwort eingegeben werden. Das kann in der Konfigurationsdatei /etc/sudoers geändert werden. Die Datei kann nicht direkt editiert werden. Zum Ändern wird der Befehl visudo benötigt.
Die Zeile:
... wird auskommentiert (# voranstellen) und eine neue Zeile eingefügt:
Nützliche Befehle
IP Adresse in Linux herausfinden
Hier nur der Teil vom WLAN Adapter (ohne IP 6):
link/ether 2c:33:7a:64:e4:7b brd ff:ff:ff:ff:ff:ff
inet 192.168.0.10/24 brd 192.168.0.255 scope global dynamic wlp2s0f0
valid_lft 31526795sec preferred_lft 31526795sec
PHP Version abfragen
PHP 8.2.26 (cli) (built: Nov 25 2024 17:21:51) (NTS)
Copyright (c) The PHP Group
Zend Engine v4.2.26, Copyright (c) Zend Technologies
with Zend OPcache v8.2.26, Copyright (c), by Zend Technologies
Gruppenzugehörigkeit
Abfragen, in welchen Gruppen man Mitglied ist:
Passwort ändern
Eigenes Passwort ändern:
Der root User kann auch Passwörter für andere Benutzer setzen:
Bildschirminhalt löschen
Textdateien anzeigen
Um den Inhalt von Textdateien anzuzeigen, gibt es mehrere Möglichkeiten.
Der Inhalt der Apache2 Konfigurationsdatei wird ausgegeben. Die komplette Datei ist in der Regel länger als die Bildschirmhöhe. Es wäre vorteilhaft den Inhalt seitenweise anzuzeigen. Für diesen Einsatzzweck steht der more Befehl zur Verfügung.
Mit der Leertaste wird seitenweise geblättert, mit der Enter-Taste zeilenweise, b (back) springt seitenweise zurück und q (quit) bricht die Anzeige ab.
less ist ein weiterer Befehl zum Anzeigen von Textdateien, kennt aber wesentlich mehr Optionen (Anzeige der Optionen mit: less --help).
Gerade Logfiles können sehr groß werden und häufig interessieren nur die letzten Einträge.
Die letzten 10 Zeilen der Logging Informationen der Paketverwaltung werden angezeigt. Um mehr Zeilen anzuzeigen kann der -n Parameter genutzt werden, z.B. die letzten 20 Zeilen:
Suchen in Textdateien
Durchsucht die Datei dpkg.log im Verzeichnis /var/log nach Zeilen, die libapache2-mod enthalten.
Kombination von Befehlen
Sehr praktisch in Linux Umgebungen ist die Möglichkeit das Ergebnis einer Anzeige an einen anderen Befehl als Input weiterzugeben. Realisiert wird das mit der Pipe |.
Der erste Teil gibt alle installierten Pakete aus. Das Ergebnis wird mit grep nach dem Vorkommen von samba durchsucht.
Linux beenden
Genau wie bei Windows sollte auch Linux sauber heruntergefahren werden, bevor der Computer ausgeschaltet wird.
-h now bewirkt, dass der Computer sofort heruntergefahren wird.