d86ed1233f
Implemented file uploading for both the disk and Backblaze providers. Also implements a UI element and frontend logic for doing so from the frontend. Disk will write directly to disk, while the Backblaze provider will attempt to stream the file from memory directly to the POST body. This could introduce some problems down the line, so caching to disk then uploading in the background may need to be implemented. It also performs the final upload using a goroutine so the end client can continue on it's merry way. Backblaze proved a bit tricky to do, and considering switching to using a library for managing Backblaze going forward. |
||
---|---|---|
assets/web | ||
auth | ||
common | ||
files | ||
router | ||
.gitignore | ||
go.mod | ||
go.sum | ||
LICENSE | ||
Makefile | ||
README.md | ||
webserver.go |
nas
small go nas platform for my raspberry pi
usage
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
.
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 pi
will build the project with theGOOS=linux GOARCH=arm GOARM=5 go
flags set for raspberry pis.
providers
there are a few built-in providers, and more can be added by opening a pull request.
name | service | configuration example |
---|---|---|
disk | local filesystem | disk.yml |
backblaze | backblaze b2 | backblaze.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.