Thumbnails Service Configuration
Introduction
The thumbnails service provides methods to generate thumbnails for various files and resolutions based on requests. It retrieves the sources at the location where the user files are stored and saves the thumbnails where system files are stored. Those locations have defaults but can be manually defined via environment variables.
Note that for developers, more information is available with regards to querying thumbnails in the services section of the Developer Documentation.
Default Values
-
Thumbnails listens on port 9185 by default.
-
The default location storing thumbnails is $OCIS_BASE_DATA_PATH:/thumbnails
Configuration Hints
File Locations Overview
The relevant environment variables defining file locations are:
Variable | Meaning |
---|---|
|
Having a default set by the Infinite Scale code, but if defined, used as base path for other services. |
|
Source files, defaults to (1) plus path component, but can be freely defined if required. |
|
Target files, defaults to (1) plus path component, but can be freely defined if required. |
Thumbnail Location
It may be beneficial to define the location of the thumbnails to be other than the default (with system files). This is due to the fact that storing thumbnails can consume a lot of space over time which not necessarily needs to reside on the same partition or mount or expensive drives.
Thumbnail Source File Types
Thumbnails can be generated from the following source file types:
-
png
-
jpg
-
gif
-
tiff
-
bmp
-
txt
The thumbnail service retrieves source files using the information provided by the backend. The Linux backend identifies source files usually based on the extension.
If a file type was not properly assigned or the type identification failed, thumbnail generation will fail and an error will be logged.
Thumbnail Target File Types
Thumbnails can either be generated as png
, jpg
or gif
files. These types are hardcoded and no other types can be requested. A requestor, like another service or a client, can request one of the available types to be generated. If more than one type is required, each type must be requested individually.
Thumbnail Resolution
Various resolutions can be defined via THUMBNAILS_RESOLUTIONS
. A requestor can request any arbitrary resolution and the thumbnail service will use the one closest to the requested resolution. If more than one resolution is required, each resolution must be requested individually.
Type | Resolution |
---|---|
Requested |
18x12 |
Available |
30x20, |
Returned |
15x10 |
Deleting Thumbnails
As of now, there is no automated thumbnail deletion. This is especially true when a source file gets deleted or moved. This situation will be solved at a later stage. For the time being, if you run short on physical thumbnails space, you have to manually delete the thumbnail store to free space. Thumbnails will then be recreated on request.
Memory Considerations
Since source files need to be loaded into memory when generating thumbnails, large source files could potentially crash this service if there is insufficient memory available. For bigger instances when using container orchestration deployment methods, this service can be dedicated to its own server(s) with more memory.
Configuration
Environment Variables
The thumbnails
service is configured via the following environment variables. Read the Environment Variable Types documentation for important details.
Name | Type | Default Value | Description |
---|---|---|---|
|
bool |
false |
Activates tracing. |
|
string |
|
The type of tracing. Defaults to '', which is the same as 'jaeger'. Allowed tracing types are 'jaeger' and '' as of now. |
|
string |
|
The endpoint of the tracing agent. |
|
string |
|
The HTTP endpoint for sending spans directly to a collector, i.e. http://jaeger-collector:14268/api/traces. Only used if the tracing endpoint is unset. |
|
string |
|
The log level. Valid values are: 'panic', 'fatal', 'error', 'warn', 'info', 'debug', 'trace'. |
|
bool |
false |
Activates pretty log output. |
|
bool |
false |
Activates colorized log output. |
|
string |
|
The path to the log file. Activates logging to this file if set. |
|
string |
127.0.0.1:9189 |
Bind address of the debug server, where metrics, health, config and debug endpoints will be exposed. |
|
string |
|
Token to secure the metrics endpoint. |
|
bool |
false |
Enables pprof, which can be used for profiling. |
|
bool |
false |
Enables zpages, which can be used for collecting and viewing in-memory traces. |
|
string |
127.0.0.1:9185 |
The bind address of the GRPC service. |
|
int |
0 |
Number of maximum concurrent thumbnail requests. Default is 0 which is unlimited. |
|
string |
127.0.0.1:9186 |
The bind address of the HTTP service. |
|
bool |
false |
Activates TLS for the http based services using the server certifcate and key configured via OCIS_HTTP_TLS_CERTIFICATE and OCIS_HTTP_TLS_KEY. If OCIS_HTTP_TLS_CERTIFICATE is not set a temporary server certificate is generated - to be used with PROXY_INSECURE_BACKEND=true. |
|
string |
|
Path/File name of the TLS server certificate (in PEM format) for the http services. |
|
string |
|
Path/File name for the TLS certificate key (in PEM format) for the server certificate to use for the http services. |
|
string |
/thumbnails |
Subdirectory that serves as the root for this HTTP service. |
|
[]string |
[16x16 32x32 64x64 128x128 1080x1920 1920x1080 2160x3840 3840x2160 4320x7680 7680x4320] |
The supported list of target resolutions in the format WidthxHeight like 32x32. You can define any resolution as required. See the Environment Variable Types description for more details. |
|
string |
/var/lib/ocis/thumbnails |
The directory where the filesystem storage will store the thumbnails. If not defined, the root directory derives from $OCIS_BASE_DATA_PATH:/thumbnails. |
|
bool |
false |
Ignore untrusted SSL certificates when connecting to the webdav source. |
|
bool |
false |
Ignore untrusted SSL certificates when connecting to the CS3 source. |
|
string |
com.owncloud.api.gateway |
CS3 gateway used to look up user metadata |
|
string |
|
The path to a font file for txt thumbnails. |
|
string |
|
The secret to sign JWT to download the actual thumbnail file. |
|
string |
http://127.0.0.1:9186/thumbnails/data |
The HTTP endpoint where the actual thumbnail file can be downloaded. |
|
int |
7680 |
The maximum width of an input image which is being processed. |
|
int |
7680 |
The maximum height of an input image which is being processed. |
|
string |
50MB |
The maximum file size of an input image which is being processed. Usable common abbreviations: [KB, KiB, MB, MiB, GB, GiB, TB, TiB, PB, PiB, EB, EiB], example: 2GB. |
YAML Example
-
Note the file shown below must be renamed and placed in the correct folder according to the Configuration File Naming conventions to be effective.
-
See the Notes for Environment Variables if you want to use environment variables in the yaml file.
# Autogenerated
# Filename: thumbnails-config-example.yaml
tracing:
enabled: false
type: ""
endpoint: ""
collector: ""
log:
level: ""
pretty: false
color: false
file: ""
debug:
addr: 127.0.0.1:9189
token: ""
pprof: false
zpages: false
grpc:
addr: 127.0.0.1:9185
tls: null
max_concurrent_requests: 0
http:
addr: 127.0.0.1:9186
tls:
enabled: false
cert: ""
key: ""
root: /thumbnails
grpc_client_tls: null
thumbnail:
resolutions:
- 16x16
- 32x32
- 64x64
- 128x128
- 1080x1920
- 1920x1080
- 2160x3840
- 3840x2160
- 4320x7680
- 7680x4320
filesystem_storage:
root_directory: /var/lib/ocis/thumbnails
webdav_allow_insecure: false
cs3_allow_insecure: false
reva_gateway: com.owncloud.api.gateway
font_map_file: ""
transfer_secret: ""
data_endpoint: http://127.0.0.1:9186/thumbnails/data
max_input_width: 7680
max_input_height: 7680
max_input_image_file_size: 50MB