# AlmaLinux 9 – Basic To-Dos nach Installation

Dieser Artikel beschreibt die grundlegenden Schritte nach der Installation eines **AlmaLinux 9 Servers**.  
Er dient als universelle Basis-Konfiguration für neue Systeme (z. B. Webserver, Management-Server, Backup-Node oder CloudStack-Host).

---

### ⚙️ System aktualisieren

> AlmaLinux 9 verwendet **DNF** als Paketmanager (Nachfolger von `YUM`).

#### 🧩 Unterschied zwischen DNF und YUM

| Punkt | YUM | DNF |
|:------|:----|:----|
| Basis | Alte Generation (RHEL ≤ 7) | Moderne Version (ab RHEL 8/9) |
| Geschwindigkeit | Langsamer, kein Caching | Schneller, mit Caching & besserem Dependency-Resolver |
| API-Fähigkeit | Keine | Vollständige Python-API |
| Kompatibilität | Alte Syntax | Voll kompatibel zu YUM-Befehlen (`dnf = yum`) |

👉 Kurz gesagt: **`dnf` ersetzt `yum` vollständig.**  
Du kannst auf AlmaLinux 9 zwar noch `yum` eingeben – intern wird aber `dnf` ausgeführt.

#### 🧭 Befehle

```bash
# Systempakete aktualisieren
dnf update -y

# (Optional) Neustart, falls Kernel-Update
reboot
```

---

###  Hostname setzen

> Der Hostname identifiziert den Server eindeutig im Netzwerk und wird u. a. für Zertifikate, Logs und SSH-Sessions verwendet.

#### Hostname anzeigen

```bash
hostnamectl
```

#### Hostname ändern

```bash
# Beispiel
hostnamectl set-hostname server01.example.local
```

#### Verifizieren

```bash
hostnamectl status
# oder
hostname
```

#### Hinweis

- Der Befehl schreibt den neuen Namen direkt in `/etc/hostname`.  
- Ein Neustart ist **nicht nötig**, die Änderung greift sofort.  
- Wenn du einen FQDN (z. B. `server01.example.local`) verwendest, sollte der Hostname auch in `/etc/hosts` eingetragen werden:

```bash
127.0.0.1   localhost
192.168.1.10 server01.example.local server01
```

---

### Benutzer & SSH-Absicherung

```bash
# Neuen Benutzer anlegen
useradd tobias
passwd tobias

# In die sudo-Gruppe aufnehmen
usermod -aG wheel tobias
```

SSH absichern:

```bash
# Root-Login deaktivieren
sed -i 's/^#PermitRootLogin.*/PermitRootLogin no/' /etc/ssh/sshd_config

# (Optional) Passwort-Login deaktivieren, wenn SSH-Key genutzt wird
sed -i 's/^#PasswordAuthentication.*/PasswordAuthentication no/' /etc/ssh/sshd_config

# Dienst neu starten
systemctl restart sshd
```

---

### 🧰 4️⃣ Basis-Tools installieren

```bash
dnf install -y vim nano htop git curl wget net-tools \
  bash-completion unzip tar zip rsync chrony
```

---

### 🔥 5️⃣ Firewall aktivieren

```bash
systemctl enable --now firewalld
firewall-cmd --add-service=ssh --permanent
firewall-cmd --reload
```

---

### 🌐 6️⃣ Netzwerk konfigurieren

```bash
nmcli device status
nmcli connection show
```

#### Beispiel – statische IP

```bash
nmcli con mod "ens192" ipv4.addresses 192.168.1.10/24
nmcli con mod "ens192" ipv4.gateway 192.168.1.1
nmcli con mod "ens192" ipv4.dns "1.1.1.1 8.8.8.8"
nmcli con mod "ens192" ipv4.method manual
nmcli con up "ens192"
```

---

### 🧩 7️⃣ SELinux & Auto-Updates

```bash
# SELinux-Status prüfen
sestatus

# (Optional) auf Permissive Mode setzen
setenforce 0
sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config
```

Automatische Sicherheitsupdates aktivieren:

```bash
dnf install -y dnf-automatic
systemctl enable --now dnf-automatic.timer
```

---

### 🧾 8️⃣ Cockpit aktivieren (Web-GUI)

```bash
dnf install -y cockpit
systemctl enable --now cockpit.socket
firewall-cmd --add-service=cockpit --permanent
firewall-cmd --reload
```

> Zugriff: https://server-ip:9090  
> Login mit einem Benutzer aus der `wheel`-Gruppe.

---

### 📦 9️⃣ EPEL & CRB Repository aktivieren

```bash
dnf install -y epel-release
dnf config-manager --set-enabled crb
```

---

### 🧭 🔟 Abschluss

✅ System ist aufgesetzt  
✅ Benutzer, Sicherheit & Netzwerk konfiguriert  
✅ Bereit für Rollenzuweisung (z. B. Web, DB, RMM, CloudStack)

---

### 🪶 Zusammenfassung wichtiger Befehle

| Zweck | Befehl |
|:------|:-------|
| Hostname setzen | `hostnamectl set-hostname <name>` |
| Systemupdate | `dnf update -y` |
| Benutzer anlegen | `useradd <name>` |
| Firewall starten | `systemctl enable --now firewalld` |
| Cockpit aktivieren | `systemctl enable --now cockpit.socket` |

---

_Last Update: {{DATE}}_  
_Autor: CoreStream Group – Internal KB_