explaingit

hacdias/webdav

5,517GoAudience · ops devopsComplexity · 2/5Setup · easy

TLDR

A single-binary WebDAV file server you configure with a YAML file to share folders over your network with user accounts, per-user permissions, and optional HTTPS, no client installation needed on Windows, Mac, iOS, or Android.

Mindmap

mindmap
  root((webdav))
    What it does
      WebDAV file server
      Single binary
      No dependencies
    Configuration
      YAML JSON TOML
      TLS and HTTPS
      Path prefix and port
    Users and Permissions
      Per-user directories
      CRUD permission flags
      Env var credentials
    Deployment
      Docker image
      Homebrew on Mac
      Behind reverse proxy
Click or tap to explore — scroll the page freely

Code map

Detail Auto

An interactive map of this repo's files and how they connect — its source is parsed live in your browser. Click Visualize to build it.

filefunction / class

Things people build with this

USE CASE 1

Mount a shared folder as a network drive on Windows, Mac, iOS, or Android without installing server software on client devices.

USE CASE 2

Give each team member their own directory with read-only or full access by defining users and permissions in a config file.

USE CASE 3

Run a personal file sync server behind Nginx or Caddy with HTTPS for secure remote file access.

USE CASE 4

Automatically block repeated failed login attempts using fail2ban integration with the WebDAV server logs.

Tech stack

GoYAMLDocker

Getting it running

Difficulty · easy Time to first run · 30min

TLS requires a certificate, reverse proxy needs specific headers configured for full WebDAV compatibility.

License information is not mentioned in the explanation.

In plain English

This is a standalone WebDAV server written in Go. WebDAV is a protocol that extends standard web file transfers to support creating, editing, moving, and deleting files over HTTP, the same protocol used to browse websites. Many apps, including file manager clients on Windows, macOS, iOS, and Android, can connect to a WebDAV server as if it were a network drive. The server is a single binary with no external dependencies. You can install it by downloading a prebuilt release for your operating system, installing it through Homebrew on Mac, or pulling a Docker image. Configuration is done through a single YAML, JSON, or TOML file. The configuration file lets you set the address and port, toggle TLS for HTTPS connections, define a path prefix, and configure logging output and format. User accounts are defined in the same configuration file. When at least one user is defined, the server requires basic authentication (a username and password). Passwords can be stored in plain text for development or hashed with bcrypt for production. You can also pull credentials from environment variables if you prefer not to put them in the config file. Each user can have their own root directory, separate from the global one, and their own permissions set. Permissions are expressed as combinations of four letters: C for create, R for read, U for update, and D for delete. Fine-grained rules per path or file pattern let you allow or restrict specific subdirectories or file types for individual users. The README also covers running it behind a reverse proxy such as Nginx or Caddy, with example configuration snippets to ensure certain WebDAV operations work correctly through the proxy. A section on fail2ban integration is mentioned for automatically blocking repeated failed login attempts. The project is well-documented with a full annotated configuration example covering every available option.

Copy-paste prompts

Prompt 1
Help me write a WebDAV server config file with two users: one admin with full create, read, update, delete access and one read-only guest, each with their own home directory.
Prompt 2
I want to run this WebDAV server behind Nginx. Show me the Nginx config snippet needed to make WebDAV operations like MOVE and COPY work correctly through the proxy.
Prompt 3
Walk me through setting up the hacdias WebDAV server with HTTPS using a self-signed certificate and storing passwords as bcrypt hashes instead of plain text.
Prompt 4
I want to mount this WebDAV server as a network drive on Windows 11. Explain the steps and any Windows settings I need to change to connect to a non-standard port.
Prompt 5
Show me how to configure per-path permission rules in WebDAV so a user can read all files but only write to their own uploads subdirectory.
Open on GitHub → Explain another repo

← hacdias on gitmyhub — every repo by this author, as a profile.

Verify against the repo before relying on details.