# 🛠️ Kapitel 7 – Nextcloud (Nginx + PostgreSQL + Redis, NPM-Setup) > [!INFO] > Dieses Kapitel ist eine vorbereitete Rohfassung. Es enthält bereits alle technischen Schritte in korrekter Reihenfolge. Die Blogtexte und Erklärungen folgen später. ## ✨ Einleitung [Platzhalter für Einstiegstext: Was ist Nextcloud, warum ist es sinnvoll, was kann man damit tun. Hinweis auf Unabhängigkeit von Google & Co., Einsatz als Streamer, für Teamsharing etc.] ## 📋 Voraussetzungen [Platzhalter für grafische Checkliste oder Übersicht: z. B. Screenshot LXC-Übersicht] - Proxmox-Host mit 2 Platten (System + Daten) - LXC mit Ubuntu 24.04, „Nesting“ aktiviert - Nginx Proxy Manager (NPM) läuft bereits - Domain zeigt korrekt auf den Proxy - Container-Ressourcen: 2 vCPU, 4–8 GB RAM - Grundkenntnisse in Proxmox, SSH, Terminal ## ⚙️ LXC-Container anlegen **In der Proxmox-GUI:** - CT-Name: `nextcloud` - Template: `Ubuntu 24.04 LTS` - CPU: 2+, RAM: 4096+ MB - „Nesting“ aktivieren (unter „Optionen“) **Zweite Festplatte direkt einbinden:** - Mount Point: `/mnt/hdd` - Größe: z. B. `500` GB - Backup: deaktivieren Nach dem Start: ```bash ssh root@ ls -ld /mnt/hdd ``` → Wenn ein gültiges Verzeichnis erscheint, ist alles korrekt gemountet. ## 📦 System vorbereiten [Platzhalter: Warum update & Basis-Tools wichtig sind] ```bash apt update && apt upgrade -y apt install -y curl gnupg2 ca-certificates lsb-release apt-transport-https software-properties-common unzip nano sudo gnupg ``` ## 🌐 Dienste installieren [Platzhalter: Hinweis auf explizite PHP-Version, warum kein „php-*“ verwendet wird] ```bash apt install -y nginx redis-server postgresql php8.3-fpm php8.3-pgsql php8.3-cli php8.3-common php8.3-gd php8.3-mbstring php8.3-xml php8.3-zip php8.3-curl php8.3-bz2 php8.3-intl php8.3-gmp php8.3-imagick php8.3-redis ``` ## 📁 Verzeichnisse anlegen ```bash mkdir -p /srv/nextcloud/app mkdir -p /mnt/hdd/nextcloud_data chown -R www-data:www-data /mnt/hdd/nextcloud_data ``` ## ⚙️ PHP konfigurieren ### `php.ini` (globale Werte) ```bash nano /etc/php/8.3/fpm/php.ini ``` ```ini upload_max_filesize = 10G post_max_size = 10G memory_limit = 1024M max_execution_time = 3600 max_input_time = 3600 date.timezone = Europe/Berlin opcache.enable=1 opcache.memory_consumption=128 opcache.max_accelerated_files=10000 opcache.interned_strings_buffer=16 ``` ### `www.conf` (Pool-Konfiguration) ```bash nano /etc/php/8.3/fpm/pool.d/www.conf ``` ```ini pm = dynamic pm.max_children = 12 pm.start_servers = 3 pm.min_spare_servers = 2 pm.max_spare_servers = 6 ``` PHP-FPM neu laden: ```bash systemctl reload php8.3-fpm ``` ## 🐘 PostgreSQL initialisieren (für LXC) ```bash pg_dropcluster 16 main --stop pg_createcluster 16 main --start systemctl enable postgresql systemctl start postgresql ``` Zugang zur DB: ```bash su - postgres ``` Datenbank anlegen: ```sql psql CREATE DATABASE nextcloud; CREATE USER nextcloud WITH PASSWORD 'DEIN_SICHERES_PASSWORT'; GRANT ALL PRIVILEGES ON DATABASE nextcloud TO nextcloud; \q ``` Dann wieder raus: ```bash exit ``` ## 🔄 Redis konfigurieren [Platzhalter: Warum Redis wichtig ist (Caching, File Locking, keine APCu mehr). Nur lokal via Socket, daher keine Authentifizierung nötig.] ### Redis-Zugriffsrechte setzen ```bash usermod -aG redis www-data ``` > [!NOTE] > Dadurch kann der Webserver-User (`www-data`) auf den Redis-Socket zugreifen. ### Redis-Konfiguration prüfen ```bash nano /etc/redis/redis.conf ``` Die folgenden Zeilen sollten gesetzt sein (oder geändert werden): ```ini supervised systemd unixsocket /var/run/redis/redis-server.sock unixsocketperm 770 ``` > [!TIP] > Weitere Einstellungen wie `bind` oder `requirepass` brauchst du **nicht**, > solange du Redis **nur lokal über den Socket** nutzt. Redis neu starten: ```bash systemctl restart redis-server ``` --- Fertig. Jetzt ist Redis bereit für Nextcloud – Caching und Locking funktionieren nach dem Setup automatisch, wenn wir die Einträge in der `config.php` ergänzen.