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 Feb 29, 2012 · 16 revisions

v7files is a file server backed by MongoDB GridFS file storage. 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.

File contents are stored in 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.

Usage

Start the program from the command line:

 # java -jar v7files.jar

This will start a WebDAV server on port 8080.

You can optionally specify a properties file with configuration.

# java -jar v7files.jar -f config.properties

All configuration options can also be set (or overridden) by system properties

# java -jar v7files.jar -Dwebdav.endpoints=/webdav -Dhttp.port=5555

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