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.
2.2 KiB
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:
disk:
provider: disk
path: /tmp/nas
backblaze:
provider: backblaze
config:
appKeyId: APP_KEY_ID
appId: APP_ID
bucket: BUCKET_ID
(read more here: #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 withgo run
make pi
will build the project with theGOOS=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.