Schritt-für-Schritt-Anleitung: V-Server mit Docker & Nginx Proxy Manager

Schritt-für-Schritt-Anleitung: V-Server mit Docker & Nginx Proxy Manager

1. Grundinstallation & Sicherheit

1.1. Ubuntu aktualisieren

sudo apt update && sudo apt upgrade -y

1.2. Benutzer anlegen (nicht root!)

sudo adduser deinuser
sudo usermod -aG sudo deinuser

1.3. SSH-Absicherung

  • SSH-Key erstellen (auf deinem lokalen Rechner):
ssh-keygen -t ed25519
  • Public-Key auf den Server kopieren:
ssh-copy-id deinuser@serverip
  • Root-Login deaktivieren:In /etc/ssh/sshd_config:
PermitRootLogin no
  • Passwort-Login deaktivieren (nach erfolgreichem Key-Login!):
PasswordAuthentication no
  • SSH-Port ändern (optional, z. B. auf 2222):
Port 2222
  • Service neu starten:
sudo systemctl restart ssh

1.4. Firewall (UFW) aktivieren

sudo apt install ufw # falls nicht installiert
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow 22/tcp # oder neuen SSH-Port! 
sudo ufw allow 80/tcp 
sudo ufw allow 443/tcp 
sudo ufw enable sudo ufw status

1.5. Fail2Ban installieren

sudo apt install fail2ban

(Zum einrichten von fail2ban gibt es hier eine Anleitung)

Ich versuche den Vserver so gut wie möglich abzusichern, da er vom Internet aus erreichbar ist. Dies ist aber keine Garantie, dafür dass er komplett sicher ist.

2. Docker & Docker Compose installieren

sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/trusted.gpg.d/docker.gpg
echo "deb [arch=$(dpkg --print-architecture)] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
  • Docker-User-Berechtigung hinzufügen:
sudo usermod -aG docker $USER

Danach abmelden und neu einloggen.

3. Docker-Basisdienste aufsetzen

3.1. Gemeinsames Docker-Netzwerk erstellen

docker network create webproxy

3.2. Nginx Proxy Manager

mkdir ~/nginx-proxy-manager && cd ~/nginx-proxy-manager
nano docker-compose.yml
  • folgenden Inhalt in die docker-compose.yml einfügen:
services:
  npm:
    image: jc21/nginx-proxy-manager:latest
    container_name: npm
    restart: always
    ports:
      - "80:80"
      - "81:81"
      - "443:443"
    volumes:
      - ./data:/data
      - ./letsencrypt:/etc/letsencrypt
    networks:
      - webproxy

networks:
  webproxy:
    external: true
  • Nun den Nginx Proxy Manager starten
docker compose up -d

3.3. Portainer

mkdir ~/portainer && cd ~/portainer
nano docker-compose.yml
  • Inhalt der docker-compose.yml
version: "3"
services:
  portainer:
    image: portainer/portainer-ce
    container_name: portainer
    restart: always
    ports:
      - "9000:9000"
    volumes:
      - /var/run/docker.sock:/var/run/docker.sock
      - ./data:/data
    networks:
      - webproxy

networks:
  webproxy:
    external: true
  • Starten
docker compose up -d

Momentan ist Portainer noch über erreichbar
http://deine-domain.de:9000

Das ändern wir im nächsten Schritt, dann sollte der Portainer nur noch über https erreichbar sein:
https://portainer.deine-domain.de

4. Nginx Proxy Manager einrichten

WebUI öffnen:

http://deine-domain.de:81

Login:

Benutzer: admin@example.com
Passwort: changeme
(Beim ersten Login ändern!)

DNS A-Records/Subdomains anlegen:
z. B. portainer.deine-domain.de, proxy.deine-domain.de → auf Server-IP zeigen (Wildcard *.deine-domain.de möglich!)

Proxy Hosts anlegen:

  • Für Portainer:
    • Domain: portainer.deine-domain.de
    • Forward Hostname/IP: portainer
    • Forward Port: 9000
    • SSL → „Request a new SSL Certificate“, „Force SSL“

Tipp: Force SLL erst aktivieren, wenn die WebUI über „https“ erreichbar ist

Einstellungen SSL

proxy SSl

  • Für Proxy Manager:
    • Domain: proxy.deine-domain.de
    • Forward Hostname/IP: npm
    • Forward Port: 81
    • SSL → wie oben

5. Firewall und Zugriff über http weiter absichern

sudo ufw deny 81
sudo ufw deny 9000

Jetzt Admin-Oberflächen nur noch über HTTPS und Proxy erreichbar!
https://portainer.deine-domain.de
https://proxy.deine-domain.de

Weierhin zugriff auf folgende Domains verhindern:
http:// deine-domain.de:81
http://deine-domain.de:9000

auskommentieren des Ports:81 in der docker-compose.yaml des Nginx Proxy Manager
auskommentieren des Ports:9000 in der docker-compose.yaml desPortainer

Danach die Container neu starten.

6. Optional: Weitere Dienste aufsetzen

  • Neue Docker-Projekte einfach in eigenem Ordner mit eigenem Compose-File anlegen.
  • Unbedingt im Service-Block das Netzwerk webproxy angeben, z. B.:
networks:
  - webproxy

7. Optional: Access List für noch mehr Schutz

  • Im Nginx Proxy Manager WebUI → Access Lists erstellen, auf eigene IP begrenzen. (ist nur sinnvoll, wenn man eine feste IP besitzt)

8. Backups & Updates

Docker-Volumes sichern:
Z. B. regelmäßig ~/nginx-proxy-manager/data und ~/portainer/data sichern.

Updates:
docker compose pull + docker compose up -d in den jeweiligen Verzeichnissen.

Troubleshooting:

502 Bad Gateway:
Prüfe Docker-Netzwerk, Forward Hostname/IP, Firewall, Compose-Dateien.

Let’s Encrypt-Fehler:
Prüfe DNS, Ports 80/443 offen, Domain richtig gesetzt.

Nicht ausgesperrt werden:
Force SSL erst aktivieren, wenn alle Weiterleitungen funktionieren!

Ollama unter Ubuntu 24.04 installieren

Ollama unter Ubuntu 24.04 installieren

Ollama unter Ubuntu 24.04 installieren: Schritt für Schritt Anleitung mit Praxisbeispiel

Akttueller Stand: 06.2025

Künstliche Intelligenz (KI) und Large Language Models (LLMs) wie GPT-4 oder Llama sind nicht mehr nur ein Trendthema – sie verändern, wie wir mit Computern kommunizieren. Mit Ollama kannst du solche Modelle direkt und einfach auf deinem eigenen Rechner betreiben. Gerade auf einem modernen Ubuntu 24.04 Desktop oder Server ist das mit ein paar Befehlen erledigt. In diesem Artikel zeige ich dir, wie du Ollama installierst, ein Modell lädst und direkt per Terminal erste Prompts absetzt.

Was ist Ollama?

Ollama ist eine Open-Source-Software, mit der du Sprachmodelle wie Llama 2, Phi-3, Mistral, Gemma oder TinyLlama lokal auf deinem Linux- (oder Mac/Windows-) Rechner laufen lassen kannst. Das Schöne:

  • Keine Cloud, keine Datenweitergabe

  • Einfache Installation

  • CLI & API

  • Läuft auch auf älterer Hardware (viele Modelle sind recht ressourcenschonend)

Systemvoraussetzungen

  • Ubuntu 24.04 (funktioniert ähnlich auf 22.04, 23.10 etc.)

  • 8 GB RAM oder mehr empfohlen

  • Genügend freier Speicherplatz (je nach Modell 4–20 GB)

  • Optional: Nvidia GPU für noch mehr Speed (geht aber auch ohne!)

Schritt 1: Ollama herunterladen und installieren

1.1. Terminal öffnen

Drücke CTRL + ALT + T, um ein Terminal zu öffnen.

1.2. Ollama installieren

Die offizielle und empfohlene Methode zur Installation von Ollama unter Ubuntu ist jetzt deutlich einfacher – es gibt keinen separaten GPG-Key mehr über ollama.gpg, sondern einen Ein-Zeilen-Installer, der alles erledigt:

curl -fsSL https://ollama.com/install.sh | sh

Das runtergeladene Script ausführ bar machen und ausführen:

./install.sh

Alternativ erforderlichen Befehle zum installieren von Ollama:

# 1. System aktualisieren und curl installieren
sudo apt update
sudo apt install -y curl

# 2. Ollama installieren (alles inklusive GPG und Repo)
curl -fsSL https://ollama.com/install.sh | sh

# Option: Snap Version, falls du Snap bevorzugst
# sudo snap install ollama --channel=beta

Schritt 2: Ollama-Dienst starten (und autostart aktivieren)

In der Regel startet Ollama nach der Installation automatisch. Falls nicht, kannst du den Dienst per systemd starten:

sudo systemctl start ollama

Optional: Damit der Dienst nach jedem Reboot startet:

sudo systemctl enable ollama

Status prüfen:

sudo systemctl status ollama

Schritt 3: Modell herunterladen und testen

3.1. Ein KI-Modell laden

Ollama bietet eine ganze Reihe kostenloser Sprachmodelle an. Zum Einstieg empfehle ich zum Beispiel Llama 3 oder das sehr kompakte Phi-3.
Beispiel für Llama 3:

ollama pull llama3

Alternativ ein kleineres Modell:

ollama pull phi3

Das Modell wird heruntergeladen und steht danach sofort zur Verfügung.

Schritt 4: Interaktive Nutzung von Ollama im Terminal

Jetzt kannst du direkt mit dem Modell sprechen. Einfach im Terminal:

ollama run llama3

Die Konsole wechselt in einen interaktiven Modus, in dem du Prompts eintippst. Beispiel:

> Was ist der Unterschied zwischen Ubuntu und Debian?

Das Modell antwortet direkt im Terminal.

Tipp:
Du kannst den Prompt auch als Parameter übergeben:

ollama run llama3 "Erkläre mir die Vorteile von Open-Source-Software."

Schritt 5: Ollama per API verwenden (für Entwickler)

Ollama bietet auch eine OpenAI-kompatible REST-API an. Der Dienst läuft nach dem Start automatisch auf http://localhost:11434.

Kleines Beispiel mit curl:

curl http://localhost:11434/api/generate -d '{ "model": "llama3", "prompt": "Nenne drei Vorteile von Ubuntu." }'

Die Antwort kommt als JSON.

Optional: Web-Oberfläche und weitere Modelle

  • Ollama-Web-GUI:
    Es gibt verschiedene inoffizielle Web-Oberflächen, die auf Ollama aufsetzen (z.B. ollama-webui).

  • Modelle finden:
    https://ollama.com/library
    Hier findest du eine Übersicht aller verfügbaren Modelle – von kleinen, schnellen bis zu sehr leistungsfähigen.

Häufige Probleme & Lösungen

  • Modell zu groß?
    Nimm ein kleineres Modell wie phi3 oder tinyllama.

  • Kein CUDA/GPU?
    Kein Problem! Ollama läuft auch rein auf der CPU, nur langsamer.

  • Speicher voll?
    Lösche nicht genutzte Modelle mit
    ollama rm MODELLNAME

  • Port 11434 schon belegt?
    Ollama kann auch auf einen anderen Port gelegt werden – siehe die Doku.

Fazit

Mit Ollama verwandelst du deinen Ubuntu-Rechner im Handumdrehen in eine lokale KI-Schaltzentrale – ganz ohne Cloud-Abhängigkeit oder versteckte Kosten. Die Installation ist schnell erledigt, und schon nach wenigen Minuten kannst du eigene Prompts ausprobieren, Text generieren, programmieren lassen oder komplexe Fragen stellen. Gerade für Entwickler, Tüftler und KI-Interessierte ein tolles Tool!

Kurzzusammenfassung der wichtigsten Befehle:

# GPG-Key & Repo:
curl -fsSL https://ollama.com/download/ollama.gpg | sudo gpg --dearmor -o /usr/share/keyrings/ollama.gpg
echo "deb [signed-by=/usr/share/keyrings/ollama.gpg] https://ollama.com/download/linux stable main" | \
sudo tee /etc/apt/sources.list.d/ollama.list

sudo apt update
sudo apt install ollama

sudo systemctl start ollama
sudo systemctl enable ollama

ollama pull llama3
ollama run llama3

Viel Erfolg bei deinen KI-Experimenten mit Ollama!

 

 

Webserver unter Ubuntu 24.04 aufsetzen mit Apache2 oder Nginx

Webserver unter Ubuntu 24.04 aufsetzen mit Apache2 oder Nginx

Apache2 oder Nginx, PHP und MySQL, MariaDB oder PostgreSQL – Der große Praxis-Guide

In der heutigen digitalen Welt ist es für viele Projekte unerlässlich, einen eigenen Webserver zu betreiben. Egal, ob du einen Blog, ein CMS wie WordPress, eine eigene Anwendung oder einen kleinen Shop aufsetzen möchtest: Ein Webserver mit PHP und einer passenden Datenbank ist meist die Basis. In diesem Artikel zeige ich dir, wie du wahlweise Apache2 oder Nginx als Webserver und wahlweise MySQL, MariaDB oder PostgreSQL als Datenbank installierst – und das alles so, dass du als User einfach damit arbeiten kannst.

Diese Anleitung ist nur für eine Test-Umgebung im lokalen Netzwerk gedacht, nicht für eine Installation auf einem produktiven Server!

1. Die Komponenten im Überblick: Was brauchst du eigentlich?

a) Apache2 – Der Allrounder

Apache2 ist der älteste und am weitesten verbreitete Webserver der Welt.
Vorteile:

  • Sehr flexibel, viele Module

  • Riesige Community, viele Anleitungen

  • Fast alle Webanwendungen laufen „out of the box“

Nachteile:

  • Standardmäßig nicht so schnell wie Nginx

  • Etwas komplexere Konfiguration bei sehr hohen Lasten

b) Nginx – Der flinke Neue

Nginx (sprich: „Engine-X“) ist bekannt für seine Geschwindigkeit und Effizienz bei statischen Inhalten, wird aber auch als Reverse-Proxy und Application-Server genutzt.
Vorteile:

  • Sehr schnell, geringer Speicherverbrauch

  • Perfekt als Reverse Proxy

  • Statische Inhalte werden blitzschnell ausgeliefert

Nachteile:

  • Konfiguration für PHP/CGI ein wenig komplizierter (nutzt meist PHP-FPM)

  • Weniger .htaccess-Features (die viele aus Apache kennen)

c) PHP – Die Skriptsprache für Webanwendungen

PHP ist DIE Sprache für klassische dynamische Webseiten (WordPress, Joomla, Drupal etc.).
Es gibt viele Module, die für Datenbankanbindung, Uploads, Mail, uvm. gebraucht werden.

d) MySQL, MariaDB und PostgreSQL – Die Datenbanken

  • MySQL: Klassiker, weit verbreitet, besonders im LAMP-Stack (Linux, Apache, MySQL, PHP)

  • MariaDB: Fork von MySQL, schneller Release-Zyklus, vollständig Open Source, drop-in Replacement

  • PostgreSQL: Besonders leistungsfähig und „enterprise-tauglich“, ACID-konform, bietet Features wie JSON, räumliche Daten, Window-Functions

Vorteile von MySQL/MariaDB:

  • Sehr einfach, zuverlässig, breite Unterstützung
    Nachteile:

  • Teilweise weniger Features als PostgreSQL (z.B. bei komplexen Abfragen)

Vorteile von PostgreSQL:

  • Extrem leistungsfähig, komplexe Datenmodelle, viele Features
    Nachteile:

  • Anfangs komplexer, nicht immer von jedem CMS unterstützt

2. Schritt-für-Schritt: Installation und Konfiguration

Die folgenden Befehle funktionieren auf Ubuntu 22.04/24.04 und Debian 12. Für andere Distributionen ggf. leicht anpassen!

a) System vorbereiten

sudo apt update
sudo apt upgrade

b) Apache2 oder Nginx installieren

Apache2:

sudo apt install apache2

Starte und aktiviere Apache:

sudo systemctl enable apache2
sudo systemctl start apache2

Test: Öffne http://localhost/ im Browser. Du solltest die Apache-Startseite sehen.

Nginx:

sudo apt install nginx

Starte und aktiviere Nginx:

sudo systemctl enable nginx
sudo systemctl start nginx

Test: Öffne http://localhost/. Es erscheint die Nginx-Default-Page.

c) PHP und wichtige Module installieren

sudo apt install php libapache2-mod-php php-cli php-mysql php-pgsql php-sqlite3 php-xml php-gd php-curl php-zip php-mbstring php-intl php-ldap php-xmlrpc php-soap php-bcmath php-redis php-imagick

Für Nginx (nutzt PHP-FPM):

sudo apt install php-fpm php-cli php-mysql php-pgsql php-sqlite3 php-xml php-gd php-curl php-zip php-mbstring php-intl php-ldap php-xmlrpc php-soap php-bcmath php-redis php-imagick

Erläuterung der wichtigsten PHP-Module:

  • php-mysql, php-pgsql, php-sqlite3: Datenbankanbindung (je nach gewählter DB)

  • php-gd, php-imagick: Bildbearbeitung, Thumbnails

  • php-curl: HTTP-Anfragen aus PHP heraus

  • php-xml, php-xmlrpc: XML-Verarbeitung

  • php-zip: ZIP-Archive

  • php-mbstring, php-intl: Zeichenkodierung, Mehrsprachigkeit

  • php-bcmath: Mathematische Operationen mit großen Zahlen

  • php-soap: SOAP-Webdienste

  • php-redis: Anbindung an Redis-Server (Caching)

  • php-ldap: Anbindung an LDAP-Verzeichnisse

d) Datenbank wählen und installieren

MySQL:

sudo apt install mysql-server

Starte und sichere MySQL:

sudo systemctl enable mysql
sudo systemctl start mysql

Mit dem Befeh

sudo mysql_secure_installation

konfigurierst du bei MySQL und MariaDB auf Linux schnell und sicher die wichtigsten Grundeinstellungen deiner Datenbank – speziell in Bezug auf Sicherheit.

Hier ist eine Übersicht, was du mit diesem Tool einstellst:

1. Root-Passwort setzen oder ändern

  • Frage: „Would you like to setup VALIDATE PASSWORD component?“
    → Hier kannst du wählen, ob ein Passwort-Prüfmodul genutzt werden soll (optional).

  • Frage: „Please set the password for root here.“
    → Hier setzt du das Passwort für den Datenbank-Benutzer root (nicht zu verwechseln mit dem System-root!).

2. Unsichere Benutzer entfernen

  • Remove anonymous users:
    → Löscht alle Datenbank-User ohne Benutzernamen, die standardmäßig angelegt sind.

3. Root-Login beschränken

  • Disallow root login remotely:
    → Verhindert, dass sich der MySQL-root-Benutzer von anderen Rechnern aus anmelden kann (empfohlen für Server!).

4. Test-Datenbank löschen

  • Remove test database and access to it:
    → Löscht die „test“-Datenbank, die für jeden Benutzer offen ist – sie wird selten gebraucht, aber kann ein Sicherheitsrisiko sein.

5. Rechte neu laden

  • Reload privilege tables now?:
    → Aktiviert alle vorgenommenen Änderungen sofort.

Ablauf als Beispiel (interaktive Fragen):

Securing the MySQL server deployment.

VALIDATE PASSWORD COMPONENT can be used to test passwords...
Press y|Y for Yes, any other key for No: Y

Please set the password for root here.
New password: ******
Re-enter new password: ******

Remove anonymous users? (Press y|Y for Yes): Y

Disallow root login remotely? (Press y|Y for Yes): Y

Remove test database and access to it? (Press y|Y for Yes): Y

Reload privilege tables now? (Press y|Y for Yes): Y

Mit mysql_secure_installation konfigurierst du sehr schnell die wichtigsten Sicherheits- und Hygiene-Einstellungen einer MySQL- oder MariaDB-Instanz. Du solltest dieses Tool nach jeder Neuinstallation einmal ausführen!

MariaDB:

sudo apt install mariadb-server

Starte und sichere MariaDB:

sudo systemctl enable mariadb
sudo systemctl start mariadb
sudo mysql_secure_installation

Hinweis: mysql-Kommandos funktionieren für MariaDB identisch.

PostgreSQL:

udo apt install postgresql postgresql-contrib

Starte und aktiviere:

sudo systemctl enable postgresql
sudo systemctl start postgresql

Mit der Datenbank arbeiten:

sudo -u postgres psql

3. Schreibrechte & SetGID auf /var/www/html setzen

Standardmäßig gehört /var/www/html dem User root und der Gruppe www-data. Damit dein angemeldeter User Schreibrechte hat und Dateien im richtigen Kontext erstellt werden, gehst du so vor (ersetze username durch deinen Login):

sudo chown -R username:www-data /var/www/html
sudo chmod -R 2775 /var/www/html

Wichtig:

  • Das 2 vorne im Modus (2775) setzt das SetGID-Bit für das Verzeichnis.

  • Neue Dateien/Ordner in /var/www/html gehören dann automatisch der Gruppe www-data und sind schreibbar für User & Gruppe.

4. PHP für Apache2 oder Nginx konfigurieren

Apache2: Funktioniert nach Installation und Neustart direkt mit PHP!

sudo systemctl restart apache2

Teste mit einer info.php:

echo '<?php phpinfo(); ?>' | sudo tee /var/www/html/info.php

Rufe http://localhost/info.php im Browser auf.

Nginx: Du musst PHP-FPM einbinden. Öffne z.B. die Default-Site:

sudo nano /etc/nginx/sites-available/default

Füge im server-Block folgendes hinzu (falls noch nicht vorhanden):

location ~ \.php$ {
    include snippets/fastcgi-php.conf;
    fastcgi_pass unix:/run/php/php8.3-fpm.sock; # Version anpassen!
}

Speichern, schließen, dann Nginx neu laden:

sudo systemctl reload nginx

Auch hier mit info.php testen.

5. Zusatz: Datenbank anlegen und Benutzer vergeben

MySQL/MariaDB:

CREATE DATABASE meine_datenbank;
CREATE USER 'meinuser'@'localhost' IDENTIFIED BY 'meinpasswort';
GRANT ALL PRIVILEGES ON meine_datenbank.* TO 'meinuser'@'localhost';
FLUSH PRIVILEGES;

PostgreSQL:

sudo -u postgres psql

Im psql-Promt:

CREATE DATABASE meine_datenbank;
CREATE USER meinuser WITH ENCRYPTED PASSWORD 'meinpasswort';
GRANT ALL PRIVILEGES ON DATABASE meine_datenbank TO meinuser;
\q

6. Vor- und Nachteile im Überblick

Apache2

+ Maximale Kompatibilität, riesige Community, .htaccess
Weniger performant für statische Dateien, komplexer bei hoher Last

Nginx

+ Sehr schnell, niedrige RAM-Belastung, super als Proxy
Keine .htaccess, PHP-Integration komplexer, weniger für .htaccess‑basierte Anwendungen

MySQL

+ Einfache Bedienung, viele Anleitungen
Weniger Features als PostgreSQL, Teilweise proprietäre Tools

MariaDB

+ 100% Open Source, schneller Release-Zyklus, MySQL-kompatibel
Manchmal Inkompatibilitäten bei exotischen Features

PostgreSQL

+ „Enterprise“-Features, sehr robust, für komplexe Abfragen und große Projekte
Anfangs mehr Einarbeitung, komplexer Einstieg

7. Tipps für den Alltag

  • Backups! Lege regelmäßige Datenbank- und Webspace-Backups an.

  • Rechte! Prüfe die Rechte, besonders bei gemeinsam genutzten Servern.

  • Updates! Halte dein System und die Software aktuell (sudo apt upgrade).

  • Sicherheit! Setze sichere Passwörter und beschränke Datenbank-Zugriffe möglichst auf „localhost“.

8. Zusammenfassung: Der schnellste Weg

Hier nochmal als Kurz-Checkliste für Apache2+PHP+MariaDB:

sudo apt update
sudo apt install apache2 php libapache2-mod-php php-mysql mariadb-server
sudo systemctl enable apache2 mariadb
sudo systemctl start apache2 mariadb
sudo chown -R $USER:www-data /var/www/html
sudo chmod -R 2775 /var/www/html

Für Nginx + PHP-FPM + PostgreSQL (analog anpassen):

sudo apt update
sudo apt install nginx php-fpm php-pgsql postgresql
sudo systemctl enable nginx postgresql
sudo systemctl start nginx postgresql
sudo chown -R $USER:www-data /var/www/html
sudo chmod -R 2775 /var/www/html

9. Fazit

Mit diesen Anleitungen und Hintergrundinfos kannst du einen modernen Webserver auf Linux nach deinem Geschmack und deinen Projektanforderungen aufsetzen. Egal ob Apache2 oder Nginx, MySQL, MariaDB oder PostgreSQL: Die Open-Source-Landschaft bietet dir maximale Flexibilität und Kontrolle – du musst nur noch starten!