{"id":18399390,"url":"https://github.com/mholt/caddy-webdav","last_synced_at":"2025-04-12T22:36:01.943Z","repository":{"id":42679481,"uuid":"255128468","full_name":"mholt/caddy-webdav","owner":"mholt","description":"WebDAV handler module for Caddy","archived":false,"fork":false,"pushed_at":"2024-05-22T15:15:43.000Z","size":81,"stargazers_count":188,"open_issues_count":11,"forks_count":24,"subscribers_count":9,"default_branch":"master","last_synced_at":"2024-05-22T16:36:03.894Z","etag":null,"topics":["caddy","webdav","webdav-server"],"latest_commit_sha":null,"homepage":null,"language":"Go","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"apache-2.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/mholt.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2020-04-12T16:52:42.000Z","updated_at":"2024-05-22T15:15:48.000Z","dependencies_parsed_at":"2024-05-20T18:17:19.919Z","dependency_job_id":null,"html_url":"https://github.com/mholt/caddy-webdav","commit_stats":{"total_commits":14,"total_committers":7,"mean_commits":2.0,"dds":0.5714285714285714,"last_synced_commit":"75a603bc69789413e4213ac746906d4357883929"},"previous_names":[],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mholt%2Fcaddy-webdav","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mholt%2Fcaddy-webdav/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mholt%2Fcaddy-webdav/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/mholt%2Fcaddy-webdav/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/mholt","download_url":"https://codeload.github.com/mholt/caddy-webdav/tar.gz/refs/heads/master","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":248642627,"owners_count":21138352,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["caddy","webdav","webdav-server"],"created_at":"2024-11-06T02:27:08.324Z","updated_at":"2025-04-12T22:36:01.924Z","avatar_url":"https://github.com/mholt.png","language":"Go","funding_links":[],"categories":["Go"],"sub_categories":[],"readme":"WebDAV for Caddy\n================\n\nThis package implements a simple WebDAV handler module for Caddy.\n\n\u003e [!NOTE]\n\u003e This is not an official repository of the [Caddy Web Server](https://github.com/caddyserver) organization.\n\n\n## Syntax\n\n```\nwebdav [\u003cmatcher\u003e] {\n\troot \u003cpath\u003e\n\tprefix \u003crequest-base-path\u003e\n}\n```\n\nBecause this directive does not come standard with Caddy, you need to [put the directive in order](https://caddyserver.com/docs/caddyfile/options). The correct place is up to you, but usually putting it near the end works if no other terminal directives match the same requests. It's common to pair a webdav handler with a `file_server`, so ordering it just before is often a good choice:\n\n```\n{\n\torder webdav before file_server\n}\n```\n\nAlternatively, you may use `route` to order it the way you want. For example:\n\n```\nlocalhost\n\nroot * /srv\n\nroute {\n\trewrite /dav /dav/\n\twebdav /dav/* {\n\t\tprefix /dav\n\t}\n\tfile_server\n}\n```\n\nThe `prefix` directive is optional but has to be used if a webdav share is used in combination with matchers or path manipulations. This is because webdav uses absolute paths in its response. There exist a similar issue when using reverse proxies, see [The \"subfolder problem\", OR, \"why can't I reverse proxy my app into a subfolder?\"](https://caddy.community/t/the-subfolder-problem-or-why-cant-i-reverse-proxy-my-app-into-a-subfolder/8575).\n\n```\nwebdav /some/path/match/* {\n\troot /path\n\tprefix /some/path/match\n}\n```\n\nIf you want to serve WebDAV and directory listing under same path (similar behaviour as in Apache and Nginx), you may use [Request Matchers](https://caddyserver.com/docs/caddyfile/matchers) to filter out GET requests and pass those to [file_server](https://caddyserver.com/docs/caddyfile/directives/file_server).\n\nExample with authenticated WebDAV and directory listing under the same path:\n\n```\n@get method GET\n\nroute {\n    basicauth {\n        username hashed_password_base64\n    }\n    file_server @get browse\n    webdav\n}\n```\n\nOr, if you want to create a public listing, but keep WebDAV behind authentication:\n\n```\n@notget not method GET\n\nroute @notget {\n    basicauth {\n        username hashed_password_base64\n    }\n    webdav\n}\nfile_server browse\n```\n\n## Credit\n\nSpecial thanks to @hacdias for making caddy-webdav for Caddy 1, from which this work is derived: https://github.com/hacdias/caddy-webdav\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmholt%2Fcaddy-webdav","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fmholt%2Fcaddy-webdav","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fmholt%2Fcaddy-webdav/lists"}