# 🧭 Crumbpage 10: Dienste die auf Ports lauschen

**Subtitle:** *Was läuft denn da? - Services verwalten*  
**Pfad:** 10 von 11  
**Schwierigkeit:** ⭐⭐⭐ (3/5)  
**Zeit:** ~2 Stunden  
**Voraussetzungen:** Pfad 9 (Storage)

> *"Ein Server ohne Dienste ist wie ein Restaurant ohne Küche. Es passiert nichts."* 🌲

---

## 📋 Was du in diesem Pfad lernst

```
✓ Was ist ein Service (Daemon)?
✓ systemd & systemctl (Der Chefkoch)
✓ Ports & Sockets
✓ Firewalls (Der Türsteher)
✓ Logs von Diensten (journalctl -u)
```

---

## 🎯 Lernziele

Nach diesem Pfad kannst du:

- [ ] Einen Webserver (nginx) installieren und starten
- [ ] Prüfen, ob er läuft und auf welchem Port
- [ ] Ihn automatisch beim Booten starten lassen
- [ ] Die Firewall konfigurieren, um ihn erreichbar zu machen

---

## 🌱 Grundkonzepte

### Konzept 1: Daemons (Dienste)

Programme, die im Hintergrund laufen und auf Arbeit warten, nennt man **Daemons** (endet oft auf `d`, z.B. `sshd`, `httpd`).
**systemd** ist das Programm, das alle anderen Daemons startet und überwacht.

### Konzept 2: Ports

Wie in Pfad 6 gelernt: Dienste lauschen an Türen (Ports).
Nur ein Dienst pro Port!

---

## 🔧 Praktische Befehle

### Befehl 1: `systemctl` (Der Boss)

```bash
$ sudo systemctl start nginx    # Starten
$ sudo systemctl stop nginx     # Stoppen
$ sudo systemctl restart nginx  # Neustarten (bei Config-Änderung)
$ sudo systemctl status nginx   # Wie geht's dir?
$ sudo systemctl enable nginx   # Autostart an
$ sudo systemctl disable nginx  # Autostart aus
```

### Befehl 2: `ufw` (Uncomplicated Firewall)

```bash
$ sudo ufw status
$ sudo ufw allow 80/tcp   # Web erlauben
$ sudo ufw allow 22/tcp   # SSH erlauben (WICHTIG!)
$ sudo ufw enable         # Firewall einschalten
```

---

## 💡 Best Practices

### DO ✅

```bash
# 1. Status prüfen
# Nach jedem start/restart: `systemctl status service`

# 2. Logs lesen
# Wenn er nicht startet: `journalctl -u service_name -e`
```

### DON'T ❌

```bash
# 1. Firewall einschalten ohne SSH zu erlauben
# Du sperrst dich selbst aus! 💀
# Immer erst `ufw allow ssh` machen.
```

---

## 🎓 Hands-On Übungen

### Übung 1: Der Webserver

1. Installiere Nginx: `sudo apt install nginx`
2. Starte ihn: `sudo systemctl start nginx`
3. Prüfe Status: `sudo systemctl status nginx`
4. Rufe die IP deines Servers im Browser auf. Siehst du "Welcome to nginx"?

### Übung 2: Der Türsteher

1. Prüfe `sudo ufw status`.
2. Erlaube SSH: `sudo ufw allow ssh`.
3. Erlaube Nginx: `sudo ufw allow 'Nginx Full'`.
4. Aktiviere UFW: `sudo ufw enable`.

---

## 🦉 Crystal Owl's Weisheit

> *"Ein Dienst, der nicht startet, hat meistens einen Grund. Er schreit ihn in die Logs, aber nur die Weisen hören zu."*

---

**Navigation:**  
[← Zurück: Storage](crumbpage-09-storage.md) | [Weiter: First Access →](crumbpage-11-first-access.md)
