Code Monkey home page Code Monkey logo

nico.drive's Introduction

nico.drive

Hironico's nico.drive is a webdav server running on nodejs. It features full support of WebDAV protocol plus additional exclusive features to ease display and search of hosted files. To take full advantage of the additional APIs, the server comes with its own web application embbedded (aka the nico.drive.client project).

It's an all-in-one solution to backup important files and memories yet very simple to install and use.

Features

  • WebDAV compliant server compatible with all WebDav enabled devices such as NAS (Synology, QNap etc...)
  • Out of the box ready to run but also highly configurable (see dotenv-sample file)
  • Additional features as additional REST api :
    • image thumbnail generator
    • image metadata API support for EXIF and XMP
    • digital camera raw file formats support for thumbs
  • Embedded WebDAV explorer web application

Getting started

In order to get it up and running in your environment, you need :

  • A server box : private cloud or dedicated machine, the choice is yours. For instance, we use a Linux dedicated box.
  • An SSL certificate (with its key). Self signed for development/testing or use Let's Encrypt for production.

Assuming you have configured your box with a dedicated user ; to run your server, then you need to:

  • Git clone the repository

  • COPY the "dotenv-sample" file into a file named ".env", then adapt to reflect your current setup.

  • npm install

  • npm run build

  • npm run start

  • Connect WebDav client to your new server (follow vendor instructions)

    or

    Point you browser at the root url of your server (see .env file for setup)

Configuration options

The configuration is splitted into two parts:

  • server config : network ports, certificates ...
  • user config : user access and root directories for each user

Each configuration has examples in a dedicated sample file that can be customized. See below.

Server config

COPY the dotenv.sample file to create a file named '.env' (dot env litterally).

IMPORTANT: Never expose the .env in your webserver in any way.

Then you can customize the .env file to suit your needs.

Users and directories config

COPY the user_config.json.default into a file named users_config.json

Assign each user one or more root directories for storing/sharing files from/to your server.

Users can have the following roles:

  • all : user is admin user for this root directory. Not only it has write access but also can create shares to existing other users.
  • canRead : readonly access
  • CanWrite: read and write access but not possible to create shares.

Developper information

The following is developper instructions about the way Nico's Drive has been built. Is contains various links where the author found instructions on how to setup teh development environment, code, libraries used etc...

Build issues (and their solutions)

  • Namespace 'serveStatic' has no exported member 'RequestHandlerConstructor See : DefinitelyTyped/DefinitelyTyped#49595 Run th efollowing commands to solve:
    • npm update @types/express-serve-static-core --depth 2
    • npm update @types/serve-static --depth 2

Full documentation reference (educational)

nico.drive's People

Contributors

0x7f avatar addrummond avatar aenario avatar alexzhuustc avatar bancek avatar bedney avatar cadorn avatar dlaxar avatar fjakobs avatar fnd avatar foundrytom avatar giannis avatar gjtorikian avatar hironico avatar janjongboom avatar linh81 avatar marijnh avatar mattpardee avatar mikedeboer avatar olegas avatar paroga avatar pure avatar rendez avatar rikarends avatar rksm avatar sergi avatar tanepiper avatar woutervroege avatar ykumar6 avatar zefhemel avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

nico.drive's Issues

add user rights management

User rights are to be included in the config and managed by the privilige manager :
Each 'drive' should be managed like :

  • read only
  • full access

More robust thumb generating system

Create a thumb generation queue that works async.
API request should return :

  • HTTP 200: and the image content
  • HTTP 202 : when the image has been queued for generation

When getting HTTP 202 clients should retry a little bit later to check if the thumb is rendered.

create an abstrac indexing system + simple file index

Provide an abstraction of a file index system to be able to plug an implementation like:

  • a simple index sotred in a file
  • a indexation storage in a database
  • a JSON storage index
  • etc ...
    provide a simple text file index as an example

index data management should occur in after request (uploads) and before request (deletions). -->> to be checked

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.