187 lines
4.0 KiB
Markdown
187 lines
4.0 KiB
Markdown
# 🛠️ 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@<IP-des-Containers>
|
||
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.
|