Dies ist eine alte Version des Dokuments!
Inhaltsverzeichnis
02 - Installation der Komponenten
Lernziele
Nach dieser Lektion haben Sie:
- Apache Webserver installiert und konfiguriert
- MariaDB Datenbank eingerichtet
- PHP mit allen erforderlichen Modulen installiert
- Nextcloud heruntergeladen und entpackt
Übersicht der Installation
Installationsreihenfolge:
- System-Updates
- Apache Webserver
- MariaDB Datenbank
- PHP und Module
- Nextcloud Software
- Erste Konfiguration
1. System aktualisieren
Paketlisten und System aktualisieren:
sudo apt update && sudo apt upgrade -y
System nach Updates neu starten (empfohlen):
sudo reboot
2. Basis-Pakete installieren
Erforderliche Grundpakete:
sudo apt install -y wget curl unzip zip software-properties-common apt-transport-https ca-certificates
| Paket | Funktion |
|---|---|
| wget | Dateien aus dem Internet herunterladen |
| curl | Datenübertragung und API-Aufrufe |
| unzip/zip | Archive erstellen und entpacken |
| software-properties-common | Repository-Management |
| apt-transport-https | HTTPS-Support für apt |
| ca-certificates | SSL-Zertifikate für sichere Verbindungen |
3. Apache Webserver installieren
Apache installieren:
sudo apt install -y apache2
Apache-Status prüfen:
sudo systemctl status apache2
Apache automatisch starten:
sudo systemctl enable apache2
Webserver testen:
# Lokaler Test curl http://localhost # Von anderem Rechner (IP anpassen): # curl http://192.168.1.100
Erforderliche Apache-Module aktivieren:
sudo a2enmod rewrite headers env dir mime setenvif ssl
4. MariaDB Datenbank installieren
MariaDB installieren:
sudo apt install -y mariadb-server mariadb-client
MariaDB-Status prüfen:
sudo systemctl status mariadb
MariaDB automatisch starten:
sudo systemctl enable mariadb
MariaDB absichern:
sudo mysql_secure_installation
Wichtige Antworten für den Schulungskontext:
Switch to unix_socket authentication [Y/n] → Y Change the root password? [Y/n] → Y New password: Start1234 Re-enter new password: Start1234 Remove anonymous users? [Y/n] → Y Disallow root login remotely? [Y/n] → Y Remove test database and access to it? [Y/n] → Y Reload privilege tables now? [Y/n] → Y
💡 Schulungshinweis:
Das Passwort `Start1234` ist bewusst einfach gewählt. In Produktionsumgebungen verwenden Sie starke, einzigartige Passwörter!
5. Nextcloud-Datenbank einrichten
MariaDB-Root-Zugang testen:
sudo mysql -u root -p # Passwort: Start1234
Nextcloud-Datenbank und Benutzer erstellen:
-- In der MariaDB-Konsole: CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci; CREATE USER 'nc_user'@'localhost' IDENTIFIED BY 'nc_pass'; GRANT ALL PRIVILEGES ON nextcloud.* TO 'nc_user'@'localhost'; FLUSH PRIVILEGES; -- Datenbanken anzeigen: SHOW DATABASES; -- MariaDB verlassen: EXIT;
Datenbank-Zugang testen:
mysql -u nc_user -p # Passwort: nc_pass # In der MariaDB-Konsole: SHOW DATABASES; USE nextcloud; SHOW TABLES; # Sollte leer sein (noch keine Tabellen) EXIT;
6. PHP installieren
PHP und grundlegende Module installieren:
sudo apt install -y php php-cli php-fpm php-mysql php-xml php-gd php-curl php-mbstring php-intl php-bcmath php-gmp php-zip
Apache PHP-Modul installieren:
sudo apt install -y libapache2-mod-php
PHP-Version prüfen:
php --version
PHP-Module prüfen:
php -m | grep -E "(mysql|xml|gd|curl|mbstring|zip|intl|bcmath|gmp)"
Erwartete Ausgabe:
bcmath curl gd intl mbstring mysql xml zip gmp
7. Zusätzliche Performance-Module
Caching und Performance-Module:
sudo apt install -y php-apcu php-redis redis-server php-imagick
ImageMagick-Erweiterungen für bessere Bildbearbeitung:
sudo apt install -y libmagickcore-6.q16-6-extra
Redis-Server starten und aktivieren:
sudo systemctl start redis-server sudo systemctl enable redis-server
Redis-Status prüfen:
sudo systemctl status redis-server redis-cli ping # Sollte "PONG" zurückgeben
8. PHP konfigurieren
PHP-Konfigurationsdatei bearbeiten:
sudo nano /etc/php/8.3/apache2/php.ini
Wichtige Einstellungen anpassen:
# Speicherlimit erhöhen (Zeile ~409) memory_limit = 1024M # Upload-Größe erhöhen (Zeile ~845) upload_max_filesize = 1G post_max_size = 1G # Zeitlimits erhöhen (Zeile ~369) max_execution_time = 300 max_input_time = 300 # Output Buffering deaktivieren (Zeile ~226) output_buffering = Off # OPcache optimieren (Ende der Datei hinzufügen) opcache.enable=1 opcache.interned_strings_buffer=16 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1
APCu konfigurieren:
sudo nano /etc/php/8.3/mods-available/apcu.ini
APCu-Inhalt:
extension=apcu.so apc.enable_cli=1 apc.shm_size=32M apc.num_files_hint=7000 apc.user_entries_hint=4096 apc.ttl=7200 apc.user_ttl=7200 apc.gc_ttl=3600
9. Apache für Nextcloud konfigurieren
Apache-Hauptkonfiguration anpassen:
sudo nano /etc/apache2/sites-available/000-default.conf
Komplette Konfiguration ersetzen:
<VirtualHost *:80>
ServerAdmin webmaster@localhost
DocumentRoot /var/www/html
ErrorLog ${APACHE_LOG_DIR}/error.log
CustomLog ${APACHE_LOG_DIR}/access.log combined
# Nextcloud-spezifische Verzeichnis-Konfiguration
<Directory /var/www/html>
Options Indexes FollowSymLinks
AllowOverride All
Require all granted
</Directory>
# .well-known URLs für Nextcloud-Dienste
<IfModule mod_headers.c>
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
Redirect 301 /.well-known/carddav /nextcloud/remote.php/dav
Redirect 301 /.well-known/caldav /nextcloud/remote.php/dav
Redirect 301 /.well-known/webfinger /nextcloud/index.php/.well-known/webfinger
Redirect 301 /.well-known/nodeinfo /nextcloud/index.php/.well-known/nodeinfo
</IfModule>
# Security Headers
<IfModule mod_headers.c>
Header always set X-Content-Type-Options nosniff
Header always set X-Frame-Options DENY
Header always set X-XSS-Protection "1; mode=block"
Header always set Referrer-Policy "no-referrer"
</IfModule>
</VirtualHost>
Erforderliche Apache-Module aktivieren:
sudo a2enmod headers rewrite env dir mime setenvif
10. Nextcloud herunterladen
Ins Webserver-Verzeichnis wechseln:
cd /var/www/html
Aktuelle Nextcloud-Version herunterladen:
sudo wget https://download.nextcloud.com/server/releases/latest.zip
Alternative - spezifische Version (empfohlen für Schulung):
sudo wget https://download.nextcloud.com/server/releases/nextcloud-30.0.2.zip sudo mv nextcloud-30.0.2.zip latest.zip
Nextcloud entpacken:
sudo unzip latest.zip
Berechtigungen setzen:
sudo chown -R www-data:www-data /var/www/html/nextcloud/ sudo chmod -R 755 /var/www/html/nextcloud/
Download-Datei entfernen:
sudo rm latest.zip
11. Services neustarten
Alle Dienste neustarten:
sudo systemctl restart apache2 sudo systemctl restart mariadb sudo systemctl restart redis-server
Service-Status prüfen:
sudo systemctl status apache2 sudo systemctl status mariadb sudo systemctl status redis-server
12. Installation testen
Webserver-Zugriff testen:
curl -I http://localhost/nextcloud/
Erwartete Antwort:
HTTP/1.1 200 OK Server: Apache/2.4.x Content-Type: text/html; charset=UTF-8
Nextcloud-Verzeichnisstruktur prüfen:
ls -la /var/www/html/nextcloud/
Wichtige Verzeichnisse sollten vorhanden sein:
drwxr-xr-x apps/ drwxr-xr-x config/ drwxr-xr-x core/ -rw-r--r-- index.php drwxr-xr-x lib/ -rw-r--r-- occ drwxr-xr-x resources/ drwxr-xr-x themes/ drwxr-xr-x updater/
Troubleshooting
Häufige Probleme und Lösungen:
Problem: Apache startet nicht
# Konfiguration testen: sudo apache2ctl configtest # Logs prüfen: sudo tail -f /var/log/apache2/error.log
Problem: MariaDB Zugriff verweigert
# Root-Passwort zurücksetzen:
sudo systemctl stop mariadb
sudo mysqld_safe --skip-grant-tables &
mysql -u root
# In MySQL: UPDATE mysql.user SET password=PASSWORD('Start1234') WHERE user='root';
# FLUSH PRIVILEGES; EXIT;
sudo systemctl restart mariadb
Problem: PHP-Module fehlen
# Installierte Module prüfen: php -m # Fehlende Module nachinstallieren: sudo apt install php-[modulname] sudo systemctl restart apache2
Problem: Nextcloud nicht erreichbar
# Berechtigungen prüfen: ls -la /var/www/html/nextcloud/ # Falls nötig korrigieren: sudo chown -R www-data:www-data /var/www/html/nextcloud/
Checkliste Installation
Vor dem nächsten Schritt prüfen:
- ☐ Apache läuft (`sudo systemctl status apache2`)
- ☐ MariaDB läuft (`sudo systemctl status mariadb`)
- ☐ Redis läuft (`sudo systemctl status redis-server`)
- ☐ PHP funktioniert (`php –version`)
- ☐ Nextcloud-Dateien sind entpackt (`ls /var/www/html/nextcloud/`)
- ☐ Berechtigungen sind korrekt (`ls -la /var/www/html/nextcloud/`)
- ☐ Datenbank `nextcloud` existiert
- ☐ Benutzer `nc_user` kann auf Datenbank zugreifen
- ☐ Webserver antwortet (`curl http://localhost/nextcloud/`)
Weiter zur Konfiguration
🎉 Installation erfolgreich!
Die technischen Komponenten sind jetzt installiert. Im nächsten Schritt konfigurieren wir Nextcloud über die Web-Oberfläche.
👉 03 - Web-Setup und Konfiguration
In der nächsten Lektion werden wir:
- Nextcloud über den Browser einrichten
- Administrator-Account erstellen
- Datenbank-Verbindung konfigurieren
- Erste Sicherheitseinstellungen vornehmen
Zusätzliche Informationen
Installierte Software-Versionen prüfen:
apache2 -v mysql --version php --version redis-server --version
Speicherverbrauch prüfen:
free -h df -h
Log-Dateien für Monitoring:
# Apache sudo tail -f /var/log/apache2/access.log sudo tail -f /var/log/apache2/error.log # MariaDB sudo tail -f /var/log/mysql/error.log # System sudo journalctl -f
