Skip to main content

Teil 3: Downloading, installing and configuring Nextcloud

Nextcloud in Debian 13 auf Proxmox einrichten

Objective of This Section

In diesemthis Abschnittsection, installierenwe wirinstall Nextcloud vollständigcompletely aufon demthe vorbereitetenprepared Debian-13-System.Debian Dazu13 richtensystem. wirWe denset LAMP-Stackup ein,the konfigurierenLAMP stack, configure Apache undand PHP passendspecifically fürfor Nextcloud, bindenintegrate dasthe Datenverzeichnisdata außerhalbdirectory desoutside Webrootsthe einwebroot, undand schließencomplete diethe Installationinstallation inklusiveincluding grundlegenderessential Optimierungen ab.optimizations.

AmAt Endethe diesesend Abschnitts:of this section:

    läuft Nextcloud unteris running under cloud.zn80.net liegenAll alleuser Nutzerdatendata sauberis unterstored cleanly under /srv/cloud.zn80.net/data istThe diedatabase Datenbankis abgesichertsecured undand angebundenproperly connected sind Caching, Proxy-Betriebproxy undoperation, optionaleand Performance-Featuresoptional vorbereitetperformance features are prepared

    WichtigerImportant SicherheitshinweisSecurity Notice

    FürFor einensecure sicherenoperation Betriebon imthe Internetpublic istinternet, eina Reverse-Proxyreverse mitproxy with HTTPS zwingendis erforderlichmandatory (z.e.g., B. Nginx Proxy Manager,Manager, TraefikTraefik, oderor reinera standalone Nginx mitsetup with Let’s Encrypt).

    OhneWithout HTTPS (undand HSTS)HSTS), rateit ichis dringendstrongly davondiscouraged ab,to dieexpose Nextcloud-Instanzthe ausNextcloud deminstance lokalenbeyond Netzwerkthe herauslocal erreichbarnetwork. zuYou machen.may Duoperate kannstit sieinternally problemlosfirst erstand nurenable internexternal nutzenaccess undlater diewith Veröffentlichunga mitproxy Proxyand +certificate Zertifikatat späterany jederzeit nachholen.time.

    WeitereFurther Infos:information:

      Nextcloud-Admin-Doku:Nextcloud Admin Documentation: HTTPS einrichtenSetup & Server härtenHardening Nextcloud-Admin-Doku:Nextcloud Admin Documentation: SSL/TLS-KonfigurationTLS Configuration Let’s Encrypt offizielleOfficial SeiteWebsite

      Update the System aktualisieren

      BevorBefore wirbeginning mitthe derinstallation, eigentlichenensure Installationthe beginnen,system bringenis wirfully dasup Systemto auf den aktuellen Stand – falls noch nicht geschehen.date:

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

      Install and Secure MariaDB installieren und absichern

      ZuerstInstall installierenthe wirdatabase denserver Datenbankserverand und den Client.client:

      sudo apt install mariadb-server mariadb-client-compat
      

      AnschließendEnter wechselnthe wirMariaDB inshell dieand MariaDB-Shellcreate und legen die Datenbank fürthe Nextcloud an.database:

      sudo mariadb
      

      InnerhalbInside derthe MariaDB-Shell:MariaDB shell:

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

      NunSecure sichernthe wirMariaDB die MariaDB-Installation ab.installation:

      sudo mysql_secure_installation
      
        unix_socket authentication: n root-PasswortSet setzen:root password: Y anonymeRemove Nutzeranonymous entfernen:users: Y Remote-Root-LoginDisallow verbieten:remote root login: Y TestdatenbankRemove entfernen:test database: Y PrivilegienReload neuprivilege laden:tables: Y

        Install Apache, PHP, and Required Extensions

        Install Apache indirectly via PHP undpackages benötigtealong Erweiterungenwith installierenall

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

        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ßendEnable aktivierenrequired wirPHP die benötigten PHP-Module.modules:

        sudo phpenmod apcu bcmath gmp imagick intl unzip
        

        ZusätzlichEnsure stellenunzip wirand sicher,wget dassare unzip und wget vorhanden sind.installed:

        sudo apt install unzip wget
        

        Download and Prepare Nextcloud herunterladen und vorbereiten

        NunDownload ladenand wirextract diethe aktuellelatest Nextcloud-VersionNextcloud herunter und entpacken sie.version:

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

        DasRename entpacktethe Verzeichnisextracted benennendirectory wirto aufthe denservice FQDN desand Dienstesmove umit undinto verschiebenApache’s esweb in das Apache-Webverzeichnis.directory:

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

        DieDisable Apache-Standardseitethe deaktivierenApache wir.default site:

        sudo a2dissite 000-default.conf
        

        BenötigteEnable Apache-Modulerequired aktivierenApache wir ebenfalls.modules:

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

        ⚠️Note: Hinweis:
        AnstelleInstead of latest.zip, zuspecific laden,previous gibtversions es(e.g., auch die Möglichkeit, vorherige Versionen herunterzuladen, z. B. nextcloud-29.zip oderor 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) odercan holebe neuedownloaded Versionenfrom manuellthe vonofficial derrelease offiziellenarchive Download-Seite.if required for compatibility reasons. However, running outdated versions on the public internet is not recommended.


        Create Apache Virtual Host fürfor Nextcloud anlegen

        WirCreate erstellenthe nunconfiguration die Apache-Konfiguration für cloud.zn80.net.file:

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

        InhaltInsert derthe Datei:following content:

        <VirtualHost *:80>
            ServerAdmin mail@cbrueggenolte.demail@example.com
            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>
        

        DieDo Sitenot wirdenable nochthe nichtsite aktiviert.yet.


        Optimize PHP fürfor Nextcloud optimieren

        WirEdit passenPHP nun die PHP-Konfiguration an.configuration:

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

        FolgendeAdjust Wertethe setzenfollowing oder anpassen:values:

        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
        

        NunEnable aktivierenthe wirsite dieand Siterestart und laden Apache neu.Apache:

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

        FürEnable CLI-CachingAPCu aktivierenfor wir APCu.CLI:

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

        Am Ende ergänzen:Append:

        apc.enable_cli=1
        

        Restart Apache erneut neu starten.again:

        sudo systemctl restart apache2
        

        DatenverzeichnisPrepare vorbereitenthe Data Directory

        DasThe Nextcloud-DatenverzeichnisNextcloud darf/solltedata directory must nichtnot imbe Webrootlocated liegen.inside the webroot.

        ZuerstEnsure stellenthe wirmount sicher,point dass das Mount-Ziel existiert.exists:

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

        InTest der /etc/fstab ist die Datenfestplatte bereits eingetragen. Nun testen wir den Mount.mounting:

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

        AnschließendCreate erstellenthe wiractual dasdata eigentlichedirectory Datenverzeichnisand undapply setzensecure sichere Berechtigungen.permissions:

        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 vonBased Nextcloud Installation

        image-1769789743389.pngOpen in your browser:

        Rufe im Browser

        http://cloud.zn80.net
        auf.

        Provide the following:

        EinzugebenAdmin sind:

        Admin-Benutzer:user:

          Benutzername:Username: nextcloud_admin Passwort:Password: eigenes,secure sicherescustom Passwortpassword

          Datenverzeichnis:Data directory:

          /srv/cloud.zn80.net/data
          

          Datenbank:Database:

            Benutzer:User: nextcloud Datenbank:Database: nextcloud Passwort:Password: Datenbank-Passwortdatabase password Server: localhost:3306

            Nextcloud

            After Appsinstallation,

            Ichreturn habeto hierthe fürcommand 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.line.


            Post-Install-OptimierungenInstallation Optimizations

            Obwohl

            Optimize wir gerade das Installationsprogramm durchgesehen haben, gibt es ein paar Dinge, diethe 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-DatenbankDatabase

            ZuerstTemporarily machenmake wirthe dasocc occ-CLI-ToolCLI temporärtool ausführbar.executable:

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

            FehlendeAdd Datenbank-Indizesmissing ergänzen:database indices:

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

            ReparaturenRun durchführen:repair tasks:

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

            AnschließendRemove dasexecutable Ausführungsbitpermission wieder entfernen.again:

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

            DieSecure Konfigurationsdateiconfiguration absichern:file:

            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.


            Configure Trusted Proxies, TrustedDomains, Domains undand Caching konfigurieren

            DieEdit Konfigurationsdateiconfiguration öffnen:file:

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

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

            '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',
            

            KurzeRun Erklärung:repair command:

            • 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.


            Install Redis installieren(Optional, (optional, empfohlen)Recommended)

            Redis verbessert Performance und Dateisperren deutlich.

            Installation:Install:

            sudo apt install redis-server php-redis
            

            RedisAdd konfigurieren:

            configuration
            in sudo nano /etc/redis/redis.confconfig.php

            Anpassen:

            • port 6379 → port 0
            • # unixsocket /run/redis/redis-server.sock → auskommentieren
            • # unixsocketperm 700 → unixsocketperm 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,
            ],
            

            DiensteRestart neu starten:services:

            sudo systemctl restart redis
            sudo systemctl restart apache2

            Optionaler Test:

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

            DamitThe istNextcloud dieinstallation Nextcloud-Installationis abgeschlossennow undcomplete sauberand aufgesetzt.properly Imconfigured.

            Teil

            In 4:Part Sinnvolle4, Einstellungenadditional undsecurity absichernhardening desand Systems

            recommended gibtconfiguration esadjustments dannwill nochbe einimplemented. paar sinnvolle Dinge die man einrichten und umsetzen kann, um das System etwas sicherer zu machen.