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
	
	 minish
							minish