add readme
This commit is contained in:
parent
2662128bbb
commit
08826148bb
|
@ -0,0 +1,64 @@
|
||||||
|
# breeze
|
||||||
|
breeze is a simple, heavily optimised file upload server.
|
||||||
|
|
||||||
|
## Features
|
||||||
|
Compared to the old Express.js backend, breeze has
|
||||||
|
- Streamed uploading
|
||||||
|
- Streamed downloading (on larger files)
|
||||||
|
- Upload caching
|
||||||
|
- Generally faster speeds overall
|
||||||
|
|
||||||
|
At this time, breeze does not support encrypted uploads on disk.
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
I wrote breeze with the intention of running it in a container, but it runs just fine outside of one.
|
||||||
|
|
||||||
|
Either way, you need to start off by cloning the Git repository.
|
||||||
|
```bash
|
||||||
|
git clone https://git.maple.vin/minish/breeze.git
|
||||||
|
```
|
||||||
|
|
||||||
|
To run it in Docker, you need to build an image of it.
|
||||||
|
```bash
|
||||||
|
docker build -t breeze .
|
||||||
|
```
|
||||||
|
From there, you can make a `docker-compose.yaml` file with your configuration and run it using `docker-compose up`.
|
||||||
|
|
||||||
|
It can also be installed directly if you have the Rust toolchain installed
|
||||||
|
```bash
|
||||||
|
cargo install --path .
|
||||||
|
```
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
### Hosting
|
||||||
|
Configuration is read through environment variables, because I wanted to run this using `docker-compose`.
|
||||||
|
```
|
||||||
|
BRZ_BASE_URL - base url for upload urls (ex: http://127.0.0.1:8000 for http://127.0.0.1:8000/p/abcdef.png, http://picture.wtf for http://picture.wtf/p/abcdef.png)
|
||||||
|
BRZ_SAVE_PATH - this should be a path where uploads are saved to disk (ex: /srv/uploads, C:\brzuploads)
|
||||||
|
BRZ_UPLOAD_KEY (optional) - if not empty, the key you specify will be required to upload new files.
|
||||||
|
BRZ_CACHE_UPL_MAX_LENGTH - this is the max length an upload can be in bytes before it won't be cached (ex: 80000000 for 80MB)
|
||||||
|
BRZ_CACHE_UPL_LIFETIME - this indicates how long an upload will stay in cache (ex: 1800 for 30 minutes, 60 for 1 minute)
|
||||||
|
BRZ_CACHE_SCAN_FREQ - this is the frequency of full cache scans, which scan for and remove expired uploads (ex: 60 for 1 minute)
|
||||||
|
BRZ_CACHE_MEM_CAPACITY - this is the amount of memory the cache will hold before dropping entries
|
||||||
|
```
|
||||||
|
|
||||||
|
### Uploading
|
||||||
|
The HTTP API is fairly simple, and it's pretty easy to make a ShareX configuration for it.
|
||||||
|
|
||||||
|
Uploads should be sent to `/new?name={original filename}` as a POST request. If the server uses upload keys, it should be sent to `/new?name={original filename}&key={upload key}`. The uploaded file's content should be sent as raw binary in the request body.
|
||||||
|
|
||||||
|
Here's an example ShareX configuration for it (with a key):
|
||||||
|
```json
|
||||||
|
{
|
||||||
|
"Version": "14.1.0",
|
||||||
|
"Name": "breeze example",
|
||||||
|
"DestinationType": "ImageUploader, TextUploader, FileUploader",
|
||||||
|
"RequestMethod": "POST",
|
||||||
|
"RequestURL": "http://127.0.0.1:8000/new",
|
||||||
|
"Parameters": {
|
||||||
|
"name": "{filename}",
|
||||||
|
"key": "hiiiiiiii"
|
||||||
|
},
|
||||||
|
"Body": "Binary"
|
||||||
|
}
|
||||||
|
```
|
Loading…
Reference in New Issue