ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

从一条命令到生产加固:个人 WebDAV 服务器搭建实录

从一条命令到生产加固:个人 WebDAV 服务器搭建实录 从一条命令到生产加固个人 WebDAV 服务器搭建实录【免费下载链接】webdavA simple and standalone WebDAV server.项目地址: https://gitcode.com/gh_mirrors/we/webdav文件在手机、笔记本和服务器之间来回倒腾网盘还动不动就限速这种日子熬了两年我干脆自己搭了个能多设备同步文件的私有存储。选的方案就是一个用 Go 写出来、足够轻的个人 WebDAV 服务器装起来省心权限也好管丢到一台低配机器上长期跑也没压力。下面按我自己上手的顺序把从跑起来到加固上线的每一步讲清楚。一、先把服务跑起来三种装法按场景挑装法我一般看场景定。图省事直接上容器在 macOS 上想随手装一条命令搞定就用 brew真要改代码或做二次开发才去拉源码编译。三条路都能拿到可运行的服务差别主要在依赖多少和后续好不好维护。容器部署最省事把本地data目录挂进去当存储宿主机端口和容器端口对上号就行下面这条命令一句话拉起docker run -p 6060:6060 -v $(pwd)/data:/data ghcr.io/hacdias/webdav:latest走源码这条路需要先 clone 下来再编译适合打算动内部逻辑的人git clone https://gitcode.com/gh_mirrors/we/webdav cd webdav go buildmacOS 上最快捷的则是包管理器这一条装完直接可用brew install webdav注意一下它编译出来是单文件二进制没有一堆运行时依赖内存占用很低放在树莓派这种小机器上扛一个家庭级的个人云存储完全够用——这也是我选它的原因。二、一份配置文件把地址、目录和日志都定下来跑起来之后真正花时间的是这份配置文件。它同时吃 YAML、JSON、TOML 三种格式我一般用 YAML看着最直白。最小可用的一份长这样声明了监听地址、端口、存储目录外加一个带 CRUD 权限的账号address: 0.0.0.0 port: 6065 directory: ./data users: - username: admin password: admin permissions: CRUD几个关键项的含义配之前先看懂再动手address监听地址写0.0.0.0就是允许任意 IP 进来只在本地调试时建议改成127.0.0.1。port对外端口尽量挑 1024 以上的非特权端口省得和系统服务打架。directory真正存文件的位置用户登录后能读写的就圈在这。users认证账号列表username/password是登录凭据permissions限定这个账号能做的操作。顺手两条性能上的话日志级别别一上来就开到最细平时用默认级别排查问题时再临时调高能省不少 I/O并发连接数也别默认拉满按实际负载调。另外若前端应用要跨域访问记得把 CORS 打开否则浏览器里会堆一堆被拦掉的请求。三、把权限收紧到具体目录和文件类型这套 WebDAV 权限配置只有四个字母组合起来就很灵活C建文件和目录R读内容U改内容D删文件和目录。CRUD是全部放行RU就只能读和改、不能新建也不能删。默认每个账号继承全局权限想精细控制时就用rules按路径或正则单独指定rules: - path: /public/access/ permissions: CRUD - regex: ^..js$ permissions: RU第一条意思是/public/access/目录下面允许完整读写第二条用正则匹配所有以.js结尾的文件只给读和改。我习惯把对外开放的目录按文件类型放宽这类例外都写成 rules其余保持默认这样一旦有人在哪个目录越了权翻配置就能一眼定位。四、密码加密和防爆破要一起上生产环境里密码这块最容易偷懒。它支持三种存法明文只配在本地测试用完就删、Bcrypt 加密生产推荐、以及从环境变量读取安全级别最高密码不落盘。要生成 Bcrypt 串用服务自带的webdav bcrypt命令或 Linux 上的htpasswd都行。只把密码加密还不够挂在公网的服务迟早要面对爆破。我一般再叠一层 Fail2Ban让它盯着登录日志对反复登录失败的来源 IP 自动封禁[webdav] enabled true port 6065 filter webdav logpath /var/log/webdav.logport填你的实际端口logpath指向服务写日志的那个文件改完重启 Fail2Ban 让它生效。五、挂上反向代理再配上开机自启服务要挂到域名后面走 HTTPS 时通常前面会加一层 Nginx 反向代理做 WebDAV 反向代理的关键是别把Destination头弄丢。这段配置把请求转发到本机服务并透传真实 IP 和Destinationlocation / { proxy_pass http://127.0.0.1:8080; proxy_set_header X-Real-IP $remote_addr; proxy_set_header Destination $dest; }注意一下proxy_pass后面写的是 WebDAV 服务实际监听的地址和端口按你前面的配置改。最后让它常驻。做成 systemd 服务开机自启、挂了自动拉起下面这份 unit 文件基本可以直接用[Unit] DescriptionWebDAV Afternetwork.target [Service] Typesimple Userroot ExecStart/usr/bin/webdav --config /opt/webdav.yml Restarton-failure [Install] WantedBymulti-user.target把它放进/etc/systemd/system/重新加载 systemd 再启用即可ExecStart里指向的二进制和配置文件路径按需替换。收尾给一份可执行的上线清单照着过一遍再开门密码确认已换 Bcrypt 或走环境变量不留明文。Fail2Ban 已启用并能正常封禁。反向代理透传了X-Real-IP和Destination两个头。systemd 的Restarton-failure已开重启机器后服务能自动回来。端口配合防火墙只放行需要访问的来源 IP别对所有网段敞开。留意新版本及时升级服务别常年停在老版本。【免费下载链接】webdavA simple and standalone WebDAV server.项目地址: https://gitcode.com/gh_mirrors/we/webdav创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表