Skip to content

vaggeliskls/cloud-webdav-server

Repository files navigation

Cloud Webdav Server — WebDAV Server for Cloud Storage

Code Quality Go Version License: MIT Go Report Card

A lightweight, production-ready WebDAV server written in Go. Mount Amazon S3, Google Cloud Storage, Azure Blob Storage, or a local directory as a WebDAV drive with per-folder access control and multiple authentication methods.

Inspired by vaggeliskls/webdav-server — if you don't need cloud storage, check out that project for a simpler Docker-based WebDAV server with Basic, LDAP, and OAuth/OIDC support.

⭐ Find this useful? Star the repo — it helps others discover the project.


Features

Feature Description
☁️ Storage backends Local filesystem, Amazon S3 / MinIO, Google Cloud Storage, Azure Blob Storage
🔒 Path-based permissions Per-folder access rules with user lists, wildcards, and exclusions
🔑 Authentication HTTP Basic, LDAP / Active Directory, OpenID Connect (Bearer token)
📖 Read-only mode Lock folders to ro per-folder or per-user
📁 Auto-create folders Directories created at startup from the permission config
🌐 CORS Configurable cross-origin support for web clients
🩺 Health check Optional /_health endpoint for load-balancer probes
🚫 Browser block Prevents accidental access from browsers (optional)
🐳 Minimal Docker image Distroless scratch image, non-root user, ~10 MB

Quick Start

cp .env.example .env   # edit as needed
docker compose up --build

The server listens on http://localhost:8080. Try it:

# 📤 Upload
curl -T README.md http://localhost:8080/files/README.md -u alice:alice123

# 📥 Download
curl http://localhost:8080/files/README.md -u alice:alice123 -O

# 📂 List directory (PROPFIND)
curl -X PROPFIND http://localhost:8080/files/ -u alice:alice123

Documentation

Full docs are published at https://vaggeliskls.github.io/cloud-webdav-server.

Getting started

  • Local Developmenttask commands, running against MinIO / Azurite / fake-gcs emulators
  • Docker — compose, plain docker run, image tags, healthchecks
  • Kubernetes / Helm — install from oci://ghcr.io/vaggeliskls/charts/cloud-webdav-server, ingress, probes

Cloud providers

Reference

  • Configuration — full environment-variable reference for every backend and auth provider
  • Examples — ready-to-use docker-compose.yml snippets for every storage backend and auth pattern

Storage backend at a glance

STORAGE_TYPE Required env vars Details
local LOCAL_DATA_PATH Local Development
s3 S3_BUCKET, AWS_ACCESS_KEY_ID, AWS_SECRET_ACCESS_KEY (+ S3_ENDPOINT for non-AWS) Amazon S3 / MinIO
gcs GCS_BUCKET, GOOGLE_APPLICATION_CREDENTIALS (or ADC on GKE) Google Cloud Storage
azure AZURE_CONTAINER, AZURE_STORAGE_ACCOUNT, AZURE_STORAGE_KEY Azure Blob Storage

References

About

A lightweight WebDAV server written in Go. Mount cloud storage (GCS, S3, Azure) or a local directory as a WebDAV drive.

Resources

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages