我的树莓派外接了一个硬盘需要文件共享, 我试过NFS , SMB, FTP 和 webdav协议, 刚好把最近的webdav的配置写成这篇文章。
webdav协议软件的选择
可选的有
- nginx加装模块实现
- Apache实现
- 其他软件实现
最终我选择了 https://github.com/hacdias/webdav 很多人推荐的这个。 go编写,并且支持
ARM架构。
打包docker镜像
首先他的文档很简单, 并且提供的docker版本都没有一点说明, 于是我自己打包了个docker镜像。
Dockerfile 文件内容如下:
FROM alpine:latest
ADD linux-arm64-webdav.tar.gz .
ADD config.yaml .
VOLUME /media
EXPOSE 8280
ENTRYPOINT [ "/webdav" ]
- 挂载的文件镜像地址: /media
- 开放的端口是: 8280
- 并且打包了配置文件config.yaml
config.yaml 配置文件内容如下:
# Server related settings
address: 0.0.0.0
port: 8280
auth: true
tls: false
cert: cert.pem
key: key.pem
prefix: /
# Default user settings (will be merged)
scope: .
modify: true
rules: []
# CORS configuration
cors:
enabled: true
credentials: true
exposed_headers:
- Content-Length
- Content-Range
users:
- username: admin
password: 123456
scope: /media
配置文件中 users: 可以配置不同的用户,并且不同的用户有不同文件夹的权限, 我只是配置了一个用户而已, 具体的配置意义可以去github中查看
下载安装包
github中下载地址 https://github.com/hacdias/webdav/releases x选择自己电脑版本的包下载下来
开始打包
把 下载下来的安装包 linux-arm64-webdav.tar.gz
, 配置文件 config.yaml
和 Dockerfile
三个文件放入同一个文件目录中:
我的目录如图, 忽略多余的文件,多余文件不用在乎。
打包命令:
docker build -t webdav:v1 .
注意这个命令要在Dockerfile所在的目录下执行。
有些docker没有配置镜像地址, 打包速度会很慢的, 可以先配置好镜像地址后在打包。
运行docker镜像
我一般都是把运行命令写成sh脚本, 这样不会忘记, 我的启动脚本名称是docker.sh
内容如下:
docker run --name webdav -v /media/newsmy:/media/newsmy -p 8280:8280 -d --restart unless-stopped webdav:v1
出来镜像的hash码,说明运行成功了。
链接webdav
我的win 的是使用RaiDrive来挂载网络盘的, 他支持各种协议, 并且自动挂载成win的系统盘。
配置如下图
打开win的文件管理器, 可以看到直接就挂载了, 并且可以像本地文件一样的修改复制了
总结
虽然这种方案使用没有问题,但是它不支持https, 虽然看到配置文件中有https的密钥的配置,我懒得折腾了, 选择了另外一个docker镜像。 这个进行直接支持https。 并且我的树莓派有公网ipv6的地址, 我可以在外网直接访问到。
chonjay21/webdav