sliproad/README.md
Gabriel Simmer a765d52e4b
Update README, add configuration examples.
Expanded the README with more up-to-date data and elaboration on
providers, which may have been a bit unclear before. Also added a few
configuration examples for each provider, with comments.
2020-03-31 00:03:50 +01:00

64 lines
2.2 KiB
Markdown

# nas
bringing filesystems together
## about
this project aims to be an easy-to-manage web application that allows the management of cloud storage, whether it be on
the host machine or part of a remote api. this is intended mostly for my own use, but i am documenting it in a way that
i hope allows others to pick it up and improve on it down the line.
if something is unclear, feel free to open an issue :)
## configuration
unlike the initial version of this project, the current build uses _providers_ to determine how to handle various
functions related to files. currently, two are implemented, `disk` and `backblaze`, since they are the primary providers
i use myself. the providers you would like to use can be added to `providers.yml` alongside the binary.
for example, here is a sample configuration implementing both of them:
```yaml
disk:
provider: disk
path: /tmp/nas
backblaze:
provider: backblaze
config:
appKeyId: APP_KEY_ID
appId: APP_ID
bucket: BUCKET_ID
```
(read more here: [#providers](#providers))
## running
after adding the providers you would like to use, the application can be run simply with `./nas`. it will attach to port
`:3000`.
## building
this project uses go modules and a makefile, so building should be relatively straightforward.
- `make` will build the project for your system's architecture.
- `make run` will run the project with `go run`
- `make pi` will build the project with the `GOOS=linux GOARCH=arm GOARM=5 go` flags set for raspberry pis.
## providers
"providers" provide a handful of functions to interact nicely with a filesystem, whether it be on local disk or on a
remote server via an api. best-effort is done to keep these performant, up to date and minimal.
there are a few built-in providers, and more can be added by opening a pull request.
|name|service|configuration example|
|----|-------|---------------------|
|disk|local filesystem|assets/config_examples/disk.yml|
|backblaze|backblaze b2|assets/config_examples/backblaze.yml|
you can find a full configuration file under `assets/config_examples/providers.yml`
### custom provider
custom file providers can be implemented by adding a new go file to the `files` module. it should
implement the `FileProviderInterface` interface.