# Nextcloud occ — Wartung und Verwaltung per Kommandozeile

> Praxis-Guide zu Nextcloud occ — Wartung, Nutzer, Apps, Datenbank und Upgrades als Webserver-User per Kommandozeile verwalten.

Source: https://www.jpkc.com/db/cheatsheets/build-languages/nextcloud-occ/

<!-- PROSE:intro -->
occ ist das Administrations- und Wartungswerkzeug von Nextcloud – eine Kommandozeilen-Schnittstelle, mit der du deine Instanz steuerst, ohne den Umweg über die Weboberfläche. Weil occ als Webserver-User laufen muss, rufst du es typischerweise mit `sudo -u www-data php occ <kommando>` aus dem Nextcloud-Wurzelverzeichnis auf – andernfalls schreibt es Dateien mit falschen Rechten und bringt deine Installation durcheinander. Von Wartungsmodus und Upgrades über Nutzer-, Gruppen- und App-Verwaltung bis hin zu Datenbank-Reparaturen und LDAP deckt occ praktisch jede Admin-Aufgabe ab. Dieser Guide zeigt dir die wichtigsten Kommandos für den Alltag.
<!-- PROSE:intro:end -->

## Grundlagen

`sudo -u www-data php occ list` — Listet alle verfügbaren occ-Kommandos auf. Aus dem Nextcloud-Wurzelverzeichnis ausführen.

```bash
sudo -u www-data php occ list
```

`sudo -u www-data php occ help <command>` — Zeigt Hilfe und alle Optionen zu einem bestimmten Kommando.

```bash
sudo -u www-data php occ help files:scan
```

`sudo -u www-data php occ status` — Zeigt den Nextcloud-Status: Version, Installationszustand und Wartungsmodus.

```bash
sudo -u www-data php occ status
```

`sudo -u www-data php occ -V` — Zeigt die Nextcloud- und occ-Version.

```bash
sudo -u www-data php occ -V
```

`sudo -u www-data php occ check` — Führt eine grundlegende Systemprüfung durch (PHP-Version, Datenbank, geladene Module).

```bash
sudo -u www-data php occ check
```

occ in einem Docker-Container oder einer DDEV-Umgebung als Webserver-User ausführen.

```bash
# Docker / container:
docker exec -u www-data nextcloud php occ <command>
# DDEV:
ddev exec -u www-data php occ <command>
```

## Wartungsmodus

`sudo -u www-data php occ maintenance:mode --on` — Aktiviert den Wartungsmodus. Alle Nutzer werden abgemeldet und die Seite zeigt eine Wartungsmeldung.

```bash
sudo -u www-data php occ maintenance:mode --on
```

`sudo -u www-data php occ maintenance:mode --off` — Deaktiviert den Wartungsmodus und macht Nextcloud wieder erreichbar.

```bash
sudo -u www-data php occ maintenance:mode --off
```

`sudo -u www-data php occ maintenance:repair` — Führt die Reparaturroutine aus: behebt Datenbank-Inkonsistenzen, fehlende Indizes und andere häufige Probleme.

```bash
sudo -u www-data php occ maintenance:repair
```

`sudo -u www-data php occ maintenance:repair --include-expensive` — Führt die Reparatur inklusive aufwendiger Operationen aus (z. B. Filecache-Bereinigung). Dauert länger, ist aber gründlicher.

```bash
sudo -u www-data php occ maintenance:repair --include-expensive
```

`sudo -u www-data php occ maintenance:update:htaccess` — Aktualisiert die .htaccess-Datei (nach Änderung des Datenverzeichnisses oder Verschieben der Installation ausführen).

```bash
sudo -u www-data php occ maintenance:update:htaccess
```

`sudo -u www-data php occ maintenance:data-fingerprint` — Aktualisiert den Daten-Fingerprint nach einer Wiederherstellung aus dem Backup. Verhindert Sync-Fehler bei Clients.

```bash
sudo -u www-data php occ maintenance:data-fingerprint
```

Baut die MIME-Typ-Datenbank neu auf und aktualisiert die JavaScript-MIME-Typ-Liste (nach Hinzufügen eigener MIME-Typen ausführen).

```bash
sudo -u www-data php occ maintenance:mimetype:update-db
sudo -u www-data php occ maintenance:mimetype:update-js
```

## Upgrade und Updates

`sudo -u www-data php occ upgrade` — Führt das Nextcloud-Upgrade aus, nachdem der Code durch eine neuere Version ersetzt wurde. Führt DB-Migrationen und Reparaturen aus.

```bash
sudo -u www-data php occ upgrade
```

`sudo -u www-data php occ update:check` — Prüft, ob eine neue Nextcloud-Version verfügbar ist.

```bash
sudo -u www-data php occ update:check
```

Empfohlene Upgrade-Reihenfolge: Wartungsmodus aktivieren, Dateien ersetzen, Upgrade ausführen, Wartungsmodus deaktivieren.

```bash
sudo -u www-data php occ maintenance:mode --on
# Replace Nextcloud files here
sudo -u www-data php occ upgrade
sudo -u www-data php occ maintenance:mode --off
```

## App-Verwaltung

`sudo -u www-data php occ app:list` — Listet alle installierten Apps mit Aktiviert-/Deaktiviert-Status und Version auf.

```bash
sudo -u www-data php occ app:list
```

`sudo -u www-data php occ app:enable <appid>` — Aktiviert eine installierte App.

```bash
sudo -u www-data php occ app:enable calendar
```

`sudo -u www-data php occ app:disable <appid>` — Deaktiviert eine App, ohne sie zu entfernen.

```bash
sudo -u www-data php occ app:disable activity
```

`sudo -u www-data php occ app:install <appid>` — Lädt eine App aus dem Nextcloud App Store herunter und installiert sie.

```bash
sudo -u www-data php occ app:install notes
```

`sudo -u www-data php occ app:remove <appid>` — Entfernt (deinstalliert) eine App vollständig.

```bash
sudo -u www-data php occ app:remove notes
```

`sudo -u www-data php occ app:update <appid>` — Aktualisiert eine bestimmte App auf die neueste Version.

```bash
sudo -u www-data php occ app:update calendar
```

`sudo -u www-data php occ app:update --all` — Aktualisiert alle installierten Apps auf einmal.

```bash
sudo -u www-data php occ app:update --all
```

`sudo -u www-data php occ app:getpath <appid>` — Zeigt den Dateisystempfad einer installierten App.

```bash
sudo -u www-data php occ app:getpath files_sharing
```

## Nutzerverwaltung

`sudo -u www-data php occ user:list` — Listet alle Nutzer auf. Mit --output=json für maschinenlesbare Ausgabe.

```bash
sudo -u www-data php occ user:list
```

`sudo -u www-data php occ user:info <uid>` — Zeigt detaillierte Informationen zu einem bestimmten Nutzer (Anzeigename, E-Mail, Gruppen, Kontingent, Speicher).

```bash
sudo -u www-data php occ user:info alice
```

`sudo -u www-data php occ user:add <uid> --display-name=<name> --group=<group>` — Legt einen neuen Nutzer an. Du wirst nach einem Passwort gefragt, sofern nicht --password-from-env verwendet wird.

```bash
sudo -u www-data php occ user:add alice --display-name='Alice Liddell' --group=users
```

`sudo -u www-data php occ user:delete <uid>` — Löscht einen Nutzer und dessen Daten aus Nextcloud.

```bash
sudo -u www-data php occ user:delete alice
```

`sudo -u www-data php occ user:resetpassword <uid>` — Setzt das Passwort eines Nutzers zurück. Du wirst zur Eingabe des neuen Passworts aufgefordert.

```bash
sudo -u www-data php occ user:resetpassword alice
```

`sudo -u www-data php occ user:disable <uid>` — Deaktiviert ein Nutzerkonto (verhindert die Anmeldung, behält aber die Daten).

```bash
sudo -u www-data php occ user:disable alice
```

`sudo -u www-data php occ user:enable <uid>` — Reaktiviert ein zuvor deaktiviertes Nutzerkonto.

```bash
sudo -u www-data php occ user:enable alice
```

`sudo -u www-data php occ user:setting <uid> <app> <key> <value>` — Setzt eine nutzerspezifische Einstellung (z. B. Sprache, Kontingent). Ohne Wert wird die aktuelle Einstellung gelesen.

```bash
sudo -u www-data php occ user:setting alice core lang de
```

`sudo -u www-data php occ user:report` — Zeigt die Gesamtzahl der Nutzer inklusive LDAP- und SSO-Nutzer.

```bash
sudo -u www-data php occ user:report
```

## Gruppenverwaltung

`sudo -u www-data php occ group:list` — Listet alle Gruppen auf.

```bash
sudo -u www-data php occ group:list
```

`sudo -u www-data php occ group:info <group>` — Zeigt alle Mitglieder einer Gruppe.

```bash
sudo -u www-data php occ group:info admin
```

`sudo -u www-data php occ group:add <group>` — Legt eine neue Gruppe an.

```bash
sudo -u www-data php occ group:add developers
```

`sudo -u www-data php occ group:delete <group>` — Löscht eine Gruppe (löscht nicht die enthaltenen Nutzer).

```bash
sudo -u www-data php occ group:delete developers
```

`sudo -u www-data php occ group:adduser <group> <uid>` — Fügt einen Nutzer zu einer Gruppe hinzu.

```bash
sudo -u www-data php occ group:adduser developers alice
```

`sudo -u www-data php occ group:removeuser <group> <uid>` — Entfernt einen Nutzer aus einer Gruppe.

```bash
sudo -u www-data php occ group:removeuser developers alice
```

## Dateien scannen und aufräumen

`sudo -u www-data php occ files:scan --all` — Scannt die Dateien aller Nutzer und aktualisiert den Filecache. Nach direktem Hinzufügen von Dateien ins Datenverzeichnis ausführen.

```bash
sudo -u www-data php occ files:scan --all
```

`sudo -u www-data php occ files:scan <uid>` — Scannt nur die Dateien eines bestimmten Nutzers.

```bash
sudo -u www-data php occ files:scan alice
```

`sudo -u www-data php occ files:scan --path=<uid>/files/<subdir>` — Scannt ein bestimmtes Unterverzeichnis eines Nutzers.

```bash
sudo -u www-data php occ files:scan --path=alice/files/Photos
```

`sudo -u www-data php occ files:cleanup` — Bereinigt verwaiste Filecache-Einträge für nicht mehr existierenden Speicher.

```bash
sudo -u www-data php occ files:cleanup
```

`sudo -u www-data php occ files:repair-tree` — Repariert die Baumstruktur des Filecache (behebt Eltern-Kind-Beziehungen).

```bash
sudo -u www-data php occ files:repair-tree
```

`sudo -u www-data php occ files:troubleshoot-transfer-ownership` — Findet und behebt Probleme bei Eigentümer-Übertragungen von Dateien.

```bash
sudo -u www-data php occ files:troubleshoot-transfer-ownership
```

`sudo -u www-data php occ files:transfer-ownership <source-uid> <dest-uid>` — Überträgt alle Dateien und Freigaben von einem Nutzer auf einen anderen (z. B. beim Offboarding).

```bash
sudo -u www-data php occ files:transfer-ownership alice bob
```

`sudo -u www-data php occ trashbin:cleanup --all-users` — Leert den Papierkorb aller Nutzer.

```bash
sudo -u www-data php occ trashbin:cleanup --all-users
```

`sudo -u www-data php occ trashbin:cleanup <uid>` — Leert den Papierkorb eines bestimmten Nutzers.

```bash
sudo -u www-data php occ trashbin:cleanup alice
```

`sudo -u www-data php occ versions:cleanup <uid>` — Löscht alle gespeicherten Dateiversionen eines bestimmten Nutzers, um Speicherplatz freizugeben.

```bash
sudo -u www-data php occ versions:cleanup alice
```

## Datenbank

`sudo -u www-data php occ db:add-missing-indices` — Fügt fehlende Datenbank-Indizes hinzu. Verbessert die Performance erheblich. Kann gefahrlos im laufenden Betrieb ausgeführt werden.

```bash
sudo -u www-data php occ db:add-missing-indices
```

`sudo -u www-data php occ db:add-missing-primary-keys` — Fügt fehlende Primärschlüssel zu Datenbanktabellen hinzu. Für einige Upgrades erforderlich.

```bash
sudo -u www-data php occ db:add-missing-primary-keys
```

`sudo -u www-data php occ db:add-missing-columns` — Fügt fehlende Spalten hinzu, die in neueren Nextcloud-Versionen eingeführt wurden.

```bash
sudo -u www-data php occ db:add-missing-columns
```

`sudo -u www-data php occ db:convert-filecache-bigint` — Konvertiert Filecache-IDs zu bigint. Erforderlich für große Instanzen (>4 Milliarden Dateien). Dauert eine Weile.

```bash
sudo -u www-data php occ db:convert-filecache-bigint
```

`sudo -u www-data php occ db:convert-type --all-apps <type> <user> <host> <db>` — Migriert die Nextcloud-Datenbank auf einen anderen Datenbanktyp (z. B. SQLite zu MySQL/PostgreSQL).

```bash
sudo -u www-data php occ db:convert-type mysql ncuser localhost nextcloud
```

## Hintergrundjobs

`sudo -u www-data php occ background:cron` — Setzt den Ausführungsmodus für Hintergrundjobs auf System-Cron (empfohlen).

```bash
sudo -u www-data php occ background:cron
```

`sudo -u www-data php occ background:webcron` — Setzt Hintergrundjobs auf Webcron (ein externer Dienst ruft /cron.php auf).

```bash
sudo -u www-data php occ background:webcron
```

`sudo -u www-data php occ background:ajax` — Setzt Hintergrundjobs auf AJAX (durch Seitenaufrufe ausgelöst). Nicht für den Produktivbetrieb geeignet.

```bash
sudo -u www-data php occ background:ajax
```

`sudo -u www-data php occ background:job:execute <job-id>` — Führt einen bestimmten Hintergrundjob anhand seiner ID manuell aus.

```bash
sudo -u www-data php occ background:job:execute 42
```

`sudo -u www-data php occ background:job:list` — Listet alle registrierten Hintergrundjobs mit letztem Ausführungszeitpunkt und Status auf.

```bash
sudo -u www-data php occ background:job:list
```

Cron-Eintrag, um die Nextcloud-Hintergrundjobs alle 5 Minuten auszuführen. In /etc/crontab oder crontab -u www-data eintragen.

```bash
# Recommended crontab entry (run as root or www-data):
*/5 * * * * www-data php /var/www/html/nextcloud/cron.php
```

## Konfiguration

`sudo -u www-data php occ config:list` — Listet alle System- und App-Konfigurationswerte auf. Passwörter werden maskiert.

```bash
sudo -u www-data php occ config:list
```

`sudo -u www-data php occ config:list system` — Listet nur die Systemkonfiguration auf (entspricht dem Inhalt von config.php).

```bash
sudo -u www-data php occ config:list system
```

`sudo -u www-data php occ config:system:get <key>` — Liest den Wert eines Systemkonfigurations-Schlüssels.

```bash
sudo -u www-data php occ config:system:get version
```

`sudo -u www-data php occ config:system:set <key> --value=<value>` — Setzt einen Systemkonfigurationswert. Schreibt direkt in config/config.php.

```bash
sudo -u www-data php occ config:system:set default_language --value=de
```

`sudo -u www-data php occ config:system:set <key> --type=boolean --value=true` — Setzt einen booleschen Systemkonfigurationswert. Typen: string (Standard), boolean, integer, double.

```bash
sudo -u www-data php occ config:system:set maintenance --type=boolean --value=true
```

`sudo -u www-data php occ config:system:delete <key>` — Löscht einen Systemkonfigurations-Schlüssel aus config.php.

```bash
sudo -u www-data php occ config:system:delete trusted_domains 1
```

Setzt die vertrauenswürdigen Domains (erlaubte Hostnamen). Array-Index 0, 1, 2 … für mehrere Domains verwenden.

```bash
sudo -u www-data php occ config:system:set trusted_domains 0 --value=localhost
sudo -u www-data php occ config:system:set trusted_domains 1 --value=nextcloud.example.com
```

`sudo -u www-data php occ config:app:get <appid> <key>` — Liest einen app-spezifischen Konfigurationswert.

```bash
sudo -u www-data php occ config:app:get mail smtp_host
```

`sudo -u www-data php occ config:app:set <appid> <key> --value=<value>` — Setzt einen app-spezifischen Konfigurationswert.

```bash
sudo -u www-data php occ config:app:set mail smtp_host --value=smtp.example.com
```

## Sicherheit und Verschlüsselung

`sudo -u www-data php occ security:certificates` — Listet alle importierten vertrauenswürdigen SSL-Wurzelzertifikate auf.

```bash
sudo -u www-data php occ security:certificates
```

`sudo -u www-data php occ security:certificates:import <path>` — Importiert ein eigenes CA-Zertifikat, um ihm für ausgehende Verbindungen zu vertrauen (z. B. LDAP, SMTP).

```bash
sudo -u www-data php occ security:certificates:import /tmp/my-ca.crt
```

`sudo -u www-data php occ security:certificates:remove <filename>` — Entfernt ein zuvor importiertes CA-Zertifikat.

```bash
sudo -u www-data php occ security:certificates:remove my-ca.crt
```

`sudo -u www-data php occ encryption:status` — Zeigt, ob die serverseitige Verschlüsselung aktiviert ist und welches Verschlüsselungsmodul aktiv ist.

```bash
sudo -u www-data php occ encryption:status
```

`sudo -u www-data php occ encryption:enable` — Aktiviert die serverseitige Verschlüsselung. Nutzer müssen sich danach anmelden, damit ihre Dateien verschlüsselt werden.

```bash
sudo -u www-data php occ encryption:enable
```

`sudo -u www-data php occ encryption:disable` — Deaktiviert die serverseitige Verschlüsselung. Alle Dateien müssen zuvor entschlüsselt werden.

```bash
sudo -u www-data php occ encryption:disable
```

`sudo -u www-data php occ twofactorauth:enforce --on` — Erzwingt die Zwei-Faktor-Authentifizierung für alle Nutzer.

```bash
sudo -u www-data php occ twofactorauth:enforce --on
```

`sudo -u www-data php occ twofactorauth:disable <uid> <provider>` — Deaktiviert einen bestimmten 2FA-Anbieter für einen Nutzer (z. B. um ein ausgesperrtes Konto wiederherzustellen).

```bash
sudo -u www-data php occ twofactorauth:disable alice totp
```

## Protokollierung

`sudo -u www-data php occ log:manage` — Zeigt das aktuelle Log-Level und die Log-Backend-Konfiguration.

```bash
sudo -u www-data php occ log:manage
```

`sudo -u www-data php occ log:manage --level=<level>` — Setzt das Log-Level. Stufen: debug (0), info (1), warning (2), error (3), fatal (4).

```bash
sudo -u www-data php occ log:manage --level=warning
```

`sudo -u www-data php occ log:manage --backend=file` — Setzt das Log-Backend. Optionen: file (Standard), syslog, errorlog, systemd.

```bash
sudo -u www-data php occ log:manage --backend=syslog
```

`sudo -u www-data php occ log:tail` — Zeigt das Nextcloud-Logfile in Echtzeit (erfordert das Log-Backend 'file').

```bash
sudo -u www-data php occ log:tail
```

`sudo -u www-data php occ log:tail --lines=50` — Zeigt die letzten 50 Zeilen aus dem Nextcloud-Log.

```bash
sudo -u www-data php occ log:tail --lines=50
```

## Freigaben und Föderation

`sudo -u www-data php occ sharing:cleanup-remote-storages` — Bereinigt verwaiste Remote-Freigaben (Überreste föderierter Freigaben nach Löschung eines Nutzers).

```bash
sudo -u www-data php occ sharing:cleanup-remote-storages
```

`sudo -u www-data php occ config:app:set core shareapi_enabled --value=yes` — Aktiviert die Freigabe-API (erlaubt Nutzern das Teilen von Dateien).

```bash
sudo -u www-data php occ config:app:set core shareapi_enabled --value=yes
```

`sudo -u www-data php occ config:app:set core shareapi_allow_links --value=no` — Deaktiviert öffentliche Link-Freigaben für alle Nutzer.

```bash
sudo -u www-data php occ config:app:set core shareapi_allow_links --value=no
```

## LDAP / Active Directory

`sudo -u www-data php occ ldap:show-config` — Zeigt die aktuelle LDAP-Konfiguration (Verbindung, Base-DN, Filter).

```bash
sudo -u www-data php occ ldap:show-config
```

`sudo -u www-data php occ ldap:test-config <config-id>` — Testet die LDAP-Verbindung für ein bestimmtes Konfigurations-Präfix (z. B. s01).

```bash
sudo -u www-data php occ ldap:test-config s01
```

`sudo -u www-data php occ ldap:search --group '' --limit=10` — Sucht nach LDAP-Gruppen (leerer String liefert alle, begrenzt auf 10).

```bash
sudo -u www-data php occ ldap:search --group '' --limit=10
```

`sudo -u www-data php occ ldap:check-user <uid>` — Prüft, ob ein LDAP-Nutzer noch existiert und im Verzeichnis aktiv ist.

```bash
sudo -u www-data php occ ldap:check-user alice
```

`sudo -u www-data php occ ldap:reset-cache` — Leert den LDAP-Cache, um beim nächsten Zugriff frische Abfragen zu erzwingen.

```bash
sudo -u www-data php occ ldap:reset-cache
```

`sudo -u www-data php occ user:sync 'OCA\User_LDAP\User_Proxy' -m remove` — Synchronisiert LDAP-Nutzer: entfernt Nextcloud-Konten für Nutzer, die nicht mehr in LDAP sind. Optionen: -m remove, disable oder ask.

```bash
sudo -u www-data php occ user:sync 'OCA\User_LDAP\User_Proxy' -m disable
```

<!-- PROSE:outro -->
## Fazit

occ ist das Schweizer Taschenmesser der Nextcloud-Administration – fast alles, was sich in der Weboberfläche einstellen lässt (und vieles, das nur hier geht), erledigst du damit schnell und skriptbar. Achte konsequent darauf, occ als korrekten Webserver-User auszuführen (`sudo -u www-data php occ …`); ein versehentlicher Aufruf als `root` setzt Dateirechte falsch und kann die Instanz lahmlegen. Vor Upgrades und größeren Eingriffen aktivierst du den Wartungsmodus (`maintenance:mode --on`), und vor `db:*`, `maintenance:repair` oder dem Zurücksetzen von Passwörtern (`user:resetpassword`) legst du ein Backup von Datenbank und `config/config.php` an – `config:system:set` schreibt direkt in die Konfiguration. So bleibt occ ein mächtiges, aber sicheres Werkzeug.

## Weiterführende Links

- [Nextcloud occ command – Administrationshandbuch](https://docs.nextcloud.com/server/latest/admin_manual/occ_command.html) – offizielle Referenz aller occ-Kommandos (englisch)
- [Nextcloud Admin Manual](https://docs.nextcloud.com/server/latest/admin_manual/) – komplette Server-Administrationsdokumentation (englisch)
<!-- PROSE:outro:end -->

## Verwandte Kommandos

- [artisan](https://www.jpkc.com/db/cheatsheets/build-languages/artisan/) – Kommandozeilen-Werkzeug des Laravel-Frameworks (PHP)
- [cargo](https://www.jpkc.com/db/cheatsheets/build-languages/cargo/) – Paketmanager und Build-Tool für Rust
- [composer](https://www.jpkc.com/db/cheatsheets/build-languages/composer/) – Abhängigkeits-Manager für PHP

