Skip to main content

Nextcloud CLI (occ zb files:scan) im Docker Container verwenden

Interaktiv in der Console

docker exec -it -u 33 nextcloud-app-1 /bin/bash
# im container dann zb sowas ausführen:
php occ files:scan --all
# nur Dateien eines bestimmten Users scannen:
php occ files:scan pl-admin

image.png

 

Autoakzeptieren von Gruppenfreigaben bei neu angelegten Usern

image.png

Problem

https://github.com/nextcloud/server/issues/19520
https://github.com/nextcloud/server/issues/18958

Neu angelegte User müssen zuerst Freigaben im Ordner 'Ausstehende Freigaben' akzeptieren, die mit ihrer Gruppe geteilt sind, bevor die freigegebenen Ordner unter ‘Alle Dateien‘ angezeigt werden.

Erhoffte Lösung: zwei Environment Flags

https://docs.nextcloud.com/server/latest/admin_manual/configuration_server/config_sample_php_parameters.html#sharing-enable-share-accept

    sharing.enable_share_accept false

    sharing.force_share_accept false

    Leider keine änderung

    DB Workaround

    https://github.com/nextcloud/server/issues/19520#issuecomment-2210405574

    Man kann die PostgreSQL Tabelle 'oc_share' so abändern, dass der DEFAULT Wert in der Spalte 'accepted' immer 1 ist und nicht 0:

    # interaktiv mit DB-Container verbinden
    docker exec -it nextcloud-db-1 /bin/bash
    
    
    # mit PostgreSQL DB verbinden
    psql -U nextcloud nextcloud
    # oder bei nextcloud-aio manual-install (dbname, dbuser und dbpassword in config/config.php nachsehen)
    psql -U oc_nextcloud -d nextcloud_database
    
    
    # Für Nextcloud OIDC_user_backend App
    # alle bisherigen accepted=0 in =1 ändern:
    UPDATE oc_share SET accepted = 1 WHERE accepted = 0;
    
    
    # Für dauerhaft autoaccept (geht nicht bei Nextcloud OIDC_user_backend App)
    # Default von Spalte accepted ändern (bisherige accepted=0 bleiben unverändert)
    ALTER TABLE oc_share ALTER COLUMN accepted SET DEFAULT 1;
    
    
    # weitere Befehle zum Browsen:
    # alle Tabellen anzeigen
    \dt
    # Tabelleninfos anzeigen
    \d oc_share
    # oc_share anzeigen
    SELECT * FROM oc_share;

     

    Gruppen-IDs anzeigen

    # in postgresql container bashen
    docker exec -it nextcloud-db-1 /bin/bash
    
    
    # in postgresql-db mit nextcloud einloggen
    psql -U nextcloud nextcloud
    # bzw. für nextcloud-aio manual-install container:
    psql -U oc_nextcloud -d nextcloud_database
    
    
    # oc_groups anzeigen
    SELECT * FROM oc_groups;

     

    image.png

    Oder über occ und dann die ID der Benutzer abgleichen und Gruppenbezeichnungen raten:

    docker exec -it -u 33 nextcloud-app-1 /bin/bash
    php occ group:list

    image.png

     

    groupfolders:scan


      occ groupfolders:create <name> → create a group folder occ groupfolders:delete <folder_id> [-f|--force] → delete a group folder and all its contents occ groupfolders:expire → trigger file version expiration (see Nextcloud docs for details) occ groupfolders:group <folder_id> <group_name> [-d|--delete] [write|share|delete] → assign groups and their rights to a group folder occ groupfolders:list → list configured group folders occ groupfolders:permissions → configure advanced permissions (see below for details) occ groupfolders:quota <folder_id> [<quota>|unlimited] → set a quota for a group folder occ groupfolders:rename <folder_id> <name> → rename a group folder occ groupfolders:scan <folder_id> → trigger a filescan for a group folder

      Quelle: https://help.nextcloud.com/t/solved-occ-file-scan-not-working-for-groupfolder/94017 

      Troubleshooting

      Fehlermeldung beim Befehl files:scan --all

      ... "file.pdf" will not be accessible due to incompatible encoding ...

      image.png

      Lösung: https://github.com/nextcloud/server/issues/3136#issuecomment-579470343 

      apt update
      apt install convmv
      # Entweder direkt ohne Test oder --notest weglassen um Vorgang zu testen
      convmv -f utf-8 -t utf-8 -r --notest --nfc <nextcloud-data-folder>

      via Portainer

      https://www.reddit.com/r/NextCloud/comments/croxkm/how_to_use_occ_scan_on_a_docker_install/

      https://docs.nextcloud.com/server/stable/admin_manual/configuration_server/occ_command.html#using-the-occ-command

      zuerst in den Docker container gehen (zb Portainer oder über Konsole) und folgendes Kommando testen:

      php occ maintenance:mode --on

      image.png 

      image.png

      evtl kommt folgende Fehlermeldung:

      root@1dfd70a49980:/var/www/html# php occ maintenance:mode --on
      Console has to be executed with the user that owns the file config/config.php
      Current user id: 0
      Owner id of config.php: 33
      Try adding 'sudo -u #33' to the beginning of the command (without the single quotes)
      If running with 'docker exec' try adding the option '-u 33' to the docker command (without the single quotes)

      danach die Konsole des Containers nochmal starten, diesmal mit dem vorgeschlagenen Nutzer (user id 33 in meinem Fall, wie in der Ausgabe vorgeschlagen):

      image.png

      und dann

      ./occ maintenance:mode --on

      oder wenn man kein portainer nutzt:

      docker exec container_name sudo -u 33 php7 /var/www/html/occ files:scan --all

      image.png

      WICHTIG

      auf den Ordner achten. Auszug aus dem reddit post (siehe oben)

      With something like this, the path to occ is important. It's either under /config/www/nextcloud or /var/www/html.
      Also, if you see occ but you can't run commands like so - occ files:scan <user> then ./occ files:scan <user> can sometimes fix it.