{"id":13667922,"url":"https://github.com/ChillFish8/lust","last_synced_at":"2025-04-26T18:30:48.896Z","repository":{"id":39980417,"uuid":"371776281","full_name":"ChillFish8/lust","owner":"ChillFish8","description":"A fast, auto-optimizing image server designed for high throughput and caching; Now that is hot.","archived":false,"fork":false,"pushed_at":"2023-11-12T12:59:11.000Z","size":1685,"stargazers_count":405,"open_issues_count":7,"forks_count":20,"subscribers_count":4,"default_branch":"master","last_synced_at":"2025-04-05T20:05:35.352Z","etag":null,"topics":["image-processing","image-server","rust","tokio"],"latest_commit_sha":null,"homepage":"","language":"Rust","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"mit","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/ChillFish8.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2021-05-28T17:39:00.000Z","updated_at":"2025-03-30T23:02:41.000Z","dependencies_parsed_at":"2023-11-12T13:45:50.503Z","dependency_job_id":null,"html_url":"https://github.com/ChillFish8/lust","commit_stats":null,"previous_names":[],"tags_count":13,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChillFish8%2Flust","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChillFish8%2Flust/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChillFish8%2Flust/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/ChillFish8%2Flust/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/ChillFish8","download_url":"https://codeload.github.com/ChillFish8/lust/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":251035163,"owners_count":21526314,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["image-processing","image-server","rust","tokio"],"created_at":"2024-08-02T07:00:54.498Z","updated_at":"2025-04-26T18:30:44.426Z","avatar_url":"https://github.com/ChillFish8.png","language":"Rust","readme":"\u003cp align=\"center\"\u003e\n  \u003cimg width=\"50%\" src=\"https://user-images.githubusercontent.com/57491488/160932579-518e61b8-6a3d-4400-a46c-1cb93d461417.png\" alt=\"Lust Logo\"\u003e\n\u003c/p\u003e\n\n\u003cp align=\"center\"\u003e \n \u003ch2 align=\"center\"\u003e🔥 Build your own image CDN system your way with lust.\u003c/h2\u003e\n\u003c/p\u003e\n\nLust is an **auto-optimising image server**, designed for **high throughput** and **low latency** handling of images, *now that is lustful*.\nRe-encode uploaded images into `png`, `jpeg`, `webp` or even into `gif` based formats! \n\nResize them to your liking automatically with sizing presets, instantly create small,\nmedium and large variants with just a few line in a config file. *Now that's the spirit of lust*\n\nAnd much more like caching, on the fly resizing and diffrent processing modes to name a few.\n## Getting started\n\n### Creating a config file\nIt's highly advised to take a look at some [example config files](/examples/configs) to get an idea\nof what a general config file would look like.\n\nFull documentation in markdown form can also be found [here](description.md), this is also\nserved directly by the server as part of the documentation ui endpoint.\n\n### Installation\n#### Building from Source\nTo building from source, just clone this repo via `git clone https://github.com/chillfish8/lust.git` and then run `cargo build --release`.\n\n#### Installing via Cargo\nYou can install lust directly via cargo and the git flag:\n```shell\ncargo install lust --git https://github.com/ChillFish8/lust.git\n```\n\n#### Docker Images\nLust has a set of pre-built, optimised docker images ready to go. Just run it with\n```shell\ndocker run -v \"my_configs:/var/lust/\" chillfish8/lust:latest --config-file \"/var/lust/config.yaml\"\n```\n*Note: Assuming there is a folder called `my_configs` with a `config.yaml` file in it.*\n\n### After Installation\nOnce you're up and running navigate to `http://127.0.0.1:8000/ui` or `/ui` of what ever port your server is running on\nto see the full OpenAPI docs.\n \n## Caching\nLust makes use of a Least Recently Used in-memory cache which can be adjusted for your needs via the `cache_size` key in the configuration file. \nThe larger the number the more images it will cache at once and vice versa. \n*NOTE: With bigger images this can create much higher RAM usage*\n\n## Scaling\nLust's ability to scale is purely down to the backend you use, so it is worth noting that\nthe file system backend is only really designed for testing. For full scale deployment\nconsider using Scylla or a s3 compatible blob store to serve data from.\n\nIf your goal is high-end performance, Scylla DB will be the most performant by a large\nmargin, but this will come with a higher operating cost.\n\n## Formats\nLust supports any of the following formats: \n- Png\n- JPEG\n- GIF\n- Webp\n \nAny uploaded images will be given a unique uuid and be re-encoded into all the other enabled formats in all presets. \nThis is especially useful when you want to serve several variants of the same image with different formats.\n\nYou can also adjust this based on the processing mode, `aot`/*Ahead of time* encoding will follow the old\nlust behavour by encoding and resizing each image at upload time.\n\n`jit`/*Just in time* encoding will only resize and re-encode at request time, storing a base copy\nof the file to generate new images. This can save on a considerable amount of CPU time and disk space\ndepending on your requirements.\n\nFinally, we have the `realtime` encoder, this will only store an original copy like the `jit` encoder\nbut instead will never save the resized and encoded image, this does also enable the ability to\ndo on the fly resizing and is recommended for situations where you're not expecting to serve image\nto the public network.\n \n## Presets\nThe server can take several sizing presets which can be targeted via the `size` \nquery parameter when getting an image. \nThese presets will mean every image at upload time will be resized to \nfit the width and height bounds using the configured resizing filter \n(defaults to nearest neighbour).\n\nRegardless of presets an `original` image is always stored and can be accessed via the `size=original` query.\nThe default preset when served without a `size` parameter can be set in the configuration file via `default_serving_preset` key.\n\n## Data Efficiency\nLust's data storage efficiency is roughly the same as storing on a plain file system outside any \nsystem the database backend employs when storing the data.\n","funding_links":[],"categories":["Rust","rust","软件"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FChillFish8%2Flust","html_url":"https://awesome.ecosyste.ms/projects/github.com%2FChillFish8%2Flust","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2FChillFish8%2Flust/lists"}