lust/description.md

179 lines
7.1 KiB
Markdown

# The Lust 2 documentation
Welcome to the Lust 2 API documentation!
This contains section contains the configuration documentation for running and building your system.
## CLI
```shell
lust 2.0.0
Harrison Burt <hburt2003@gmail.com>
A fast, auto-optimising image server designed for multiple backends with throughput and latency in
mind.
USAGE:
lust.exe [OPTIONS] --config-file <CONFIG_FILE>
OPTIONS:
--config-file <CONFIG_FILE>
The file path to a given config file.
This can be either a JSON formatted config or YAML.
[env: CONFIG_FILE=]
-d, --docs-url <DOCS_URL>
The external URL that would be used to access the server if applicable.
This only affects the documentation.
[env: DOCS_URL=]
-h, --host <HOST>
The binding host address of the server
[env: HOST=]
[default: 127.0.0.1]
--help
Print help information
--log-level <LOG_LEVEL>
[env: LOG_LEVEL=]
[default: info]
-p, --port <PORT>
[env: PORT=]
[default: 8000]
-V, --version
Print version information
```
## Config File
This is a demo config file outlining and explain each configuration key.
*Note: This is in the YAML format, but an equivalent in JSON is also supported*
```yaml
global_cache:
# We cache upto 1GB's worth of the most recently used images.
# Like the bucket cache a max_images limit can also be applied
# but not used in tandem with the max_capacity limit.
# If this is `null`/unset then no caching is performed.
max_capacity: 1024
# The *global* max upload size allowed in KB.
#
# This takes precedence over bucket level limits.
max_upload_size: 4096 # 4MB
# The global max concurrency.
#
# This takes precedence over bucket level limits.
max_concurrency: 500
# A custom base path to serve images out of.
# This gets appended to the `v1` route and must start with a `/`
base_serving_path: "/images"
backend:
filesystem: # Can be any of 'scylla', 'filesystem' or 'blobstorage'
# Attributes are specific to the selectect backend.
# For the filesystem backend only the `directory` arguement is required
# and is the base directory for images to be stored.
directory: "/data"
# scylla attributes
#
# nodes: # A list of known nodes.
# - "127.0.0.1:9042"
# keyspace: lust # The keyspace must be created ahead of time.
# username: 'my-user' # Optional
# password: 'my-pass' # Optional
# table: 'images' # Optional, defaults to `lust_images`
# blobstore attributes
#
# This also requires `AWS_SECRET_ACCESS_KEY` and `AWS_ACCESS_KEY_ID`
# environment variables for auth.
# name: "my-bucket"
# region: "my-s3-region"
# endpoint: "https://s3.eu2.my-endpoint.com"
# store_publc: false # If true, images are uploaded with acl: `public-read`.
buckets:
my-profile-pictures:
mode: jit # 'jit', 'aot' or 'realtime' are allowed.
formats:
png: false # Disable PNG encoding.
jpeg: true # Enable JPEG encoding.
webp: true # Enable WebP encoding.
gif: false # Disable GIF encoding.
# The format to store the original image in.
# This will be used by the 'jit' and 'realtime' encoders
# when a image is requested as a base.
# This probably does not want to be a lossy format.
original_image_store_format: jpeg
webp_config:
# This parameter is the amount of effort put into the
# compression: 0 is the fastest but gives larger
# files compared to the slowest, but best, 100.
#
# If set to `null` this will enable lossless encoding.
quality: 80 # Set lossy quality to 80% (0.0 - 100.0)
# The quality / speed trade-off (0=fast, 6=slower-better)
method: 4
# With lossless encoding is the ratio of compression to speed.
# If using lossy encoding this does nothing.
# float: 0.0 (worse) - 100.0 inclusive (better but slower).
# compression: 60
threading: true # Enable multithreaded encoding.
# The encoding format to serve the image as if not explicitly specified.
# Defaults to the first enabled encoding format is no set.
default_serving_format: jpeg
# The default resizing preset to serve images as.
# If this is not set, the original file sizing is used.
default_serving_preset: null
presets:
# Makes a preset named 'small' which can be access when
# requesting an image with the `size=small` query parameter.
small:
width: 96 # 96px
height: 96 # 96px
# The resizing filter to use in order of performance vs quality:
# 'nearest', 'triangle', 'catmullrom',
# 'gaussian' and 'lanczos3' supported.
filter: triangle
# The in-memory cache config.
# If left unset the system will attempt to use the global
# cache if enabled, otherwise no caching will be applied.
cache:
# We cache upto the top 100 most recently used images.
max_images: 100
# We can also use max_capacity (but not with max_images as well)
# This will cache by the memory usage limit vs the amount of images.
# max_capacity: 500 # 500MB limit
# The *bucket local* max upload size allowed for this bucket in KB.
# No 'realistic' limit is applied if let unset.
max_upload_size: 2049 # 2MB
# The *bucket local* max concurrent operations.
# No limit is applied if left unset.
max_concurrency: 200
```