diff --git a/bundles/nextcloud/README.md b/bundles/nextcloud/README.md new file mode 100644 index 0000000..bdd25d2 --- /dev/null +++ b/bundles/nextcloud/README.md @@ -0,0 +1,71 @@ +Nextcloud +========= + +import iphone pictures +---------------------- + +Use Photos app on macOS +- select library in the left sidebar +- select the pictures +- in menu bar open File > Export Unmodified Original for X Photos + +The only reliable way to get some files creation time is being lost with rsync, so +we need to embed those timestamps on macos first: + +```sh +PHOTOS_PATH="/Users/mwiegand/Desktop/photos" +bin/timestamp_icloud_photos_for_nextcloud -d "$PHOTOS_PATH" +rsync -avh --progress --rsync-path="sudo rsync" "$PHOTOS_PATH/" ckn@10.0.0.2:/var/lib/nextcloud/ckn/files/SofortUpload/AutoSort/ +``` + +preview generator +----------------- + +``` +sudo -u www-data php /opt/nextcloud/occ preview:generate-all -w "$(nproc)" -n -vvv +``` + +This index speeds up preview generator dramatically: +```sh +CREATE INDEX CONCURRENTLY oc_filecache_path_hash_idx +ON oc_filecache (path_hash); +``` + +delete previews: +```sh +psql nextcloud -x -c "DELETE FROM oc_previews;" +rm -rf /var/lib/nextcloud/appdata_oci6dw1woodz/preview/* +``` + +https://docs.nextcloud.com/server/stable/admin_manual/configuration_files/previews_configuration.html#maximum-preview-size +```php + 'preview_max_x' => 1920, + 'preview_max_y' => 1920, + 'preview_max_scale_factor' => 4, +``` + +https://github.com/nextcloud/previewgenerator?tab=readme-ov-file#i-dont-want-to-generate-all-the-preview-sizes +```sh +sudo -u www-data php /opt/nextcloud/occ config:app:set --value="64 256" previewgenerator squareSizes +sudo -u www-data php /opt/nextcloud/occ config:app:set --value="" previewgenerator fillWidthHeightSizes # changed +sudo -u www-data php /opt/nextcloud/occ config:app:set --value="" previewgenerator widthSizes +sudo -u www-data php /opt/nextcloud/occ config:app:set --value="" previewgenerator heightSizes +sudo -u www-data php /opt/nextcloud/occ config:app:set preview jpeg_quality --value="75" +sudo -u www-data php /opt/nextcloud/occ config:app:set --value=0 --type=integer previewgenerator job_max_previews # in favour of systemd timer +``` + +gen previews +```sh +php /opt/nextcloud/occ preview:generate-all --workers="$(nproc)" --no-interaction -vvv +``` + +check preview geenration +```sh +find /var/lib/nextcloud/appdata_oci6dw1woodz/preview +# /var/lib/nextcloud/appdata_oci6dw1woodz/preview/6/9/1/f/7/b/4/2822419/64-64-crop.jpg +# /var/lib/nextcloud/appdata_oci6dw1woodz/preview/6/9/1/f/7/b/4/2822419/256-256-crop.jpg +# /var/lib/nextcloud/appdata_oci6dw1woodz/preview/6/9/1/f/7/b/4/2822419/1280-1920-max.jpg + +du -sh /var/lib/nextcloud/appdata_oci6dw1woodz/preview +# 28G /var/lib/nextcloud/appdata_oci6dw1woodz/preview +``` \ No newline at end of file diff --git a/bundles/nextcloud/files/rescan b/bundles/nextcloud/files/rescan deleted file mode 100644 index 9fb8234..0000000 --- a/bundles/nextcloud/files/rescan +++ /dev/null @@ -1,5 +0,0 @@ -#!/bin/bash - -php /opt/nextcloud/occ files:scan --all -php /opt/nextcloud/occ files:scan-app-data -#php /opt/nextcloud/occ preview:generate-all diff --git a/bundles/nextcloud/items.py b/bundles/nextcloud/items.py index 700bc77..f4aa122 100644 --- a/bundles/nextcloud/items.py +++ b/bundles/nextcloud/items.py @@ -146,15 +146,3 @@ actions['nextcloud_add_missing_inidces'] = { f'action:extract_nextcloud', ], } - -# RESCAN - -files['/opt/nextcloud_rescan'] = { - 'source': 'rescan', - 'owner': 'www-data', - 'group': 'www-data', - 'mode': '550', - 'needs': [ - 'action:extract_nextcloud', - ], -} diff --git a/bundles/nextcloud/metadata.py b/bundles/nextcloud/metadata.py index b3ea402..ad7c652 100644 --- a/bundles/nextcloud/metadata.py +++ b/bundles/nextcloud/metadata.py @@ -1,5 +1,5 @@ -import string -from uuid import UUID +from shlex import quote + defaults = { 'apt': { @@ -85,11 +85,35 @@ defaults = { 'user': 'www-data', 'kill_mode': 'process', }, - 'nextcloud-rescan': { - 'command': '/opt/nextcloud_rescan', - 'when': 'Sun 00:00:00', + 'nextcloud-scan-app-data': { + 'command': '/usr/bin/php /opt/nextcloud/occ files:scan-app-data', + 'when': 'yearly', 'user': 'www-data', }, + 'nextcloud-scan-files': { + 'command': '/usr/bin/php /opt/nextcloud/occ files:scan --all', + 'when': 'weekly', + 'user': 'www-data', + 'after': { + 'nextcloud-scan-app-data.service', + }, + }, + 'nextcloud-generate-all-previews': { + 'command': '/bin/bash -c ' + quote('php /opt/nextcloud/occ preview:generate-all --workers="$(nproc)" --no-interaction -vvv'), + 'when': 'monthly', + 'user': 'www-data', + 'after': { + 'nextcloud-scan-files.service', + }, + }, + 'nextcloud-generate-new-previews': { + 'command': '/usr/bin/php /opt/nextcloud/occ preview:pre-generate', + 'when': '*:0/5', # every 5 minutes + 'user': 'www-data', + 'after': { + 'nextcloud-generate-all-previews.service', + }, + }, }, } @@ -134,10 +158,18 @@ def config(metadata): '127.0.0.1', metadata.get('nextcloud/hostname'), ], + 'enabledPreviewProviders': [ + 'OC\\Preview\\Image', + 'OC\\Preview\\Movie', + 'OC\\Preview\\HEIC', + ], + 'preview_max_x': 1920, + 'preview_max_y': 1920, + 'preview_max_scale_factor': 4, 'log_type': 'syslog', 'syslog_tag': 'nextcloud', 'logfile': '', - 'loglevel': 3, + 'loglevel': 2, 'default_phone_region': 'DE', 'versions_retention_obligation': 'auto, 90', 'simpleSignUpLink.shown': False,