88 lines
3.2 KiB
Markdown
88 lines
3.2 KiB
Markdown
# datatrash
|
||
|
||
A file and text uploading service with configurable time limit
|
||
|
||

|
||
|
||
## running
|
||
|
||
For running on docker, use the provided `docker-compose.yml.sample` and adapt it to your needs.
|
||
To run the software directly, use the compiling instructions below.
|
||
|
||
## config
|
||
|
||
- The `static` files directory needs to be next to the binary.
|
||
- The `static` directory – sadly – needs to be writable
|
||
- On startup the `index.html` will be generated based on the config
|
||
- The maximum filename length is 255
|
||
|
||
### General configuration
|
||
|
||
| environment variable | default value | description |
|
||
| ---------------------------- | -------------- | ---------------------------------------------- |
|
||
| STATIC_DIR | ./static | directory to generate "static" files into |
|
||
| FILES_DIR | ./files | directory to save uploaded files into |
|
||
| UPLOAD_MAX_BYTES | 8388608 (8MiB) | maximum size for uploaded files |
|
||
| BIND_ADDRESS | 0.0.0.0:8000 | address to bind the server to |
|
||
| RATE_LIMIT | true | whether download rate should be limited |
|
||
| RATE_LIMIT_PROXIED | false | whether rate limit should read x-forwarded-for |
|
||
| RATE_LIMIT_REPLENISH_SECONDS | 60 | seconds to wait between requests |
|
||
| RATE_LIMIT_BURST | 480 | allowed request burst |
|
||
| ABUSE_MAIL | | email address to report abuse to |
|
||
|
||
### Database configuration
|
||
|
||
| environment variable | default value |
|
||
| -------------------- | ------------- |
|
||
| DATABASE_URL | |
|
||
| DATABASE_USER | |
|
||
| DATABASE_PASS | |
|
||
| DATABASE_HOST | localhost |
|
||
| DATABASE_NAME | datatrash |
|
||
|
||
### No auth limits configuration
|
||
|
||
Require authentication for certain uploads
|
||
|
||
- The password is provided as plain text
|
||
- Uploads with longer validity than NO_AUTH_MAX_TIME require authentication
|
||
- Uploads larger than NO_AUTH_LARGE_FILE_SIZE require auth when they are valid for longer than
|
||
NO_AUTH_LARGE_FILE_MAX_TIME
|
||
- All times are in seconds, the size is in bytes
|
||
|
||
| environment variable | default value |
|
||
| --------------------------- | ------------- |
|
||
| AUTH_PASSWORD | |
|
||
| NO_AUTH_MAX_TIME | |
|
||
| NO_AUTH_LARGE_FILE_MAX_TIME | |
|
||
| NO_AUTH_LARGE_FILE_SIZE | |
|
||
|
||
## Deploying using Docker
|
||
|
||
```sh
|
||
# Clone the repository
|
||
git clone https://git.ctdo.de/neri/datatrash
|
||
cd datatrash
|
||
# Copy and update the docker-compose.yml
|
||
cp docker-compose.yml.sample docker-compose.yml
|
||
$EDITOR docker-compose.yml
|
||
# Start the container
|
||
docker-compose up -d
|
||
```
|
||
|
||
## Compiling the binary
|
||
|
||
When you have a [rust toolchain](https://rustup.rs/) installed:
|
||
|
||
```sh
|
||
cargo build --release
|
||
```
|
||
|
||
or when you have docker installed:
|
||
|
||
```sh
|
||
docker build -t datatrash .
|
||
id=$(docker create datatrash)
|
||
docker cp $id:/opt/datatrash/datatrash datatrash
|
||
docker rm -v $id
|
||
```
|