Coolify Installation: Anwendungs-Deployment mit Self-Hosted PaaS
Coolify-Installation: Docker- und Git-Integration, Deployment, Datenbanken, SSL und Umgebungsvariablen als selbst gehostete Heroku/Netlify-Alternative.
Nextcloud-Installation mit Docker, Nginx-Konfiguration, Datenbankeinrichtung, SSL-Zertifikat, Dateisynchronisierung, App-Store und Leistungsoptimierung.
Nextcloud ist eine Open-Source, Self-Hosted Alternative zu Cloud-Speicherdiensten wie Google Drive, Dropbox und OneDrive. Neben Dateispeicherung und -synchronisierung bietet es Kalender, Kontakte, Videokonferenzen, Dokumentenbearbeitung und vieles mehr. Diese Anleitung behandelt die Nextcloud-Installation mit Docker Compose, Nginx Reverse Proxy-Konfiguration und Leistungsoptimierung.
Nextcloud ist eine Kollaborationsplattform, die Ihnen die vollständige Kontrolle über Ihre Daten gibt:
mkdir -p /opt/nextcloud/{data,db,redis}
cd /opt/nextcloud
version: '3.8'
services:
db:
image: postgres:16-alpine
container_name: nextcloud-db
restart: unless-stopped
environment:
POSTGRES_DB: nextcloud
POSTGRES_USER: nextcloud
POSTGRES_PASSWORD: starkes-db-passwort
volumes:
- ./db:/var/lib/postgresql/data
networks:
- nextcloud-net
redis:
image: redis:7-alpine
container_name: nextcloud-redis
restart: unless-stopped
command: redis-server --requirepass redis-passwort
volumes:
- ./redis:/data
networks:
- nextcloud-net
app:
image: nextcloud:28-fpm-alpine
container_name: nextcloud-app
restart: unless-stopped
depends_on:
- db
- redis
environment:
POSTGRES_HOST: db
POSTGRES_DB: nextcloud
POSTGRES_USER: nextcloud
POSTGRES_PASSWORD: starkes-db-passwort
NEXTCLOUD_ADMIN_USER: admin
NEXTCLOUD_ADMIN_PASSWORD: admin-passwort
NEXTCLOUD_TRUSTED_DOMAINS: cloud.example.com
REDIS_HOST: redis
REDIS_HOST_PASSWORD: redis-passwort
PHP_MEMORY_LIMIT: 512M
PHP_UPLOAD_LIMIT: 10G
volumes:
- ./data:/var/www/html
networks:
- nextcloud-net
nginx:
image: nginx:alpine
container_name: nextcloud-nginx
restart: unless-stopped
ports:
- "80:80"
- "443:443"
volumes:
- ./data:/var/www/html:ro
- ./nginx.conf:/etc/nginx/nginx.conf:ro
- ./ssl:/etc/ssl/nextcloud:ro
depends_on:
- app
networks:
- nextcloud-net
cron:
image: nextcloud:28-fpm-alpine
container_name: nextcloud-cron
restart: unless-stopped
volumes:
- ./data:/var/www/html
entrypoint: /cron.sh
depends_on:
- db
- redis
networks:
- nextcloud-net
networks:
nextcloud-net:
driver: bridge
# Let's Encrypt-Zertifikat mit Certbot
apt install certbot -y
certbot certonly --standalone -d cloud.example.com
# Zertifikate kopieren
mkdir -p /opt/nextcloud/ssl
cp /etc/letsencrypt/live/cloud.example.com/fullchain.pem /opt/nextcloud/ssl/
cp /etc/letsencrypt/live/cloud.example.com/privkey.pem /opt/nextcloud/ssl/
# Automatische Erneuerung per Cron
echo "0 3 * * * certbot renew --quiet && cp /etc/letsencrypt/live/cloud.example.com/*.pem /opt/nextcloud/ssl/ && docker restart nextcloud-nginx" | crontab -
cd /opt/nextcloud
docker compose up -d
# Logs verfolgen
docker compose logs -f app
# Nach der Installation zugreifen:
# https://cloud.example.com
Nextcloud mit dem occ-Befehlszeilentool verwalten:
# occ-Befehl ausführen
docker exec -u www-data nextcloud-app php occ [befehl]
# Systemstatus prüfen
docker exec -u www-data nextcloud-app php occ status
# Wartungsmodus umschalten
docker exec -u www-data nextcloud-app php occ maintenance:mode --on
docker exec -u www-data nextcloud-app php occ maintenance:mode --off
# Fehlende Indizes hinzufügen
docker exec -u www-data nextcloud-app php occ db:add-missing-indices
# Dateien scannen (neue Dateien erkennen)
docker exec -u www-data nextcloud-app php occ files:scan --all
# Cache leeren
docker exec -u www-data nextcloud-app php occ cache:clear
# Benutzer auflisten
docker exec -u www-data nextcloud-app php occ user:list
# Verfügbare Apps auflisten
docker exec -u www-data nextcloud-app php occ app:list
# Apps installieren
docker exec -u www-data nextcloud-app php occ app:install calendar
docker exec -u www-data nextcloud-app php occ app:install contacts
docker exec -u www-data nextcloud-app php occ app:install talk
docker exec -u www-data nextcloud-app php occ app:install onlyoffice
Redis ist bereits in docker-compose.yml konfiguriert. Zur Nextcloud-Konfiguration hinzufügen:
docker exec -u www-data nextcloud-app php occ config:system:set redis host --value="redis"
docker exec -u www-data nextcloud-app php occ config:system:set redis port --value=6379 --type=integer
docker exec -u www-data nextcloud-app php occ config:system:set redis password --value="redis-passwort"
docker exec -u www-data nextcloud-app php occ config:system:set memcache.local --value="\\OC\\Memcache\\APCu"
docker exec -u www-data nextcloud-app php occ config:system:set memcache.distributed --value="\\OC\\Memcache\\Redis"
docker exec -u www-data nextcloud-app php occ config:system:set memcache.locking --value="\\OC\\Memcache\\Redis"
# Vertrauenswürdige Domain hinzufügen
docker exec -u www-data nextcloud-app php occ config:system:set trusted_domains 1 --value="cloud.example.com"
# Brute-Force-Schutz
docker exec -u www-data nextcloud-app php occ config:system:set auth.bruteforce.protection.enabled --value=true --type=boolean
# 2FA erzwingen
docker exec -u www-data nextcloud-app php occ twofactorauth:enforce --on
Wir empfehlen die Verwendung von SSD-Speicher für Nextcloud auf REXE-Servern. NVMe SSD-Leistung macht bei großen Dateiübertragungen einen entscheidenden Unterschied.
Dieser Fehler tritt auf, weil die Domain, auf die Sie zugreifen, nicht in Nextclouds Liste vertrauenswürdiger Domains ist. Fügen Sie die Domain hinzu mit: 'docker exec -u www-data nextcloud-app php occ config:system:set trusted_domains 1 --value="cloud.example.com"'. Alternativ bearbeiten Sie /opt/nextcloud/data/config/config.php und fügen Sie sie zum trusted_domains-Array hinzu.
Erhöhen Sie die Werte PHP_UPLOAD_LIMIT und PHP_MEMORY_LIMIT in docker-compose.yml. Aktualisieren Sie auch den client_max_body_size-Wert in der Nginx-Konfiguration. Setzen Sie fastcgi_read_timeout auf 3600 oder höher. Starten Sie Container nach den Änderungen neu.
Stellen Sie sicher, dass Redis-Caching aktiv ist. Aktivieren Sie APCu. Fügen Sie Datenbankindizes mit 'occ db:add-missing-indices' hinzu. Wenn Sie PostgreSQL verwenden (schneller als MySQL), führen Sie VACUUM ANALYZE aus. Überprüfen Sie, ob der Cron-Job für die Vorschaugenerierung regelmäßig läuft.
Aktualisieren Sie die Image-Version in docker-compose.yml (z.B. nextcloud:28 → nextcloud:29). Führen Sie 'docker compose pull && docker compose up -d' aus. Führen Sie nach dem Update 'occ upgrade' und 'occ db:add-missing-indices' aus. Erstellen Sie vor größeren Versions-Updates immer ein Backup.
Die Talk-App benötigt einen TURN/STUN-Server. Richten Sie Coturn ein oder verwenden Sie Nextclouds kostenlosen STUN-Server. Konfigurieren Sie die STUN/TURN-Serveradresse in den Talk-Einstellungen. Stellen Sie sicher, dass die Ports 3478 (UDP/TCP) und 5349 (TLS) geöffnet sind.
Aktivieren Sie die App 'External Storage Support' in Nextcloud. Gehen Sie im Admin-Panel zu Settings → Administration → External Storages. Sie können Speichertypen wie S3, FTP, SFTP, SMB/CIFS, WebDAV hinzufügen. Sie können für jeden Benutzer oder jede Gruppe unterschiedlichen externen Speicher definieren.
Coolify-Installation: Docker- und Git-Integration, Deployment, Datenbanken, SSL und Umgebungsvariablen als selbst gehostete Heroku/Netlify-Alternative.
Portainer CE installieren: Docker- und Kubernetes-Verwaltung, Stack-Deployment, Volumes und Netzwerke, Benutzerrechte und GitOps-Integration.
Uptime Kuma mit Docker installieren: HTTP/TCP/DNS/Ping-Monitoring, Benachrichtigungen über Telegram, Discord und E-Mail, Status-Pages und Alarme.