70 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
	
		
			2.7 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
<p align="center">
 | 
						|
    <img alt="transbeam logo: a laser warning sign in trans flag colors" height="128" src="https://git.xeno.science/xenofem/transbeam/raw/branch/main/static/images/site-icons/transbeam.svg">
 | 
						|
</p>
 | 
						|
<h3 align="center">transbeam</h3>
 | 
						|
<p align="center">A low-latency file drop web app</p>
 | 
						|
 | 
						|
## features
 | 
						|
 | 
						|
- One-to-many transfer of large files
 | 
						|
- Simple web UI for sender and receivers
 | 
						|
- Word-based download codes that are easy to remember and communicate
 | 
						|
- Receivers can begin downloading *immediately*, without needing to
 | 
						|
  wait for the upload to finish
 | 
						|
- Receivers can also download after the upload is complete and the
 | 
						|
  sender has gone offline
 | 
						|
- Easy to send multiple files at once - they're bundled into a zip
 | 
						|
  file for receivers, with zero compression so extraction is quick
 | 
						|
- Sanitises filenames, using sensible non-obnoxious defaults that
 | 
						|
  should be safe across platforms
 | 
						|
- Rudimentary password authentication for uploading files
 | 
						|
- Fires a laser beam that turns you trans
 | 
						|
 | 
						|
## configuration
 | 
						|
 | 
						|
transbeam is configured with the following environment variables:
 | 
						|
- `TRANSBEAM_STORAGE_DIR`: path where uploaded files should be stored
 | 
						|
  (default: `./storage`)
 | 
						|
- `TRANSBEAM_STATIC_DIR`: path where the web app's static files live
 | 
						|
  (default: `./static`)
 | 
						|
- `TRANSBEAM_PORT`: port to listen on localhost for http requests
 | 
						|
  (default: 8080)
 | 
						|
- `TRANSBEAM_MAX_LIFETIME`: maximum number of days files can be kept
 | 
						|
  for (default: 30)
 | 
						|
- `TRANSBEAM_MAX_UPLOAD_SIZE`: maximum size of a fileset being
 | 
						|
  uploaded (default: 16G)
 | 
						|
- `TRANSBEAM_MAX_STORAGE_SIZE`: maximum total size, in bytes, of all
 | 
						|
  files being stored by transbeam (default: 64G)
 | 
						|
- `TRANSBEAM_MNEMONIC_CODES`: generate memorable download codes using
 | 
						|
  English words, rather than random alphanumeric strings (default:
 | 
						|
  true)
 | 
						|
- `TRANSBEAM_UPLOAD_PASSWORD`: password for uploading files. This
 | 
						|
  isn't meant to be a hardcore security measure, just a defense
 | 
						|
  against casual internet randos filling up your storage.  I strongly
 | 
						|
  recommend setting up fail2ban to throttle password attempts;
 | 
						|
  transbeam logs failed attempts along with IP addresses, in the form
 | 
						|
  `Incorrect authentication attempt from 203.0.113.12`.
 | 
						|
- `RUST_LOG`: log levels, for the app as a whole and/or for specific
 | 
						|
  submodules/libraries. See
 | 
						|
  [`env_logger`](https://docs.rs/env_logger/latest/env_logger/)'s
 | 
						|
  documentation for details.
 | 
						|
 | 
						|
## running
 | 
						|
 | 
						|
### nix flakes
 | 
						|
 | 
						|
```
 | 
						|
nix run git+https://git.xeno.science/xenofem/transbeam?ref=main
 | 
						|
```
 | 
						|
 | 
						|
(The Nix package is wrapped with `TRANSBEAM_STATIC_DIR` set automatically to the
 | 
						|
correct Nix store path, so it'll serve the static files properly
 | 
						|
no matter what directory you run it from.)
 | 
						|
 | 
						|
### non-nix
 | 
						|
 | 
						|
```
 | 
						|
git clone https://git.xeno.science/xenofem/transbeam
 | 
						|
cd transbeam
 | 
						|
cargo run --release
 | 
						|
```
 |