abyss/README.md

72 lines
2.4 KiB
Markdown
Raw Normal View History

2024-08-19 13:01:23 -03:00
# abyss
2024-08-25 23:16:56 -03:00
2024-08-19 20:00:46 -03:00
abyss is a basic single user http server made for uploading files (logs, images) and then sharing them to the internet
2024-08-19 13:01:23 -03:00
note: this is a project made for learning purposes, you should use other more mature projects if running in production. probably.
2024-08-19 13:01:23 -03:00
2024-08-19 15:50:17 -03:00
## table of contents
2024-08-25 23:16:56 -03:00
2024-08-19 15:50:17 -03:00
- [running abyss](#running)
2024-08-25 23:16:56 -03:00
- [installing with docker](#docker)
- [installing manually](#manual)
2024-08-20 09:03:25 -03:00
- [uploading files](#uploading)
2024-09-19 10:30:28 -03:00
- [theming](#theming)
- [docs](#docs)
2024-08-19 15:50:17 -03:00
- [todo list](#todo)
2024-08-19 13:01:23 -03:00
## running:
2024-08-25 23:16:56 -03:00
- run `./generate_config.sh` to setup the necessary environment variables
2024-08-20 09:03:25 -03:00
2024-08-19 15:50:17 -03:00
### docker
2024-08-25 23:16:56 -03:00
2024-09-06 16:51:14 -03:00
- to run with docker, you can use the `docker-compose.yml` file available in this repo. to do so, run:
2024-08-25 23:16:56 -03:00
2024-08-19 15:50:17 -03:00
```bash
docker compose up -d # might be docker-compose depending on distro
```
2024-08-25 23:16:56 -03:00
2024-09-06 12:07:20 -03:00
- you can optionally use the [docker image](https://git.jabuxas.xyz/jabuxas/-/packages/container/abyss/latest) directly and set it up how you want
2024-08-25 23:16:56 -03:00
2024-08-19 15:50:17 -03:00
### manual
2024-08-19 13:01:23 -03:00
- to run it manually, build it with `go build -o abyss` and run:
2024-08-25 23:16:56 -03:00
2024-08-19 13:03:24 -03:00
```bash
./abyss
2024-08-19 13:01:23 -03:00
```
2024-08-19 13:03:24 -03:00
2024-08-20 09:03:25 -03:00
## uploading
2024-08-19 13:54:33 -03:00
- then, simply upload your files with curl:
2024-08-25 23:16:56 -03:00
2024-08-19 13:03:24 -03:00
```bash
2024-09-18 10:34:42 -03:00
curl -F "file=@/path/to/file" -H "X-Auth: "$(cat /path/to/.key) http://localhost:3235/
2024-08-19 13:03:24 -03:00
```
2024-08-25 23:16:56 -03:00
2024-09-19 10:30:28 -03:00
## theming
2024-09-18 10:34:42 -03:00
- there is an example homepage in `static/` you can edit directly, which the server will serve automatically
- if running with docker, it's also possible to override `/static` inside the container with your own page.
2024-09-19 10:30:28 -03:00
- same thing with templates in `templates/`
2024-09-18 10:34:42 -03:00
- it is preferred to use `dev/` for that reason, since it is git-ignored and that way makes it easier if wanting to update regularly without making changes to the tree
## docs
- `ABYSS_URL`: this is used for the correct formatting of the response of `curl`.
2024-09-06 16:35:01 -03:00
- `AUTH_USERNAME | AUTH_PASSWORD`: this is used to access `/tree/`, which shows all uploaded files
- `UPLOAD_KEY`: this is key checked when uploading files. if the key doesn't match with server's one, then it refuses uploading.
2024-09-06 16:35:01 -03:00
- `ABYSS_FILEDIR`: this points to the directory where abyss will save the uploads to. defaults to `./files`
- `ABYSS_PORT`: this is the port the server will run on. safe to leave empty. defaults to 3235
2024-08-19 13:01:23 -03:00
## todo:
2024-08-25 23:16:56 -03:00
2024-08-19 13:54:33 -03:00
- [x] add upload of logs funcionality (like 0x0.st)
2024-08-19 15:50:17 -03:00
- [x] add docker easy setup
2024-08-20 09:03:25 -03:00
- ~~add db for tracking of file names~~ (dont need that)
- [x] add file browser (like file://)
- [x] add file extension in its name
- [x] login prompt when accessing /tree
2024-09-18 10:34:42 -03:00
- [x] home page
2024-08-20 09:03:25 -03:00
- [ ] add rate limits