Skip to main content

Teil 3: Nextcloud herunterladen, installieren und einrichten

Nextcloud in Debian 13 auf Proxmox einrichten

In diesem Abschnitt installieren wir Nextcloud vollständig auf dem vorbereiteten Debian-13-System. Dazu richten wir den LAMP-Stack ein, konfigurieren Apache und PHP passend für Nextcloud, binden das Datenverzeichnis außerhalb des Webroots ein und schließen die Installation inklusive grundlegender Optimierungen ab.

Am Ende dieses Abschnitts:

    läuft Nextcloud unter cloud.zn80.net liegen alle Nutzerdaten sauber unter /srv/cloud.zn80.net/data ist die Datenbank abgesichert und angebunden sind Caching, Proxy-Betrieb und optionale Performance-Features vorbereitet

    Wichtiger Sicherheitshinweis

    Für einen sicheren Betrieb im Internet ist ein Reverse-Proxy mit HTTPS zwingend erforderlich (z. B. Nginx Proxy Manager, Traefik oder reiner Nginx mit Let’s Encrypt).

    Ohne HTTPS (und HSTS) rate ich dringend davon ab, die Nextcloud-Instanz aus dem lokalen Netzwerk heraus erreichbar zu machen. Du kannst sie problemlos erst nur intern nutzen und die Veröffentlichung mit Proxy + Zertifikat später jederzeit nachholen.

    Weitere Infos:

      Nextcloud-Admin-Doku: HTTPS einrichten & Server härten Nextcloud-Admin-Doku: SSL/TLS-Konfiguration Let’s Encrypt offizielle Seite

      System aktualisieren

      Bevor wir mit der eigentlichen Installation beginnen, bringen wir das System auf den aktuellen Stand – falls noch nicht geschehen.

      sudo apt update && sudo apt full-upgrade -y
      

      MariaDB installieren und absichern

      Zuerst installieren wir den Datenbankserver und den Client.

      sudo apt install mariadb-server mariadb-client-compat
      

      Anschließend wechseln wir in die MariaDB-Shell und legen die Datenbank für Nextcloud an.

      sudo mariadb
      

      Innerhalb der MariaDB-Shell:

      CREATE DATABASE nextcloud;
      GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost' IDENTIFIED BY '<DATENBANK_PASSWORT>';
      FLUSH PRIVILEGES;
      EXIT;
      

      Nun sichern wir die MariaDB-Installation ab.

      sudo mysql_secure_installation
      

      Empfohlene Antworten:

        unix_socket authentication: n root-Passwort setzen: Y anonyme Nutzer entfernen: Y Remote-Root-Login verbieten: Y Testdatenbank entfernen: Y Privilegien neu laden: Y

        Apache, PHP und benötigte Erweiterungen installieren

        Wir installieren Apache indirekt über die PHP-Pakete sowie alle für Nextcloud notwendigen Erweiterungen.

        sudo apt install imagemagick-7.q16 php php-apcu php-bcmath php-cli php-common php-curl php-gd php-gmp php-imagick php-intl php-mbstring php-mysql php-zip php-bz2 php-xml
        

        Anschließend aktivieren wir die benötigten PHP-Module.

        sudo phpenmod apcu bcmath gmp imagick intl unzip
        

        Zusätzlich stellen wir sicher, dass unzip und wget vorhanden sind.

        sudo apt install unzip wget
        

        Nextcloud herunterladen und vorbereiten

        Nun laden wir die aktuelle Nextcloud-Version herunter und entpacken sie.

        wget https://download.nextcloud.com/server/releases/latest.zip
        unzip latest.zip
        

        Das entpackte Verzeichnis benennen wir auf den FQDN des Dienstes um und verschieben es in das Apache-Webverzeichnis.

        mv nextcloud cloud.zn80.net
        sudo chown -R www-data:www-data cloud.zn80.net
        sudo mv cloud.zn80.net /var/www/
        

        Die Apache-Standardseite deaktivieren wir.

        sudo a2dissite 000-default.conf
        

        Benötigte Apache-Module aktivieren wir ebenfalls.

        sudo a2enmod dir env headers mime rewrite ssl
        sudo systemctl restart apache2
        

        ⚠️ Hinweis:
        Anstelle latest.zip zu laden, gibt es auch die Möglichkeit, vorherige Versionen herunterzuladen, z. B. nextcloud-29.zip oder nextcloud-30.zip von https://download.nextcloud.com/server/releases/. Das kann sinnvoll sein, wenn man Nextcloud-Apps nutzen möchte, die noch nicht mit der aktuellsten Nextcloud-Version kompatibel sind. Hier aber auch der Hinweis, dass es dann nicht ratsam ist, diese Instanz am Internet zu betreiben. Für Updates später nutze am besten den integrierten Updater (occ upgrade) oder hole neue Versionen manuell von der offiziellen Download-Seite.


        Apache Virtual Host für Nextcloud anlegen

        Wir erstellen nun die Apache-Konfiguration für cloud.zn80.net.

        sudo nano /etc/apache2/sites-available/cloud.zn80.net.conf
        

        Inhalt der Datei:

        <VirtualHost *:80>
            ServerAdmin mail@cbrueggenolte.de
            DocumentRoot "/var/www/cloud.zn80.net"
            ServerName cloud.zn80.net
        
            <Directory "/var/www/cloud.zn80.net/">
                Options FollowSymLinks
                AllowOverride All
                Header always set Referrer-Policy "no-referrer"
                Require all granted
                SetEnv HOME /var/www/cloud.zn80.net
                SetEnv HTTP_HOME /var/www/cloud.zn80.net
            </Directory>
        
            TransferLog /var/log/apache2/cloud.zn80.net_access.log
            ErrorLog /var/log/apache2/cloud.zn80.net_error.log
        </VirtualHost>
        

        Die Site wird noch nicht aktiviert.


        PHP für Nextcloud optimieren

        Wir passen nun die PHP-Konfiguration an.

        sudo nano /etc/php/8.4/apache2/php.ini
        

        Folgende Werte setzen oder anpassen:

        memory_limit = 512M
        upload_max_filesize = 200M
        post_max_size = 200M
        max_execution_time = 360
        date.timezone = Europe/Amsterdam
        
        opcache.enable=1
        opcache.memory_consumption=128
        opcache.interned_strings_buffer=16
        opcache.max_accelerated_files=10000
        opcache.revalidate_freq=1
        opcache.save_comments=1
        

        Nun aktivieren wir die Site und laden Apache neu.

        sudo a2ensite cloud.zn80.net.conf
        sudo systemctl restart apache2
        

        Für CLI-Caching aktivieren wir APCu.

        sudo nano /etc/php/8.4/mods-available/apcu.ini
        

        Am Ende ergänzen:

        apc.enable_cli=1
        

        Apache erneut neu starten.

        sudo systemctl restart apache2
        

        Datenverzeichnis vorbereiten

        Das Nextcloud-Datenverzeichnis darf/sollte nicht im Webroot liegen.

        Zuerst stellen wir sicher, dass das Mount-Ziel existiert.

        sudo mkdir -p /srv/cloud.zn80.net
        

        In der /etc/fstab ist die Datenfestplatte bereits eingetragen. Nun testen wir den Mount.

        sudo mount -a
        df -h /srv/cloud.zn80.net
        

        Anschließend erstellen wir das eigentliche Datenverzeichnis und setzen sichere Berechtigungen.

        sudo mkdir /srv/cloud.zn80.net/data
        sudo chown -R www-data:www-data /srv/cloud.zn80.net/data
        sudo chmod -R 750 /srv/cloud.zn80.net/data
        

        Web-Installation von Nextcloud

        image-1769789743389.png

        Rufe im Browser auf.

        Einzugeben sind:

        Admin-Benutzer:

          Benutzername: nextcloud_admin Passwort: eigenes, sicheres Passwort

          Datenverzeichnis:

          /srv/cloud.zn80.net/data
          

          Datenbank:

            Benutzer: nextcloud Datenbank: nextcloud Passwort: Datenbank-Passwort Server: localhost:3306

            Nextcloud Apps

            Ich habe hier für mich entschieden, nur Kalender, Kontakte, Notizen und Talk zu behalten. Die anderen beiden benötige ich vorerst nicht. Man kann sie bei Bedarf aber jederzeit nachinstallieren.

            image-1769789900738.png

            Danach ist ist dieser Teil vorerst abgeschlossen. Wir gehen wieder zurück auf die Kommandozeile.


            Post-Install-Optimierungen

            Obwohl wir gerade das Installationsprogramm durchgesehen haben, gibt es ein paar Dinge, die Nextcloud bei einer Neuinstallation nicht macht. Um diese Optimierungen zu implementieren, markieren Sie zuerst das ausführbare occ-Skript (achten Sie darauf, den Pfad so zu aktualisieren, dass er mit Ihrem übereinstimmt):

            Optimieren der Nextcloud-Datenbank

            Zuerst machen wir das occ-CLI-Tool temporär ausführbar.

            sudo chmod +x /var/www/cloud.zn80.net/occ
            

            Fehlende Datenbank-Indizes ergänzen:

            sudo /var/www/cloud.zn80.net/occ db:add-missing-indices
            

            Reparaturen durchführen:

            sudo /var/www/cloud.zn80.net/occ maintenance:repair --include-expensive
            

            Anschließend das Ausführungsbit wieder entfernen.

            sudo chmod -x /var/www/cloud.zn80.net/occ
            

            Die Konfigurationsdatei absichern:

            sudo chown root:www-data /var/www/cloud.zn80.net/config/config.php
            sudo chmod 660 /var/www/cloud.zn80.net/config/config.php
            

            ⚠️ Hinweis:
            Statt die occ-Datei temporär ausführbar zu machen (chmod +x / -x), ist eine Alternative Methode: sudo -u www-data php /var/www/cloud.zn80.net/occ <befehl>. Das spart unnötige Dateirechte-Änderungen und entspricht der Nextcloud-Dokumentation.


            Trusted Proxies, Trusted Domains und Caching konfigurieren

            Die Konfigurationsdatei öffnen:

            sudo nano /var/www/cloud.zn80.net/config/config.php
            

            Geeignet ergänzen (am besten am Ende des Arrays, vor dem abschließenden );):

            'trusted_proxies' => [
                '192.168.10.105',           // IP deines Reverse Proxys (z. B. Nginx Proxy Manager)
            ],
            'trusted_domains' => [
                'cloud.zn80.net',           // Deine Domain (ohne http/https)
                '192.168.10.120',           // Optional: interne IP der VM, falls du direkt zugreifst
            ],
            'overwrite.cli.url' => 'https://cloud.zn80.net',    // Muss https enthalten, wenn Proxy HTTPS terminiert
            'overwriteprotocol' => 'https',                     // Erzwingt https in Links (wichtig bei Proxy)
            'memcache.local' => '\OC\Memcache\APCu',
            'default_phone_region' => 'DE',
            

            Kurze Erklärung:

              trusted_domains listet alle Domains/IPs auf, unter denen Nextcloud erreichbar sein darf (sonst blockiert sie Zugriffe). overwrite.cli.url + overwriteprotocol sorgen dafür, dass occ-Befehle, E-Mails und interne Links korrekt https://cloud.zn80.net verwenden – auch wenn der Webserver intern nur http sieht.

              Speichere die Datei und führe danach sudo -u www-data php occ maintenance:repair aus, um sicherzustellen, dass alles sauber initialisiert wird.


              Redis installieren (optional, empfohlen)

              Redis verbessert Performance und Dateisperren deutlich.

              Installation:

              sudo apt install redis-server php-redis
              

              Redis konfigurieren:

              sudo nano /etc/redis/redis.conf
              

              Anpassen:

                port 6379port 0 # unixsocket /run/redis/redis-server.sock → auskommentieren # unixsocketperm 700unixsocketperm 770

                www-data zur redis-Gruppe hinzufügen:

                sudo usermod -aG redis www-data
                

                Nextcloud-Konfiguration ergänzen:

                'filelocking.enabled' => true,
                'memcache.locking' => '\OC\Memcache\Redis',
                'redis' => [
                    'host' => '/run/redis/redis-server.sock',
                    'port' => 0,
                    'timeout' => 0.0,
                ],
                

                Dienste neu starten:

                sudo systemctl restart redis
                sudo systemctl restart apache2
                

                Optionaler Test:

                sudo redis-cli -s /run/redis/redis-server.sock MONITOR
                

                Damit ist die Nextcloud-Installation abgeschlossen und sauber aufgesetzt. Im Teil 4: Sinnvolle Einstellungen und absichern des Systems gibt es dann noch ein paar sinnvolle Dinge die man einrichten und umsetzen kann, um das System etwas sicherer zu machen.