Merge filesystems together.
Find a file
Gabriel Simmer c559f28ebb
Authentication handling with Keycloak.
Implemented a rudementary authentication method using Keycloak as the
IdP - still very barebones, but login does function. Next steps will
include a Docker Compose file (most likely) for managing this
integration. The application will work fine without setting up the
integration however, and will just throw a warning message. Setup should
be relatively self explanatory, but some documentation is TBD, along
with some automation when spinning up for the first time. Still not
super happy with the implementation.
2020-04-16 23:49:35 +01:00
.circleci Implement new UPX Orb for CircleCI. 2020-04-06 22:51:56 +01:00
assets Authentication handling with Keycloak. 2020-04-16 23:49:35 +01:00
authentication Authentication handling with Keycloak. 2020-04-16 23:49:35 +01:00
files Simplify file router, add documenting comments. 2020-04-15 23:19:33 +01:00
router Authentication handling with Keycloak. 2020-04-16 23:49:35 +01:00
.gitignore Authentication handling with Keycloak. 2020-04-16 23:49:35 +01:00
go.mod Authentication handling with Keycloak. 2020-04-16 23:49:35 +01:00
go.sum Authentication handling with Keycloak. 2020-04-16 23:49:35 +01:00
LICENSE Initial commit 2019-02-24 00:23:09 -08:00
Makefile Added 'SHELL' enviornment variable to Makefile. 2020-04-07 10:26:19 +01:00
README.md Tweaked spacing for file list, icons. 2020-04-05 19:32:35 +01:00
webserver.go Authentication handling with Keycloak. 2020-04-16 23:49:35 +01:00

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 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.

icons

SVG Icons provided by Paweł Kuna: https://github.com/tabler/tabler-icons (see assets/web/icons/README.md)