Nextcloud Cheatsheet / occ

News: https://nextcloud.com/blog/category/release/

3rd party cloud CLI: https://www.lightaffaire.com/koken/pages/code/

Status

  • sudo -u www-data php /var/www/nextcloud/occ status

Reset Admin Password

  • sudo -u www-data php /var/www/nextcloud/occ user:resetpassword admin

Scan files

  • sudo -u www-data php /var/www/nextcloud/occ files:scan -v --all
  • sudo -u www-data php /var/www/nextcloud/occ files:scan -v myusername
  • sudo -u www-data php /var/www/nextcloud/occ files:scan -v --path="/myusername/files/myfolder/mysubfolder" myusername
  • For external storage one has to use a user, e.g. admin
    • sudo -u www-data /usr/bin/php /var/www/nextcloud/occ files:scan -v --path="/admin/files/name_of_external_storage"

Error while scanning: "Entry path/to/file will not be accessible due to incompatible encoding"

  • German Umlauts with different encoding (OS X normalization form D for UTF-8)
  • Solution:
    • apt install convmv
    • convmv -f utf-8 -t utf-8 --nfc -r /srv/nextcloud/
    • check, then with --notest
    • convmv -f utf-8 -t utf-8 --nfc -r --notest /srv/nextcloud/
    • + rescan with occ

Upgrade

  • sudo -u www-data php /var/www/nextcloud/occ update:check
  • sudo -u www-data php /var/www/nextcloud/updater/updater.phar --no-interaction
  • sudo -u www-data php /var/www/nextcloud/occ upgrade

Turn maintenance mode on/off

  • sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
  • sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off

Add missing indices

  • sudo -u www-data php /var/www/nextcloud/occ db:add-missing-indices

Convert to bigint

  • sudo -u www-data php /var/www/nextcloud/occ db:convert-filecache-bigint

Add missing columns:

  • sudo -u www-data php /var/www/nextcloud/occ db:add-missing-columns

Add missing primary keys:

  • sudo -u www-data php /var/www/nextcloud/occ db:add-missing-primary-keys

Fix interupted upgrades

  • sudo -u www-data php /var/www/nextcloud/occ maintenance:repair

Fix stuck upgrades (Error "Step 3/4 is currently in process")

  • mv /srv/nextcloud/updator-xxxx /srv/nextcloud/BROKEN-updator-xxxx
  • sudo -u www-data php /var/www/nextcloud/updater/updater.phar --no-interaction
  • (Step 3 = backup, step 4 = Download ?)

Config

Trashbin

  • vi /var/www/nextcloud/config/config.php
    • 'trashbin_retention_obligation' => '21, 28', // keep min 21 max 28 days
  • sudo -u www-data php /var/www/nextcloud/occ trashbin:expire

Install apps from the command line

https://docs.nextcloud.com/server/20/admin_manual/configuration_server/occ_command.html#apps-commands-label

  • sudo -u www-data php /var/www/nextcloud/occ app:list
  • sudo -u www-data php /var/www/nextcloud/occ app:install files_external
  • sudo -u www-data php /var/www/nextcloud/occ app:enable files_external

Configure

  • sudo -u www-data php /var/www/nextcloud/occ config:list

Clients

Ubuntu

Integration with Nautilus

  • sudo apt install nautilus-nextcloud
    • old: python-nautilus nextcloud-client-nautilus
  • Log off / Log in again

Issues

Upgrade to version 29 failed:

  • sudo -u www-data php /var/www/nextcloud/occ upgrade
    Nextcloud or one of the apps require upgrade - only a limited number of commands are available
    You may use your browser or the occ upgrade command to do the upgrade
    Setting log level to debug
    Updating database schema
    Updated database
    InvalidArgumentException: Index name "recent_contact_last_contact" for table "oc_recent_contact_old" collides with the constraint on table "oc_recent_contact".
    Update failed

    Maintenance mode is kept active
    Resetting log level

  • -- From oc_recent_contact_old
    DROP INDEX recent_contact_actor_uid ON oc_recent_contact_old;
    DROP INDEX recent_contact_uid ON oc_recent_contact_old;
    DROP INDEX recent_contact_email ON oc_recent_contact_old;
    DROP INDEX recent_contact_fed_id ON oc_recent_contact_old;
    DROP INDEX recent_contact_last_contact ON oc_recent_contact_old;
    DROP INDEX recent_contact_id_uid ON oc_recent_contact_old;

    -- From oc_dav_cal_proxy_old
    DROP INDEX dav_cal_proxy_uidx ON oc_dav_cal_proxy_old;
    DROP INDEX dav_cal_proxy_ioid ON oc_dav_cal_proxy_old;
    DROP INDEX dav_cal_proxy_ipid ON oc_dav_cal_proxy_old;

    -- From oc_user_status_old
    DROP INDEX user_status_uid_ix ON oc_user_status_old;
    DROP INDEX user_status_clr_ix ON oc_user_status_old;
    DROP INDEX user_status_tstmp_ix ON oc_user_status_old;
    DROP INDEX user_status_iud_ix ON oc_user_status_old;

    -- From oc_direct_edit_old
    DROP INDEX IDX_4D5AFECA5F37A13B ON oc_direct_edit_old;

Calendar

CSS fix for V16 / V1.7.0

  • Menu -> Apps -> Add/Enable "Custom CSS" app
  • Menu -> Settings -> Administration -> Theming
  • Add custom CSS and save:
    • /* Fix mobile right sidebar issues (create, update buttons hidden) */
      
       @media only screen and (max-height: 760px) {
      
        #app-sidebar {
          height: auto; /* there are problems with the height calculation */
          width: auto; /* use max width on mobile */
          top: 0; /* surpress top margin when not fixed (see below */
        }
      
        .modal-content #app-sidebar {
          position: relative;      /* do not fix sidebar to right side */
        }
      }
      
      /* OTHER TWEAKS */
      
      /* bold time */
      .fc-day-grid-event .fc-time {
          opacity: 1;
          font-size: 90%;
          font-weight: bold;
      }
      
      /* show event name in mobile */
      .fc-day-grid-event .fc-content {
          white-space: normal;
      }

Install OnlyOffice in Nextcloud 18

 

Update to PHP7.4 on Ubuntu 18.04

  • apt --yes remove 'php*'
  • add-apt-repository ppa:ondrej/php
  • apt update
  • apt install php7.4-gd php7.4-ldap php7.4-imap php7.4-json php7.4-curl php7.4-intl php7.4-bcmath php7.4-gmp php7.4-imagick php7.4-mbstring php7.4-redis php7.4-xml php7.4-zip php7.4-apcu php7.4-apcu-bc php7.4-mysql

 

With FPM

  • a2dismod php7.4 mpm_prefork
  • apt install php7.4-fpm
  • a2enmod mpm_event proxy_fcgi setenvif
  • a2enconf php7.4-fpm
  • vi /etc/apache2/apache2.conf
    • # Enable http2
      Protocols h2 h2c http/1.1

      # Add security headers
            Header always add Strict-Transport-Security "max-age=15768000; includeSubDomains; preload"

 

  • vi /etc/php/7.4/fpm/pool.d/www.conf
    •       pm = dynamic
            pm.max_children = 120
            pm.start_servers = 12
            pm.min_spare_servers = 6
            pm.max_spare_servers = 18
  • vi /etc/php/7.4/fpm/php.ini
    • memory_limit = 512M

    • [opcache]
      ; Determines if Zend OPCache is enabled
      opcache.enable = 1

      ; Determines if Zend OPCache is enabled for the CLI version of PHP
      opcache.enable_cli = 1

      ; The OPcache shared memory storage size.
      opcache.memory_consumption = 128

      ; The amount of memory for interned strings in Mbytes.
      opcache.interned_strings_buffer = 8

      ; The maximum number of keys (scripts) in the OPcache hash table.
      ; Only numbers between 200 and 1000000 are allowed.
      opcache.max_accelerated_files = 10000
       

      ; How often (in seconds) to check file timestamps for changes to the shared
      ; memory storage allocation. ("1" means validate once per second, but only
      ; once per request. "0" means always validate)
      opcache.revalidate_freq = 1

  •  

    service php7.4-fpm restart