又来月经整活webdav的服务端。go语言的,路由、windows、linux跨平台兼容的。

webdav的问题感觉就是论坛月经问题,每个月总有话题会涉及。

之前我写的chfs使用方式的帖子

发现了chfs的一些缺陷,所以找替代品。
如在低功耗设备上资源占用过高的问题,主要是中低端的openwrt类的家用路由。CPU会过高的。
被扫出有漏洞,放在机房服务器上面开公网的情况,虽然大多数个人使用没什么,但是单位或者上游运营商有可能要背锅就找你谈话。
有漏洞有bug有优化问题也很正常,不过作者好像并不打算更新,事实上也很久不更新了,也没有开源,所以还是想找个替代品。

说一下,个人使用场景,每个人情况不同选择就会不同。
公网服务器上装个webdav,方便做一些文件共享,文件同步,安全要求有一些。
家里内网有个小米路由,性能不强,播放高清4k,smb可能就会卡顿,不如webdav流畅。
本地为什么不整个专门NAS。因为没有巨大的数据要本地保存,视频都是看完就删,路由就够了,还有为了省电,省设备钱、省空间。
服务器为什么不搞群晖、freenas、nextcloud之类的专业网盘或者NAS系统。因为这些软件太重,all in one,看着功能很丰富,实际干啥都行干啥都不专业,还浪费资源,用着还麻烦,整活什么虚拟化、数据库、web服务、docker,另外搞个centos、windows不香吗。
所以弄个小巧精致、独立的webdav服务。

替代方案有2个。Simple Go WebDAV server和caddy-webdav。

1.前期准备工作
查操作系统和CPU架构。
我以小米路由1代的linux举例。

uname -a

2.下载对应版本的执行文件。Simple Go WebDAV server和caddy-webdav二选一

一个单文件的,专门开webdav服务的软件,好处就是够轻量,使用简单,配置简单。缺点是,好像跟我的小米路由CPU不兼容,虽然写是最新支持ARMv7架构,不过运行不起来,在社区反馈看看后续有没有修复。


文件名,前面是系统类型,中间是CPU框架类型。

caddy是一个web服务,类似的有nginx、apache,我们只是用他的一个webdav插件。其实nginx、apache也能开webdav,不过个人觉得有点重了。好处是使用简单、配置简单。还有web页面可以在线查看文件。


虽然一般是按照CPU框架选。不过好像我的小米路由CPU有点兼容问题,我试了ARMv5才正常运行。
下载后,重命名为caddy,并授权执行

mv caddy_linux_arm5_custom caddy
chmod +x caddy

3.放进路由,并写配置。
Simple Go WebDAV server配置,与webdav可执行文件放在一起,配置文件名config.yaml

# Server related settings
address: 0.0.0.0
# 端口
port: 59800
#是否启用用户登录,还是匿名访问。
auth: true
#是否开https
tls: false
#证书文件路径
cert: cert.pem
key: key.pem
prefix: /
debug: false

# 匿名访问的路径
scope: .
modify: true
rules: []

# 代理配置
cors:
  enabled: true
  credentials: true
  allowed_headers:
    - Depth
  allowed_hosts:
    - http://localhost:59800
  allowed_methods:
    - GET
  exposed_headers:
    - Content-Length
    - Content-Range

#用户配置
users:
    #用户名、密码、文件夹路径,注意前面的减号,不能漏。windows文件夹路径不能是分区根目录,例如:E:/
  - username: admin
    password: admin
    scope: E:/game/

caddy-webdav配置,,与caddy可执行文件放在一起,配置文件名Caddyfile

{
    order webdav before file_server
}
 
#端口
:59800 {
    # 访问的文件夹路径
    root * /userdisk/data
    encode gzip
    # 用户名密码,密码是加密的,密文可以用命令
    # caddy hash-password --plaintext 密码
    #命令生成密码的密文
    basicauth {
        admin JDJhJDE0JEpNbzFOMFFKalowOEhSQnp3VzluTHU2NS42N201NjBlNHNQd2JBdHRjRUdhWTg4eWY2NWdt
    }
    route {
        rewrite /webdav /webdav/
        webdav /webdav/* {
            # webdav的路径设置。例如http://ip:端口/webdav路径
            prefix /webdav
        }
        # web服务,可以浏览器在线查看文件
        file_server browse
    }
}

4.启动服务
Simple Go WebDAV server启动服务

./webdav &

caddy-webdav启动服务

./caddy start

5.开机启动
小米路由:

vim /etc/rc.local

exit 0后面添加

cd /etc/caddy
./caddy start

windows的话用nssm做成系统服务

自己是用nginx搭建webdav服务 + 反向代理

资源占用如何


为了避免搞乱系统,我其实是openwrt 的 docker 里装自制的nginx容器
其实就是 下个ubuntu 然后再根据自己需要选一个

apt install nginx-core
apt install nginx-extras
apt install nginx-full
apt install nginx-light

没用–no-install-recommends 和 clean之类的参数,所以打包完体积稍大了点


如果非常在意磁盘占用也可以用,也可以别用ubuntu,用 alpine 做底包
nginx有官方docker镜像,但我忘了少的是 webdav的还是stream模块,所以就自己打包了个

nginx嘛。。。。毕竟也是老牌产品了,主要我还需要用它来做反向代理,就一直用到现在

好文章,但是月经的比喻有些离谱哈哈哈