22
33## 下载 Docker 镜像
44
5- ```
5+ ``` shell
66docker pull ray1ex/asgi-webdav:latest
7+ # 或者
8+ docker pull ghcr.io/rexzhang/asgi-webdav
79```
810
911## 零配置体验,全默认配置启动
1012
1113### 创建并启动容器
1214
13- ```
15+ ``` shell
1416docker run --restart always -p 0.0.0.0:8000:8000 \
1517 -v /your/data:/data \
1618 --name asgi-webdav ray1ex/asgi-webdav
1719```
1820
1921### 配置说明
2022
21- 因为在 ` /your/data ` 下没有 ` webdav.json ` 文件,所以会以全默认配置启动。根目录对应` /your/data ` ;只有一个账号,用户名` username ` ,密码` password ` ,权限无限制。
23+ 默认情况下会优先尝试使用 ` /data/webdav.toml ` , 如何没有找到会尝试使用 ` /data/webdav.json ` , 如果依然没有找到会使用默认配置。
24+
25+ 默认配置下:根目录对应` /your/data ` ;只有一个账号,用户名` username ` ,密码` password ` ,权限无限制。
2226
2327## 自定义/多账号
2428
2529### 创建配置文件
2630
27- 创建文件 ` /your/data/webdav.json ` ,修改文件内容如下
28-
29- ``` json
30- {
31- "account_mapping" : [
32- {
33- "username" : " user_all" ,
34- "password" : " pw1" ,
35- "permissions" : [
36- " +"
37- ]
38- },
39- {
40- "username" : " user_litmus" ,
41- "password" : " pw2" ,
42- "permissions" : [
43- " +^/$" ,
44- " +^/litmus" ,
45- " -^/litmus/other"
46- ]
47- },
48- {
49- "username" : " guest" ,
50- "password" : " pw3" ,
51- "permissions" : []
52- }
53- ]
54- }
31+ 创建文件 ` /your/data/webdav.toml ` ,修改文件内容如下
32+
33+ ``` toml
34+ [[account_mapping ]]
35+ username = " user_all"
36+ password = " pw1"
37+ permissions = [ " +" ]
38+
39+ [[account_mapping ]]
40+ username = " user_litmus"
41+ password = " pw2"
42+ permissions = [ " +^/$" , " +^/litmus" , " -^/litmus/other" ]
43+
44+ [[account_mapping ]]
45+ username = " guest"
46+ password = " pw3"
47+ permissions = [ ]
5548```
5649
57- > 文件格式为 JSON; 在最后一个大括弧和方括弧后面不能有逗号; 其中 ` permissions ` 列表内的格式为正则表达式
50+ > 文件格式为 TOML; 在最后一个大括弧和方括弧后面不能有逗号; 其中 ` permissions ` 列表内的格式为正则表达式
5851
5952### 配置说明
6053
6154重启 docker 容器后生效,重启后生效三个账号:
6255
6356- ` user_all ` 的密码为 ` pw1 ` ,权限为允许访问所有 URL
6457- ` user_litmus ` 的密码为` pw2 `
65- - 允许访问
66- - URL ` / `
67- - URL` /litmus ` 以及其子目录
68- - 禁止访问
69- - URL` /litmus/other ` 以及其子目录
58+ - 允许访问
59+ - URL ` / `
60+ - URL` /litmus ` 以及其子目录
61+ - 禁止访问
62+ - URL` /litmus/other ` 以及其子目录
7063- ` guest ` 的密码为` pw3 ` ,无任何 URL 访问权限
7164
72- > 权限规则不分读写; 对某个 URL 有权限,既表示对此 URL 下的文件和子路径均有读写权限,并可列出此路径下所有成员
65+ > 权限规则不分读写; 对某个 URL 有权限,既表示对此 URL 下的文件和子路径均有读写权限,并可列出此路径下所有成员
7366
7467## 更复杂的共享目录设置/映射
7568
7669### 修改配置文件
7770
78- 文件 ` /your/data/webdav.json ` 内容如下
79-
80- ``` json
81- {
82- "account_mapping" : [
83- {
84- "username" : " username" ,
85- "password" : " password" ,
86- "permissions" : [
87- " +"
88- ]
89- }
90- ],
91- "provider_mapping" : [
92- {
93- "prefix" : " /" ,
94- "uri" : " file:///data/root"
95- },
96- {
97- "prefix" : " /litmus" ,
98- "uri" : " memory:///"
99- },
100- {
101- "prefix" : " /litmus/fs" ,
102- "uri" : " file:///data/other"
103- },
104- {
105- "prefix" : " /litmus/memory" ,
106- "uri" : " memory:///"
107- }
108- ]
109- }
71+ 文件 ` /your/data/webdav.toml ` 内容如下
72+
73+ ``` toml
74+ [[account_mapping ]]
75+ username = " username"
76+ password = " password"
77+ permissions = [ " +" ]
78+
79+ [[provider_mapping ]]
80+ prefix = " /"
81+ uri = " file:///data/root"
82+
83+ [[provider_mapping ]]
84+ prefix = " /litmus"
85+ uri = " memory:///"
86+
87+ [[provider_mapping ]]
88+ prefix = " /litmus/fs"
89+ uri = " file:///data/other"
90+
91+ [[provider_mapping ]]
92+ prefix = " /litmus/memory"
93+ uri = " memory:///"
11094```
11195
11296### 创建并启动容器
11397
114- ```
98+ ``` shell
11599docker run --restart always -p 0.0.0.0:8000:8000 \
116100 -v /your/data:/data -v /your/data/other:/data/other \
117101 --name asgi-webdav ray1ex/asgi-webdav
@@ -121,52 +105,43 @@ docker run --restart always -p 0.0.0.0:8000:8000 \
121105
122106共享目录路径对应表
123107
124- | HTTP 路径 | Docker 容器内路径 | 宿主机器路径 |
125- | ------------------ | ---------------| -------------------- |
126- | ` / ` | ` /data/root ` | ` /your/data/root ` |
127- | ` /litmus ` | 内存区域A | |
128- | ` /litmus/fs ` | ` /data/other ` | ` /your/data/other ` |
129- | ` /litmus/memory ` | 内存区域B | |
108+ | HTTP 路径 | Docker 容器内路径 | 宿主机器路径 |
109+ | ---------------- | -- --------------- | ------------------ |
110+ | ` / ` | ` /data/root ` | ` /your/data/root ` |
111+ | ` /litmus ` | 内存区域 A | |
112+ | ` /litmus/fs ` | ` /data/other ` | ` /your/data/other ` |
113+ | ` /litmus/memory ` | 内存区域 B | |
130114
131- > 如果不在宿主机上创建 ` /your/data/root ` 这个路径,系统也可以工作; 但访问 ` / ` 这个 URL 只会得到一个 404 错误
115+ > 如果不在宿主机上创建 ` /your/data/root ` 这个路径,系统也可以工作; 但访问 ` / ` 这个 URL 只会得到一个 404 错误
132116
133117## 家目录
134118
135119### 修改配置文件
136120
137- ``` json
138- {
139- "account_mapping" : [
140- {
141- "username" : " user_a" ,
142- "password" : " password" ,
143- "permissions" : [
144- " +"
145- ]
146- },
147- {
148- "username" : " user_b" ,
149- "password" : " password" ,
150- "permissions" : []
151- }
152- ],
153- "provider_mapping" : [
154- {
155- "prefix" : " /" ,
156- "uri" : " file:///data/root"
157- },
158- {
159- "prefix" : " /~" ,
160- "uri" : " file:///data/homes" ,
161- "home_dir" : true
162- }
163- ]
164- }
121+ ``` toml
122+ [[account_mapping ]]
123+ username = " user_a"
124+ password = " password"
125+ permissions = [ " +" ]
126+
127+ [[account_mapping ]]
128+ username = " user_b"
129+ password = " password"
130+ permissions = [ ]
131+
132+ [[provider_mapping ]]
133+ prefix = " /"
134+ uri = " file:///data/root"
135+
136+ [[provider_mapping ]]
137+ prefix = " /~"
138+ uri = " file:///data/homes"
139+ home_dir = true
165140```
166141
167142### 创建并启动容器
168143
169- ```
144+ ``` shell
170145docker run --restart always -p 0.0.0.0:8000:8000 \
171146 -v /your/data:/data -v /your/data/homes:/data/homes \
172147 --name asgi-webdav ray1ex/asgi-webdav
@@ -176,8 +151,8 @@ docker run --restart always -p 0.0.0.0:8000:8000 \
176151
177152家目录路径对应表
178153
179- | 用户 | URL | Docker 容器内路径 | 宿主机器路径 |
180- | ---------- | ---------- | -------------------------- | ------------------------------- |
154+ | 用户 | URL | Docker 容器内路径 | 宿主机器路径 |
155+ | -------- | -------- | ------------------------ | ----------------------------- |
181156| ` user_a ` | ` /~ ` | ` /data/homes/user_a ` | ` /your/data/homes/user_a ` |
182157| ` user_a ` | ` /~/sub ` | ` /data/homes/user_a/sub ` | ` /your/data/homes/user_a/sub ` |
183158| ` user_b ` | ` /~ ` | ` /data/homes/user_b ` | ` /your/data/homes/user_b ` |
@@ -189,18 +164,18 @@ docker run --restart always -p 0.0.0.0:8000:8000 \
189164
190165## 链接客户端
191166
192- 以下以服务端网址为 ` https://your.domain.com ` 为例; 实际更常见的网址一般为 ` https://your.domain.com/my/dav/sub/dir/path `
167+ 以下以服务端网址为 ` https://your.domain.com ` 为例; 实际更常见的网址一般为 ` https://your.domain.com/my/dav/sub/dir/path `
193168
194169如果你的 WebDAV 根路径为 ` https://domain ` 在 WebDAV 根目录下分别有 ` /path1 ` ` /path1/sub1 ` ` /path2 `
195- 这几个子目录; 那么链接的时候分别使用 ` https://domain ` ` https://domain/path1 ` ` https://domain/path1/sub1 ` ` https://domain/path2 ` 都是可以的
170+ 这几个子目录; 那么链接的时候分别使用 ` https://domain ` ` https://domain/path1 ` ` https://domain/path1/sub1 ` ` https://domain/path2 ` 都是可以的
196171
197172### macOS
198173
199- 在 ` 访达/Finder ` 的菜单 ` 前往 ` -` 连接服务器... ` ; 然后在弹出窗口中输入 ` https://your.domain.com/any/webdav/path ` ; 然后点击 ` 连接 ` ; 输入用户名/密码即可
174+ 在 ` 访达/Finder ` 的菜单 ` 前往 ` -` 连接服务器... ` ; 然后在弹出窗口中输入 ` https://your.domain.com/any/webdav/path ` ; 然后点击 ` 连接 ` ; 输入用户名/密码即可
200175
201176### Windows
202177
203- 在 ` 文件管理器 ` 左栏 ` 网络 ` 处点击鼠标 ` 右键 ` ; 选择 ` 映射网络驱动器 ` ; 在 ` 文件夹 ` 栏目输入 ` https://your.domain.com ` ; 然后点击 ` 完成 ` ; 输入用户名/密码即可
178+ 在 ` 文件管理器 ` 左栏 ` 网络 ` 处点击鼠标 ` 右键 ` ; 选择 ` 映射网络驱动器 ` ; 在 ` 文件夹 ` 栏目输入 ` https://your.domain.com ` ; 然后点击 ` 完成 ` ; 输入用户名/密码即可
204179
205180## 杂技
206181
@@ -210,11 +185,12 @@ docker run --restart always -p 0.0.0.0:8000:8000 \
210185
211186配置文件修改方法如下:
212187
213- ``` json
214- {
215- "http_digest_auth" : {
216- "enable" : false ,
217- "enable_rule" : " Microsoft-WebDAV-MiniRedir|其他客户端UserAgent"
218- }
219- }
188+ ``` toml
189+ [http_digest_auth ]
190+ enable = false
191+ enable_rule = " Microsoft-WebDAV-MiniRedir|其他客户端UserAgent"
220192```
193+
194+ ### 使用自定义的配置文件路径(不推荐)
195+
196+ 修改 环境变量 ` WEBDAV_CONFIGFILE ` 即可. 其默认值为 ` /data/webdav.toml ` , 服务会在初始化时会尝试读取这个配置文件
0 commit comments