Merge filesystems together.
Find a file
Gabriel Simmer 292e24978d
Implement new frontend, "/" at end of provider.
Started work on a new basic frontend, with some magic code from
@tomhodgins (Tom Hodgins) for templating and processing data, which was
the primary purpose for considering a full-fledged JavaScript
framework. Fairly simple right now, with minimal "bling", and seems
"functional enough". Might need to consider options for using less or
no JS down the line if there is demand.

As part of this frontend, actually implemented route logic for fetching
a sorted list of providers (might be worth investigating whether
storing this final result in memory is worth the performance to memory
trade-off).

Also fixed a bug where adding "/" to the end of a provider name without
a file path would result in a 404. This was addressed with some Regex
filtering on the path that should be able to handle that matching.
2020-03-22 00:18:19 +00:00
assets/web Implement new frontend, "/" at end of provider. 2020-03-22 00:18:19 +00:00
auth Directory listing in new frontend 2019-07-27 21:43:05 -07:00
common Initial commit of basic functional file listing 2019-02-24 00:25:39 -08:00
files Implement Setup() function for providers, cleanup 2020-03-21 00:31:24 +00:00
router Implement new frontend, "/" at end of provider. 2020-03-22 00:18:19 +00:00
.gitignore Implement new frontend, "/" at end of provider. 2020-03-22 00:18:19 +00:00
go.mod Refactoring file storage to enable different providers 2020-02-24 18:07:47 +00:00
go.sum Refactoring file storage to enable different providers 2020-02-24 18:07:47 +00:00
LICENSE Initial commit 2019-02-24 00:23:09 -08:00
Makefile Rewrite file provider to proxy data download (rather than redirect) 2020-03-15 23:49:00 +00:00
README.md Rewrite file provider to proxy data download (rather than redirect) 2020-03-15 23:49:00 +00:00
webserver.go Implement Setup() function for providers, cleanup 2020-03-21 00:31:24 +00:00

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 the GOOS=linux GOARCH=arm GOARM=5 go flags set for raspberry pis.

api

initially the heavy lifting was done by the server, but the need for a better frontend was clear.

full documentation coming soon once actual functionality has been nailed down.

providers

// todo

credits

svg icons via https://iconsvg.xyz

raspberry pi svg via https://www.vectorlogo.zone/logos/raspberrypi/index.html