跳到主要内容
极客日志极客日志面向AI+效率的开发者社区
首页博客GitHub 精选镜像工具UI配色美学隐私政策关于联系
搜索内容 / 工具 / 仓库 / 镜像...⌘K搜索
注册
博客列表
Go / Golang

用 webdav-server 搭一个轻量文件共享服务

webdav-server 是用 Go 编写的轻量 WebDAV 服务,支持单二进制或 Docker 部署。配置文件可精细控制用户权限,支持 bcrypt 密码加密和 TLS。适合搭建团队文档共享、自动化备份中转,能与 Nginx 反向代理、systemd 和各类客户端配合。使用时注意防火墙设置和证书配置,大文件传输建议调整超时参数。

道系青年发布于 2026/6/300 浏览

webdav-server 是一个用 Go 写的 WebDAV 服务,单二进制,部署起来很省事。如果你平时需要在不同设备之间传文件,或者想给团队搭一个简单的文档共享,它比 FTP 好使——原生就能被 Finder、Windows 资源管理器挂载,兼容性没得说。

安装

最省心的装法是用 Go 工具链一把梭:

go install github.com/hacdias/webdav/v5@latest

要是环境里没有 Go,直接用 Docker 也行:

docker pull ghcr.io/hacdias/webdav:latest

至于选哪个,看你环境习惯。我自己的开发机上通常会直接 go install,生产环境为了隔离还是 Docker 方便些。

跑起来

配置文件一个 YAML 搞定。最基本的写法长这样:

address: 0.0.0.0
port: 6060
directory: /data
users:
  - username: admin
    password: "{bcrypt}$2y$10$zEP6oofmXFeHaeMfBNLnP.DO8m.H.Mwhd24/TOX2MWLxAExXi4qgi"
    permissions: CRUD

permissions 用 CRUD 四个字母控制,对应创建、读取、更新、删除。密码可以用 bcrypt 哈希,也可以直接把明文放配置里(不推荐),或者用环境变量 {env} 语法引用,比如 password: "{env}MY_PASSWORD"。

然后用配置文件启动:

webdav --config config.yml

Docker 的话:

docker run -p 6060:6060 -v $(pwd)/config.yml:/config.yml -v $(pwd)/data:/data ghcr.io/hacdias/webdav -c /config.yml

6060 端口出来就能通过 WebDAV 客户端连了。

权限控制

webdav-server 支持按用户和路径细粒度控制权限。比如只让某个用户读 /public/docs,还可以用正则限制特定文件类型:

rules:
  - path: /confidential
    permissions: none
  - path: /public/docs
    permissions: R
  - regex: "^.+\\.pdf$"
    permissions: RU

"none" 直接屏蔽目录,比不给权限更干净。

实际跑团队共享时,场景会复杂一点。下面这个配置我常拿来用:

port: 8080
directory: /team-docs
users:
  - username: manager
    password: "{env}MANAGER_PASSWORD"
    permissions: CRUD
    directory: /team-docs/all
  - username: developer
    password: "{env}DEV_PASSWORD"
    permissions: RU
    directory: /team-docs/dev
  - username: guest
    password: "{env}GUEST_PASSWORD"
    permissions: R
    directory: /team-docs/public

这里每个用户直接锁定了各自的根目录,权限也分了三层。需要注意的是,directory 字段指定的是该用户看到的根,所以 admin 能看到 /team-docs/all,但 guest 只能看到 /team-docs/public。这是 webdav-server 比较灵活的地方。

融入现有环境

配合反向代理

生产环境一般不会裸跑,前面套个 Nginx 或者 Caddy 就能加上 HTTPS 和缓存:

location /webdav/ {
    proxy_pass http://localhost:6060/;
    proxy_set_header Destination $http_destination;
    proxy_set_header Host $host;
}

这个配置里 Destination 头很重要,WebDAV 的 COPY、MOVE 操作依赖它,漏了会出幺蛾子。

做成系统服务

Linux 下用 systemd 写个服务,开机自启稳稳的:

[Unit]
Description=WebDAV Server
After=network.target

[Service]
Type=simple
User=webdav
ExecStart=/usr/local/bin/webdav --config /etc/webdav/config.yml
Restart=always

[Install]
WantedBy=multi-user.target

记得先用 useradd -r webdav 建个用户,数据和配置文件的权限要对。

客户端怎么连

  • Windows: 资源管理器 -> 映射网络驱动器,地址填 http://server:6060
  • macOS: Finder 里按 Cmd+K,地址填一下就能连
  • Linux: davfs2 能直接挂载成文件系统
  • 手机: 各种文件管理器基本都支持 WebDAV

有一个小坑:Windows 内置的 WebDAV 客户端对自签名证书和 HTTP 基本认证有时兼容不好,有条件还是上正式证书。

自动化备份

我偶尔会把这里当备份中转,配合 cron 和 webdav-client 用:

#!/bin/bash
# 每天凌晨把本地备份同步到 WebDAV
webdav-client --config backup-config.yml sync /local/backup /remote/backup

webdav-client 不是本项目的一部分,但类似的工具很多,挑个顺手就行。

安全提醒

  • 永远不要在配置里写明文密码,就算测试环境也不建议开这个头。
  • 生产环境一定配 TLS,不然中间人一抓一个准。
  • 限制并发连接数,防止被单个客户端拖垮(配置文件里可以加 maxConnections 字段)。
  • 日志定期看一眼,异常访问通常比直觉来得早。

常见问题

碰到连接超时,先检查防火墙和端口转发;权限被拒的话,确认一下对应目录的系统权限和 SELinux(CentOS/RHEL 上常遇到);大文件传一半失败,可能是客户端或 Nginx 的超时断了,proxy_read_timeout 调大点试试。

性能方面,如果对速度有要求,数据目录放 SSD 效果明显;磁盘 IO 敏感的场景可以考虑加一下内存缓存(webdav-server 本身没内置,可以通过挂载 tmpfs 或者前面加 Varnish 这类缓存层解决)。

webdav-server 是个小而美的工具,依赖少,功能够用。用来替换老旧的 FTP 或者临时搭个共享盘,很合适。

目录

  1. 安装
  2. 跑起来
  3. 权限控制
  4. 融入现有环境
  5. 配合反向代理
  6. 做成系统服务
  7. 客户端怎么连
  8. 自动化备份
  9. 每天凌晨把本地备份同步到 WebDAV
  10. 安全提醒
  11. 常见问题
  • 免费图片AI生成工具免费生成了解详情
  • Magick API 一键接入全球大模型注册送1000万token查看
  • 免费图片视频在线生成30秒,将你的创意变成现实开始设计
  • X/Twitter免费视频下载器免登陆无限额度免费视频解析下载了解详情
  • 100+免费在线小游戏爽一把
极客日志微信公众号二维码

微信扫一扫,关注极客日志

微信公众号「极客日志V2」,在微信中扫描左侧二维码关注。展示文案:极客日志V2 zeeklog

更多推荐文章

查看全部
  • pycdc 上手指南:从 .pyc 还原 Python 源码
  • GitHub 仓库配置与推送:从 SSH 到冲突解决
  • 用 DeepFace 和 OpenCV 搭一个实时情绪检测器
  • LangChain 实现零微调 Agent:从 Self Ask 到 ReAct
  • SANN 空间注意力网络:从设计到 UCI 实验全记录
  • QClaw 一周上手记录:本地 AI 代理与微信直联体验
  • 一次GitHub学生认证的记录与避坑
  • 用 DeepSeek API 生成贪吃蛇游戏与扩展
  • 上手 Stable Diffusion:提示词、模型与调参经验
  • 鸿蒙平台集成 tavily_dart 进行 AI 语义搜索
  • VGA、HDMI、TFT、LED 与显示器的关系解析
  • 语言模型十年演进:从n-gram到Transformer再到GPT
  • 低代码平台的两种价值观:短期成果与长期成本
  • 用 Go 和 DeepSeek 打造一个智能服务器监控探针
  • Java 驱动的无人共享宠物洗澡物联网系统架构
  • 上手 Trae AI:从安装到实际项目的踩坑与心得
  • 大模型落地观察:金融、医疗、制造、物流和农业的真实进展
  • 前端首屏加载:六维优化实操清单
  • C++ 红黑树:插入与平衡修复的直观理解
  • 纯 LLM、多模态大模型与 AIGC 就业方向对比分析

相关免费在线工具

  • Base64 字符串编码/解码

    将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online

  • Base64 文件转换器

    将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online

  • Markdown转HTML

    将 Markdown(GFM)转为 HTML 片段,浏览器内 marked 解析;与 HTML转Markdown 互为补充。 在线工具,Markdown转HTML在线工具,online

  • HTML转Markdown

    将 HTML 片段转为 GitHub Flavored Markdown,支持标题、列表、链接、代码块与表格等;浏览器内处理,可链接预填。 在线工具,HTML转Markdown在线工具,online

  • JSON 压缩

    通过删除不必要的空白来缩小和压缩JSON。 在线工具,JSON 压缩在线工具,online

  • JSON美化和格式化

    将JSON字符串修饰为友好的可读格式。 在线工具,JSON美化和格式化在线工具,online