Anpassung
This commit is contained in:
1
.gitignore
vendored
1
.gitignore
vendored
@@ -1,2 +1,3 @@
|
||||
# Docker
|
||||
.env
|
||||
data_*
|
||||
|
||||
111
README.md
Normal file
111
README.md
Normal file
@@ -0,0 +1,111 @@
|
||||
# ☁️ Nextcloud Docker-Setup (LXC/Ubuntu)
|
||||
|
||||
Dieses Repository enthält ein vollständig optimiertes Docker-Setup für **Nextcloud Hub 9**. Es beinhaltet eine MariaDB-Datenbank, Redis für Caching, einen integrierten Cron-Container und den Nginx Proxy Manager für SSL/Zertifikatsverwaltung.
|
||||
|
||||
## 🚀 Features
|
||||
|
||||
* **Performance:** Redis für File-Locking und APCu für lokales Caching.
|
||||
* **Sicherheit:** Automatische Konfiguration von `trusted_domains` und `trusted_proxies`.
|
||||
* **Apps:** Automatische Installation von Must-Have Apps (Calendar, Contacts, Deck, etc.).
|
||||
* **Automatisierung:** `init-nextcloud.sh` für die schlüsselfertige Ersteinrichtung.
|
||||
* **Mail:** Vorkonfigurierter SMTP-Versand über Umgebungsvariablen.
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Installation
|
||||
|
||||
### 1. Vorbereitung
|
||||
|
||||
Klone das Repository oder erstelle das Verzeichnis:
|
||||
|
||||
```bash
|
||||
mkdir -p /srv/docker/nextcloud && cd /srv/docker/nextcloud
|
||||
|
||||
```
|
||||
|
||||
### 2. Konfiguration
|
||||
|
||||
Erstelle eine `.env` Datei basierend auf der Vorlage:
|
||||
|
||||
```bash
|
||||
cp example.env .env
|
||||
nano .env
|
||||
|
||||
```
|
||||
|
||||
> **Wichtig:** Passe dort Passwörter, die `NEXTCLOUD_IP` und deine SMTP-Daten an.
|
||||
|
||||
### 3. Ersteinrichtung (Setup-Skript)
|
||||
|
||||
Das Skript fährt die Container hoch, wartet auf die Datenbank und führt alle Optimierungen (Indizes, Apps, Cron-Modus) automatisch aus:
|
||||
|
||||
```bash
|
||||
chmod +x init-nextcloud.sh
|
||||
./init-nextcloud.sh
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📂 Struktur & Verzeichnisse
|
||||
|
||||
Die Daten werden lokal im Projektverzeichnis gespeichert, um Backups zu erleichtern:
|
||||
|
||||
* `data_nextcloud/`: Alle Web-Dateien und Benutzerdaten der Cloud.
|
||||
* `data_db/`: Die MariaDB-Datenbankdateien.
|
||||
* `data_npm_data/`: Konfiguration des Nginx Proxy Managers.
|
||||
* `data_npm_letsencrypt/`: SSL-Zertifikate.
|
||||
|
||||
---
|
||||
|
||||
## ⚙️ Wichtige Befehle
|
||||
|
||||
**Container verwalten:**
|
||||
|
||||
```bash
|
||||
docker compose up -d # Starten (Hintergrund)
|
||||
docker compose down # Stoppen
|
||||
docker compose logs -f # Logs in Echtzeit einsehen
|
||||
|
||||
```
|
||||
|
||||
**OCC-Befehle manuell ausführen:**
|
||||
|
||||
```bash
|
||||
docker compose exec --user www-data app php occ [befehl]
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## ⏰ Hintergrundaufgaben (Cron)
|
||||
|
||||
Nextcloud ist im Setup auf den **Cron-Modus** eingestellt. Ein dedizierter Container übernimmt die Aufgaben automatisch.
|
||||
|
||||
Um sicherzugehen, dass das Host-System den Cron triggert (optionaler Best-Practice), kann ein Crontab-Eintrag erstellt werden:
|
||||
|
||||
```bash
|
||||
# Öffne Crontab
|
||||
crontab -e
|
||||
|
||||
# Füge diese Zeile hinzu (alle 5 Min):
|
||||
*/5 * * * * docker compose -f /srv/docker/nextcloud/compose.yml exec --user www-data app php -f /var/www/html/cron.php
|
||||
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📧 E-Mail Konfiguration
|
||||
|
||||
Die Mail-Einstellungen werden direkt über die `.env` gesteuert. Nach dem ersten Login unter:
|
||||
`Einstellungen -> Grundeinstellungen -> E-Mail-Server` prüfen und eine Test-Mail senden.
|
||||
|
||||
---
|
||||
|
||||
## 🛠 Fehlerbehebung
|
||||
|
||||
* **Header-Warnung (Trusted Proxies):** Diese wird durch die Variablen `TRUSTED_PROXIES_RANGE_1/2` in der `.env` gelöst.
|
||||
* **Secure Connection Error:** Wenn `OVERWRITEPROTOCOL=https` gesetzt ist, muss der Zugriff zwingend über den Nginx Proxy Manager mit SSL erfolgen (nicht direkt über IP:8080).
|
||||
|
||||
---
|
||||
|
||||
47
compose.yml
47
compose.yml
@@ -1,9 +1,3 @@
|
||||
volumes:
|
||||
nextcloud:
|
||||
db_data:
|
||||
npm_data:
|
||||
npm_letsencrypt:
|
||||
|
||||
services:
|
||||
# --- DATENBANK ---
|
||||
db:
|
||||
@@ -13,10 +7,10 @@ services:
|
||||
volumes:
|
||||
- ./data_db:/var/lib/mysql
|
||||
environment:
|
||||
- MYSQL_ROOT_PASSWORD=sqlroot
|
||||
- MYSQL_PASSWORD=nc_pass
|
||||
- MYSQL_DATABASE=nextcloud
|
||||
- MYSQL_USER=nextcloud
|
||||
- MYSQL_ROOT_PASSWORD=${SQL_ROOT_PASSWORD}
|
||||
- MYSQL_PASSWORD=${SQL_PASSWORD}
|
||||
- MYSQL_DATABASE=${SQL_DATABASE}
|
||||
- MYSQL_USER=${SQL_USER}
|
||||
|
||||
# --- CACHE & LOCKING ---
|
||||
redis:
|
||||
@@ -35,21 +29,32 @@ services:
|
||||
volumes:
|
||||
- ./data_nextcloud:/var/www/html
|
||||
environment:
|
||||
- MYSQL_PASSWORD=nc_pass
|
||||
- MYSQL_DATABASE=nextcloud
|
||||
- MYSQL_USER=nextcloud
|
||||
- MYSQL_PASSWORD=${SQL_PASSWORD}
|
||||
- MYSQL_DATABASE=${SQL_DATABASE}
|
||||
- MYSQL_USER=${SQL_USER}
|
||||
- MYSQL_HOST=db
|
||||
- REDIS_HOST=redis
|
||||
- NEXTCLOUD_UPDATE=1
|
||||
# Hier deine tatsächliche LXC-IP eintragen:
|
||||
- NEXTCLOUD_TRUSTED_DOMAINS=10.174.243.69 localhost
|
||||
- TRUSTED_PROXIES=nginx-proxy-manager
|
||||
# Auf http lassen für lokale Tests ohne SSL-Zertifikat:
|
||||
- OVERWRITEPROTOCOL=http
|
||||
- NC_serverid=meine-tolle-id-123
|
||||
- NC_default_phone_region=DE
|
||||
# Nutzt Variablen aus der .env
|
||||
- NEXTCLOUD_TRUSTED_DOMAINS=localhost ${NEXTCLOUD_IP}
|
||||
- TRUSTED_PROXIES=${TRUSTED_PROXIES_RANGE_1} ${TRUSTED_PROXIES_RANGE_2}
|
||||
- OVERWRITEPROTOCOL=${OVERWRITEPROTOCOL}
|
||||
- NC_serverid=${NC_SERVERID}
|
||||
- NC_default_phone_region=${NC_DEFAULT_PHONE_REGION}
|
||||
- PHP_MEMORY_LIMIT=512M
|
||||
- PHP_UPLOAD_LIMIT=10G
|
||||
- NEXTCLOUD_ADMIN_USER=${NEXTCLOUD_ADMIN_USER}
|
||||
- NEXTCLOUD_ADMIN_PASSWORD=${NEXTCLOUD_ADMIN_PASSWORD}
|
||||
- NEXTCLOUD_DATA_DIR=/var/www/html/data
|
||||
# E-Mail (SMTP) Konfiguration
|
||||
- MAIL_FROM_ADDRESS=${MAIL_FROM_ADDRESS}
|
||||
- MAIL_DOMAIN=${MAIL_DOMAIN}
|
||||
- SMTP_HOST=${SMTP_HOST}
|
||||
- SMTP_PORT=${SMTP_PORT}
|
||||
- SMTP_NAME=${SMTP_NAME}
|
||||
- SMTP_PASSWORD=${SMTP_PASSWORD}
|
||||
- SMTP_SECURE=${SMTP_SECURE}
|
||||
- SMTP_AUTHTYPE=${SMTP_AUTHTYPE}
|
||||
|
||||
# --- HINTERGRUND-AUFGABEN (CRON) ---
|
||||
cron:
|
||||
@@ -62,7 +67,7 @@ services:
|
||||
- db
|
||||
- redis
|
||||
|
||||
# --- NGINX PROXY MANAGER (GUI) ---
|
||||
# --- NGINX PROXY MANAGER ---
|
||||
nginx-proxy-manager:
|
||||
image: 'jc21/nginx-proxy-manager:latest'
|
||||
restart: always
|
||||
|
||||
49
example.env
Normal file
49
example.env
Normal file
@@ -0,0 +1,49 @@
|
||||
# ==============================================================================
|
||||
# NEXTCLOUD CONFIGURATION - EXAMPLE .ENV
|
||||
# ==============================================================================
|
||||
|
||||
# --- DATENBANK (MariaDB) ---
|
||||
# Passwörter für die Datenbank-Erstellung
|
||||
SQL_ROOT_PASSWORD=super_geheimes_root_passwort
|
||||
SQL_PASSWORD=nc_datenbank_passwort_123
|
||||
SQL_DATABASE=nextcloud
|
||||
SQL_USER=nextcloud
|
||||
|
||||
# --- NEXTCLOUD ADMIN ACCOUNT ---
|
||||
# Diese Zugangsdaten werden bei der Erstinstallation erstellt
|
||||
NEXTCLOUD_ADMIN_USER=admin
|
||||
NEXTCLOUD_ADMIN_PASSWORD=dein_starkes_admin_passwort
|
||||
|
||||
# --- NETZWERK & ERREICHBARKEIT ---
|
||||
# Die IP deines Docker-Hosts/LXC (Wichtig für Trusted Domains)
|
||||
NEXTCLOUD_IP=10.174.243.69
|
||||
|
||||
# Docker-Netzwerkbereiche für den Proxy (Standardwerte meist ausreichend)
|
||||
TRUSTED_PROXIES_RANGE_1=172.18.0.0/16
|
||||
TRUSTED_PROXIES_RANGE_2=172.16.0.0/12
|
||||
|
||||
# Protokoll: Nutze 'http' für lokale Tests, 'https' sobald NPM mit SSL läuft
|
||||
OVERWRITEPROTOCOL=http
|
||||
|
||||
# --- NEXTCLOUD SPEZIFISCH ---
|
||||
# Eine eindeutige ID für deine Instanz (beliebiger String)
|
||||
NC_SERVERID=nc_instanz_forchheim_01
|
||||
# Telefon-Ländercode (wird für die Formatierung von Nummern benötigt)
|
||||
NC_DEFAULT_PHONE_REGION=DE
|
||||
|
||||
# --- E-MAIL (SMTP) KONFIGURATION ---
|
||||
# Absender: nextcloud@deine-domain.de
|
||||
MAIL_FROM_ADDRESS=nextcloud
|
||||
MAIL_DOMAIN=deine-domain.de
|
||||
|
||||
# Server-Daten deines Mail-Providers
|
||||
SMTP_HOST=smtp.dein-anbieter.de
|
||||
SMTP_PORT=587
|
||||
SMTP_NAME=deine-mail@deine-domain.de
|
||||
SMTP_PASSWORD=dein_mail_passwort
|
||||
SMTP_SECURE=tls
|
||||
SMTP_AUTHTYPE=LOGIN
|
||||
|
||||
# --- PERFORMANCE ---
|
||||
PHP_MEMORY_LIMIT=512M
|
||||
PHP_UPLOAD_LIMIT=10G
|
||||
52
init-nextcloud.sh
Normal file
52
init-nextcloud.sh
Normal file
@@ -0,0 +1,52 @@
|
||||
#!/bin/bash
|
||||
|
||||
# --- VARIABLEN (Optional: Später in .env auslagern) ---
|
||||
NEXTCLOUD_IP="10.174.243.69"
|
||||
|
||||
# --- DOCKER HOCHFAHREN ---
|
||||
echo "Starte Docker-Container..."
|
||||
docker compose up -d
|
||||
|
||||
echo "Warte auf die Initialisierung von Nextcloud..."
|
||||
# Warteschleife: Prüft, ob Nextcloud fertig installiert ist
|
||||
until docker compose exec --user www-data app php occ status 2>/dev/null | grep -q "installed: true"; do
|
||||
echo -n "."
|
||||
sleep 5
|
||||
done
|
||||
echo -e "\nNextcloud ist bereit. Starte Konfiguration..."
|
||||
|
||||
# --- DATENBANK-OPTIMIERUNGEN ---
|
||||
echo "Optimiere Datenbank..."
|
||||
docker compose exec --user www-data app php occ db:add-missing-indices
|
||||
docker compose exec --user www-data app php occ db:convert-filecache-bigint --no-interaction
|
||||
docker compose exec --user www-data app php occ maintenance:repair --include-expensive
|
||||
|
||||
# --- WARTUNGSFENSTER ---
|
||||
# Legt fest, dass schwere Aufgaben (wie App-Updates) um 01:00 Uhr nachts laufen
|
||||
docker compose exec --user www-data app php occ config:system:set maintenance_window_start --value=1 --type=integer
|
||||
|
||||
# --- APPS INSTALLIEREN ---
|
||||
echo "Installiere Must-Have Apps..."
|
||||
apps=(calendar contacts notes deck circles groupfolders previewgenerator tasks)
|
||||
|
||||
for app in "${apps[@]}"; do
|
||||
echo "Installiere App: $app..."
|
||||
docker compose exec --user www-data app php occ app:install "$app" --no-interaction
|
||||
done
|
||||
|
||||
# --- VORSCHAU-OPTIMIERUNG ---
|
||||
echo "Konfiguriere Vorschaubilder (Performance)..."
|
||||
docker compose exec --user www-data app php occ config:system:set preview_max_x --value 1024
|
||||
docker compose exec --user www-data app php occ config:system:set preview_max_y --value 1024
|
||||
|
||||
# --- HINTERGRUNDAUFGABEN (CRON) ---
|
||||
echo "Stelle Hintergrundaufgaben auf Cron um..."
|
||||
docker compose exec --user www-data app php occ background:cron
|
||||
|
||||
echo "Führe ersten Cron-Job manuell aus..."
|
||||
docker compose exec --user www-data cron php -f /var/www/html/cron.php
|
||||
|
||||
echo "----------------------------------------------------"
|
||||
echo "Setup erfolgreich abgeschlossen!"
|
||||
echo "Nextcloud ist unter http://${NEXTCLOUD_IP}:8080 erreichbar."
|
||||
echo "----------------------------------------------------"
|
||||
Reference in New Issue
Block a user