ARTICLE DETAIL

建站实战干货

来自一线的建站与推广经验沉淀,每一条都经过真实交付验证。

10 分钟搭好个人 WebDAV 服务器:Docker 部署保姆级教程

2026/8/21 22:04:27 拓冰建站 浏览量
10 分钟搭好个人 WebDAV 服务器:Docker 部署保姆级教程 10 分钟搭好个人 WebDAV 服务器Docker 部署保姆级教程【免费下载链接】webdavA simple and standalone WebDAV server.项目地址: https://gitcode.com/gh_mirrors/we/webdav手机、电脑、NAS 之间来回拷文件或者忍受网盘的限速和会员费是不是早就受够了其实你完全可以自己跑一台个人 WebDAV 服务器——一个用 Go 写成的单文件程序把任意目录通过标准 WebDAV 协议暴露出去任何设备用现成的客户端连上就能同步。不用装数据库不用配复杂环境一台小机器甚至树莓派就够了。它凭什么省心先说清楚它好在哪你才知道为什么值得装一个二进制文件搞定Go 编译出来就是单个可执行程序不依赖 Python 环境、不依赖 Node、不拖一堆 so 库拷到任何 Linux 上直接跑。资源占用极低内存常驻只有几 MBCPU 平时几乎不占扔在 VPS 或 NAS 上无感。配置随便挑格式同一套配置YAML、JSON、TOML 都认哪种顺手写哪种。协议是标准的走的是正经 WebDAV所以 macOS 的 Finder、Linux 的 GVfs、Windows 的 rclone 或 Cyberduck 都能直接挂载不用为它开发客户端。一句话它只负责把一个目录安全地暴露成可同步的 Web 服务这件事不夹带私货。用三条路把它装起来按推荐度从高到低排选顺手的就行。Docker 最省心因为镜像是从scratch构建的里面除了二进制啥也没有干净且体积小。# 推荐Docker 一行拉起来6065 是服务端口 docker run -p 6065:6065 -v $(pwd)/data:/data -v $(pwd)/config.yml:/config.yml:ro ghcr.io/hacdias/webdav -c /config.yml # 或者包管理器装macOS / Linux 通用 brew install webdav # 或者源码编译拿到最新代码 git clone https://gitcode.com/gh_mirrors/we/webdav cd webdav go buildDocker适合绝大多数人容器化隔离、升级只需换 tag这也是本文默认走的路。brew适合 Mac 用户想本地临时起一个玩玩。go build适合你装了 Go 工具链、想读源码改点行为的情况。拆明白四个配置字段安装完第一件事是写config.yml。不用背 YAML 语法下面这份只挑最核心的四个字段改完就能跑address: 0.0.0.0 port: 6065 directory: ./data users: - username: admin password: admin permissions: CRUD逐字段拆解字段含义建议值与理由address监听地址0.0.0.0才能被外网/其他设备访问只给本机用就写127.0.0.1port服务端口官方默认 6065。务必 1024 以上避免和系统服务撞车directory暴露的文件根目录指向真实数据目录比如./data这是用户能看到的网盘空间users认证用户列表只要写了用户Basic Auth 就自动开启不写则裸奔无认证仅限本地测试几个容易踩的点顺带说一下directory是每个用户共享的根你也可以给某个user单独加directory把 TA 关进自己的子目录做隔离。想暴露多个不相干的目录把directory换成directories以虚拟挂载点的形式挂进去即可。给账号设好 CRUD 权限权限就四个字母记一次就够字母操作C创建文件和目录R读取文件内容U更新/写入文件内容D删除文件和目录想组合就拼起来比如RC表示能读能建不能删。默认权限是R只读所以默认配置下用户只能看动不了这点比很多默认全开的服务安全。更细的粒度靠rules给不同路径套不同权限支持path前缀匹配和regex正则匹配两种写法rules: # 公开目录谁都能读写删 - path: /public/access/ permissions: CRUD # 所有 .js 静态资源只读 可更新不允许删和建 - regex: ^..js$ permissions: RU规则从后往前匹配第一个命中的生效。想给某条路径彻底封死写permissions: none就行。上生产前先做这三件事本地玩完准备长期跑之前下面三件事缺一不可。1. 把明文密码换掉。明文密码只配出现在本地测试里。生产环境二选一用{bcrypt}前缀存加密串可用webdav bcrypt命令生成或者用{env}前缀从环境变量读后者连配置文件里都不落地最干净。users: - username: admin password: {bcrypt}$2y$10$... - username: {env}WD_USER password: {env}WD_PASS2. 用 Fail2Ban 防暴力破解。裸暴露到公网的账号密码接口早晚会被扫配一条 fail2ban 规则连续失败自动封 IP[webdav] enabled true port 6065 filter webdav logpath /var/log/webdav.log3. 套一层 Nginx 反代。为了 TLS 证书、隐藏真实端口、统一入口。最小可用配置注意要把Destination头转一下否则 COPY / MOVE 会报 502location / { proxy_pass http://127.0.0.1:6065; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; set $dest $http_destination; if ($http_destination ~ ^https?://[^/](?path.*)$) { set $dest /$path; } proxy_set_header Destination $dest; }另外两个调优点一笔带过前端应用要访问就打开cors配置日志默认输出到 stderr排查问题临时把debug: true开一下拿到 debug 级别即可日常关掉省开销。让系统替你守着裸进程一挂就没了交给 systemd 开机自启、崩溃自动拉起。把下面存成/etc/systemd/system/webdav.service路径按实际改[Unit] DescriptionWebDAV Afternetwork.target [Service] Typesimple Userwebdav ExecStart/usr/bin/webdav --config /opt/webdav.yml Restarton-failure [Install] WantedBymulti-user.targetRestarton-failure意味着进程异常退出 systemd 会自动重启日常你基本可以忘了它的存在。它适合谁适合个人和小团队想在内网或自己的 VPS 上搞一套不受限的文件同步、备份、跨设备传文件的场景它能直接顶上。不适合的也得说清楚它没有 Web 管理界面、没有多端增量同步引擎、没做用户目录的细粒度配额和审计——你要的是企业级网盘那套协作、分享、版本管理它不是为你设计的老老实实用成熟网盘方案。它就是一台把目录安全暴露成 WebDAV的轻量服务器定位清楚用它该用的地方。【免费下载链接】webdavA simple and standalone WebDAV server.项目地址: https://gitcode.com/gh_mirrors/we/webdav创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考