由于zotero和joplin等软件同步需要用到WebDAV,而国内WebDAV用的最多的坚果云存在一些限制,用的还是不太放心,于是便自建WebDAV服务.WebDAV是一项比较成熟的技术,其实现方式很多.本次使用的是docker-webdav的开源项目,其使用docker进行部署,操作十分方便.
环境
- 腾讯云服务器
- CentOS 8.2
安装docker,docker-compose
-
docker安装教程
-
docker-compose安装
拉取镜像
docker pull bytemark/webdav
启动
通过docker启动
mkdir <本机的webdav共享文件夹目录>
docker run --restart always -v <本机的webdav共享文件夹目录>:/var/lib/dav/data \
-e AUTH_TYPE=Digest -e USERNAME=test01 -e PASSWORD=123 \
--publish 80:80 --name webdav \
-e LOCATION=/webdav -d bytemark/webdav
停止容器
docker stop webdav
通过docker-compose启动(推荐)
将配置写入yaml避免每次启动带一堆参数
mkdir
mkdir compose
cd compose
vim docker-compose.yml
version: '1'
services:
webdav:
container_name: mydav
image: bytemark/webdav
restart: always
ports:
- "80:80"
environment:
AUTH_TYPE: Digest #HTTP使用digest,HTTPS使用Basic
USERNAME: test01
PASSWORD: 123
volumes:
- <本机的webdav共享文件夹目录>:/var/lib/dav/data
启动docker-compose
docker-compose up -d
# -d为后台运行
此时可以访问服务器的ip,能看到共享文件夹的内容
关闭
docker-compose down
设置密码
除了在docker-compose.yml
中设置密码也可以将验证信息写入文件user.passwd
,这样可以多用户访问,并且密码更改可以不用重启docker-compose
# 安装 htdigest
yum install httpd-tools
# 在 compose 目录中
touch user.passwd
htdigest -c user.passwd WebDAV <你的用户名> # -c是新建文件夹或覆盖,不带参数是追加
#根据提示输入密码并重复
- htdigest用法
中文乱码修复
通过测试发现,当文件名中出现中文时会出现乱码,解决方案参考issue
docker ps #查看容器id
docker exec -it <容器id> /bin/bash
vi conf/conf-enabled/dav.conf
<Directory "/var/lib/dav/data/">
Dav On
Options Indexes FollowSymLinks
AuthType Basic
AuthName "WebDAV"
IndexOptions Charset=utf-8 <-----------添加这一行
AuthUserFile "/user.passwd"
<RequireAny>
Require valid-user
</RequireAny>
</Directory>
从容器创建一个新的镜像
docker commit <容器id> bytemark/webdav:v1.1
最终的配置文件
version: '1'
services:
webdav:
container_name: mydav
image: bytemark/webdav:v1.1
restart: always
ports:
- "80:80"
environment:
#SERVER_NAMES: <你的域名>
LOCATION: /dav # 客户端连接url,默认是/
AUTH_TYPE: Digest
#USERNAME: xxxxx #如果挂载了user.passwd可以不用这里的用户名和密码
#PASSWORD: xxxxx
ANONYMOUS_METHODS: '' #GET,PROPFIND,OPTIONS,HEAD #ALL #未登录用户允许的HTTP方法,如果需要未登录也能读就要设置为后面的一串
volumes:
- <本机的webdav共享文件夹目录>:/var/lib/dav/data
- /root/compose/user.passwd:/user.passwd #前者改成实际的user.passwd的路径
客户端测试
## windows
客户端使用RaiDrive进行测试,可以将webdav的共享文件夹挂载到本地硬盘
- 如果是http不勾选地址,端口使用80
设置完成后在文件资源管理器中看到挂载的共享盘,使用方式和正常的文件夹相同
mac
右键访达连接服务器
,输入http://<IP>/dav
,按提示输入账户密码即可使用
- ref
参考
-
Run your own WebDAV server with Docker
-
Docker使用WebDav服务器文章来源:https://www.toymoban.com/news/detail-780348.html
-
docker-webdav github文章来源地址https://www.toymoban.com/news/detail-780348.html
到了这里,关于【教程】使用docker搭建WebDAV服务的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!