Skip to content
This repository has been archived by the owner on Oct 15, 2022. It is now read-only.
Thilo Planz edited this page May 28, 2012 · 16 revisions

v7files is a file server backed by MongoDB. It can be used as a WebDAV server, as well as the file storage backend for other web applications.

It is written in Java, using the Jetty embedded web server and the Milton WebDAV library.

All file contents and meta data are stored inside of MongoDB. File contents use a technique very similar to GridFS, but the file (and folder) metadata is stored in a separate collection, where it can also be versioned. Identical content is only stored once, even if more than one file refers (or used to refer) to it, and content can also be compressed using zip compression (good for text files) or delta storage (good for files that are similar to others, but not yet implemented).

You can configure Authentication, and set access permissions (separately for read and write) for every file and folder. A file that does not have its own set of permissions inherits them from its parent folder.

It also support multi-tenant-mode, where the same instance can be used to connect to a separate MongoDB database for each tenant.

Installation

There has not been a release build yet. You will have to compile v7files from its source code, using Maven.

Usage

Start the program from the command line:

 # java -jar v7files.jar serve

This will start a WebDAV server on port 8080.

There are some other commands to manage files as well.

Configuration

Take a look at the file that defines the default settings.

For a quick-start, you probably want to set the following properties:

# The name of the database to connect to 
mongo.db = test

# enable authentication using the following two users
auth.provider = demo
auth.demo.user.admin.password = admin
auth.demo.user.demo.password = demo
# important: if you don't want these two users enabled, 
# you must explicitly set their passwords to blank

# allow anonymous access
auth.anonymous = anonymous

# set global access permissions
acl.provider = global
acl.read = anonymous, users
acl.write = admins
Clone this wiki locally