4.9 KiB
Migrating the thumbnail settings
Thumbnails are made by a generator that the webdav service posts an image to. webdav decides which size is produced, keeps the cache and holds the list of types a preview is attempted for. The thumbnails service checks the limits it can see on the image itself.
Every environment variable that moved is still read under its old name, so a deployment configured by environment keeps working. A yaml configuration does not: a key belongs to the service section it sits in, and a key nobody knows is ignored without a word, which leaves the default in place.
v8.x.x to v9.0.0
A generator has to be reachable
The thumbnails service used to be resolved through the service registry. webdav
now posts to a URL, http://127.0.0.1:9186 by default, so a deployment that runs
the services in separate containers has to say where the generator is:
WEBDAV_THUMBNAILS_GENERATOR_URL=http://thumbnails:9186
Nothing has to be set in the single binary. The URL may also point at a real imagor, which speaks the same endpoint.
Settings that changed service
| Old name | Now | |
|---|---|---|
THUMBNAILS_RESOLUTIONS |
WEBDAV_THUMBNAILS_RESOLUTIONS |
a ladder of edge lengths, not a list of boxes |
THUMBNAILS_MAX_INPUT_IMAGE_FILE_SIZE |
OC_THUMBNAILS_MAX_INPUT_IMAGE_FILE_SIZE |
read by webdav and the generator, which have to agree; the old name still wins over the new one in both, so drop it when setting the new one |
THUMBNAILS_TXT_FONTMAP_FILE |
WEBDAV_THUMBNAILS_TXT_FONTMAP_FILE |
webdav renders text before it posts |
THUMBNAILS_FILESYSTEMSTORAGE_ROOT |
WEBDAV_THUMBNAILS_CACHE_DIR |
the old name is the directory that holds files/, and the cache goes into cache/ next to it; the new one is the directory itself |
The thumbnail cache has to be reachable by the webdav container after the move.
Settings that are gone
THUMBNAILS_DATA_ENDPOINT, THUMBNAILS_TRANSFER_TOKEN,
THUMBNAILS_WEBDAVSOURCE_INSECURE and THUMBNAILS_CS3SOURCE_INSECURE
configured the pipeline that fetched the file itself. The generator is handed the
image now, so there is nothing to point them at, and nothing it has to
authenticate against: OC_REVA_GATEWAY and OC_INSECURE no longer reach this
service either. Both are read by others and stay where they are.
THUMBNAILS_GRPC_ADDR went with the gRPC API, the service is only reached over
HTTP now, and THUMBNAILS_HTTP_ROOT with it, because the endpoint sits where a
generator's does, at /unsafe/....
Setting one of these is not an error, it just does nothing, so they can be dropped from a deployment whenever it is convenient.
A yaml configuration has to move
The keys live under the section of the service that reads them, so they move with the settings. Before:
thumbnails:
thumbnail:
resolutions: ["16x16", "32x32", "7680x4320"]
max_input_image_file_size: 50MB
font_map_file: /etc/opencloud/fontmap.json
filesystem_storage:
root: /var/lib/opencloud/thumbnails
After:
webdav:
thumbnails:
resolutions: ["16", "32", "2048"]
max_input_image_file_size: 50MB
txt_fontmap_file: /etc/opencloud/fontmap.json
cache_dir: /var/lib/opencloud/thumbnails/cache
thumbnails:
thumbnail:
max_input_image_file_size: 50MB
What changes without any configuration
The resolutions are edge lengths now, and each axis of a request is rounded up on
its own, so a preview is no longer returned in a different orientation than it was
asked for. The default ladder ends at 2048, where it used to reach 8K, so a client
that asks for more gets 2048. A legacy WidthxHeight entry still counts with both
of its sides, each capped at 2048, which is the largest box the built-in generator
accepts by default. A larger length has to be written as a plain length, and the
generator's THUMBNAILS_MAX_OUTPUT_WIDTH and THUMBNAILS_MAX_OUTPUT_HEIGHT
raised to match it.
A source smaller than the box is enlarged to fill it for the cropping operations,
the way imagor's default resize does, where the previous service returned the
source size instead. fit-in still never enlarges.
The cache key covers the snapped box, the operation, the output format and the
file's type, so the cache is cold after the update and fills again as previews are
requested. It is kept in $OC_BASE_DATA_PATH/thumbnails/cache now. The thumbnails
the previous version wrote to $OC_BASE_DATA_PATH/thumbnails/files are never read
again, so that directory can be deleted. Where a volume is mounted at
thumbnails/files itself rather than at its parent, WEBDAV_THUMBNAILS_CACHE_DIR
has to point at that mount, or the cache is written next to the volume instead of
onto it.
Which types a preview is announced and attempted for is one list for webdav, graph
and the PROPFIND property, set through OC_THUMBNAILS_ADDITIONAL_SOURCE_TYPES. A type the
running generator cannot read answers 404.