Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/akrantz01/davoxide

A simple WebDAV server with a basic web UI, authentication, and permissions
https://github.com/akrantz01/davoxide

graphql react rust webdav

Last synced: 15 days ago
JSON representation

A simple WebDAV server with a basic web UI, authentication, and permissions

Awesome Lists containing this project

README

        

# DAVOxide
> A simple WebDAV server with a basic web UI, authentication, and permissions.

![GitHub Workflow Status (branch)](https://img.shields.io/github/workflow/status/akrantz01/davoxide/Build/main?style=for-the-badge)
![GitHub release (latest SemVer)](https://img.shields.io/github/v/release/akrantz01/davoxide?style=for-the-badge)

DAVOxide provides a simple and lightweight interface to a folder on your server through WebDAV and a simple web UI.
Most operations are intended to be performed over WebDAV such as modifying files or directories.
The web UI exists strictly for permission management and read-only filesystem access.
Permissions can be defined for individual files or entire directories.
Simply specify the path and the desired action, and it will instantly be applied.

Primary authentication is delegated to a SSO proxy such as [Authelia](https://www.authelia.com/).
WebDAV clients can authenticate using HTTP basic authentication with a username and access token.

![](davoxide.png)

## Installation

Docker:

```
docker run -d --name davoxide \
-e BASE_PATH=/files \
-e DATABASE_URL=postgres://postgres:[email protected]:5432/postgres \
-v $PWD:/files \
ghcr.io/akrantz01/davoxide:latest
```

## Usage

A few motivating and useful examples of how your product can be used. Spice this up with code blocks and potentially more screenshots.

To run DAVOxide, you will need a [Postgres](https://www.postgresql.org/) database instance.
To get started quickly, you can launch one using Docker.

All configuration is done through environment variables. There are only 4 options to configure:
- `RUST_LOG` - The logging configuration (see [env_logger](https://docs.rs/env_logger/latest/env_logger/#enabling-logging) for options)
- `ADDRESS` - The listen address
- `BASE_PATH` - The path files should be served from
- `DATABASE_URL` The database URL to connect to

All options are optional except for `DATABASE_URL`.

## Meta

[Alexander Krantz](https://krantz.dev) – [email protected]

Distributed under the MIT license. See ``LICENSE`` for more information.

[https://github.com/akrantz01](https://github.com/akrantz01)

### Roadmap

Some future improvements that will be added eventually:

- [ ] Allow sharing single files
- [ ] Multiple access tokens per user
- [ ] User groups

## Contributing

1. Fork it ()
2. Create your feature branch (`git checkout -b feature/fooBar`)
3. Commit your changes (`git commit -am 'Add some fooBar'`)
4. Push to the branch (`git push origin feature/fooBar`)
5. Create a new Pull Request

### Development Setup

1. Install Rust, NodeJS, and Docker
2. Start the development containers: `docker compose up -d`
3. Start the development servers:
- API: `cargo run`
- UI: `cd frontend && yarn dev`