Webd 是一款极度轻量化的自建网盘工具,服务端程序仅 60~90KB(视不同系统),无任何依赖,速度快、资源占用低,使用网页端即可上传、下载文件,支持用户权限管理,密码下载等功能,堪称最小巧的文件服务器,新增通过 ADB 命令在 Android 设备上运行。@Appinn
青小蛙之前介绍过这款小工具:96KB 的微型文件服务器,自己在家搭网盘、分享文件[Win/Linux/OpenWRT]。
昨天看到了一个新帖子:过了数年后我又把自建网盘的软件 webd 更新了,依旧几十KB,就陷入了沉思:现在时间过的这么快么,已经…数年了啊…
转念一想不对,上次发布明明就是 2 年前的嘛,虽然叫数年也没什么问题,但仅仅 2 年,还好还好,并不算太久。
Webd
Webd 可以在 Windows、Linux、OpenWRT 和 Android 设备上使用,运行前可选修改配置文件 webd.conf,包括下载路径、端口、权限设置、用户名设置等,然后就可以了。Windows 下除了命令行工具,还有一个系统托盘菜单:
非常的简洁了。打开 http://ip地址:9212/#/ 就能访问了。
案例
Webd 官网下载页面就是 Webd 最好的案例了:https://gwgw.ga/fidx.html#/webd/
简单的食用方式
配置文件:webd 启动时会在当前目录和 /etc 下查找并加载 webd.conf 文件,编辑 webd.conf 去掉行首的 # 可让改行配置生效。含有空格的路径需用英文双引号包起来。
- Webd.Root 指定网盘文件的路径(更改后需移动原 web 目录下的 .Trash 文件夹到新路径下,否则无法删除文件
- Webd.Listen 监听端口或特定的地址,支持多个,可配置成 [::]:9212 来同时监听 IPv6 和 IPv4
- Webd.Hide 隐藏托盘图标, 无参数,该项仅支持 Windows
- Webd.User 设置用户的权限、用户名和密码,支持两个用户,但使用同一目录,比如 Webd.User rlumS user1 pass1 表示设置 user1 的密码为 pass1 ,具有 r、l、u、m、S 四种权限。其中 r 表示访问文件,l 表示获取文件列表,u 表示上传文件,m 表示删除移动重命名文件,S 表示显示隐藏文件。可赋于用户任意单个或多个权限,任意组合,灵活配置。
- Webd.Guest 设置无需登录的访客权限,参考上面的权限组合;设置成 0 表示禁用访客。
- Webd.Browser 用于指定自定义的浏览器路径;该项还能解决双击托盘图标无法弹出界面的问题。
命令行参数对应的配置项:
- -c 指定配置文件, 不再使用默认路径的
- -h Webd.Hide
- -B Webd.Browser
- -l Webd.Listen 可指定多个
- -w Webd.Root
- -g Webd.Guest
- -u 类似 Webd.User, 需把空格用冒号替代, 类似 -u rlum:user1:pass1
Linux、OpenWrt、Armbian 等平台上安装 webd
webd-linux-x86_64.tar.gz 用于普通 x86_64 linux 发行版
webd-linux-aarch64.tar.gz webd-linux-armv7.tar.gz 使用于 arm linux 平台
webd-openwrt-x86_64.tar.gz 用于安装了 OpenWrt 的普通 PC
webd-android-*** 用于通过使用 adb 命令在 android 设备上运行
webd-linux-mipsel-uclibc.tar.gz 适用于 Padavan 等固件
webd-openwrt-XXXXX.tar.gz 适用于不同硬件的 OpenWrt 路由器
更多设置参考官网。
安卓的怎么运行呢?刚在路由上按了个,看看安卓怎么弄。
试试 adb shell webd
首先下载带有android字样的压缩包, 一个64位arm的的一个32位arm的, 一般新设备的用64位的
解包后会发现有两个脚本文件和运行于android的webd可执行文件
通过adb shell把webd可执行文件放到android设备的/data/local/tmp下面去运行就可以了, 别的目录没有运行权限
一般在android上用参数-w /sdcard来设定/sdcard位工作目录
还需要命令开头加 nohup 和 末尾加 & 来保证退出adb shell后继续运行
注意某些设备在断开链接电脑的数据线后依然会kill掉webd进程,有些设备能保持以保持运行,设备重启后依然失效
反正adb shell的运行方式比较丑陋, 算是临时的方案
有root权限的话可以整合进系统让它开机自动启动
正统的一点的方式是写个apk去启动那个进程, 但是我还没学会写apk, 抱歉
另外有辅助脚本可以让adb shell的运行方式简单一点
android设备开启adb, 通过数据线连接电脑(网络adb的方式也行), 保证PATH环境变量里面有adb命令
然后运行 inst_webd.sh(用于linux) 或 inst_webd.cmd(用于windows) 就直接安装成功了
安装前可以编辑这两个文件来修改用户名密码或其他参数.
登录能不能在参数上有一个有效期的,不然没登出会一直保持登录状态。
现在一直在用nodejs 的 http-server
9212是webd的9宫格输入法的数字吧,那webd是什么意思呢?
我觉得是 Web Download 的缩写
我觉得是 web disk 或者 web directory :)
嗯,合理。
web daemon ,linux后台服务的命名习惯,比如 httpd
数字是随便选的
webd的名字也是随便起的
不要太在意啦
……我还以为像linux系统中httpd一样,是daemon(守护进程)的意思……
一直有个问题不知道咋回事,场景是部署在VPS用Nginx反代。
IP:9212这样直接访问没有问题的
但是在Nginx里加了这句
location /webd/ {
pass_proxy http://127.0.0.1:9212
}
一直都404,不知道为啥。。。
我觉得,webd 后面那个 / 应该去掉。
还有语句是 proxy_pass,一个例子:
location /webd {
proxy_pass https://abc.appinn.net/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
我改成了这样,
会显示 404
location /webd {
proxy_pass http://127.0.0.1:9212/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
而如果是(多一个斜杠)
location /webd/ {
proxy_pass http://127.0.0.1:9212/;
proxy_redirect off;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
就会显示access denied.
你要确认 127 这个地址是好的哦…打开你的 nginx 日志看看具体错误
我的http协议的实现部分和nginx的这种通过路径反代方式配合起来有些问题.
但是通过不同端口方式来反代或者添加https支持还是可以的
直接反代
server {
listen 9213;
location / {
proxy_pass http://127.0.0.1:9212;
}
}
添加https支持
server {
listen 9214 ssl;
ssl_certificate path_to/xxxx.cer;
ssl_certificate_key path_to/xxxx.key;
location / {
proxy_pass http://127.0.0.1:9212;
}
}
我最终用的是换端口的这个方案,Nginx的配置太复杂了,不敢乱动。
感谢!
BTW,我在家里的NAS的Docker上也部署了Webd,很好用,真的谢谢你!
请问webd的Docker 镜像的名叫什么?谢谢
没有现成的,我自制的,没有上传到docker hub。
Docker hub上有webd想关,但已经不能正常运行了
大佬,考虑支持webdev和samba协议么?
用strace看了一下, 这样写的话, 当请求落到webd上面的时候请求的路径中还带有/webd/
得想办法让请求nginx /webd 路径的请求到了webd上后请求的是 / 才可以
google 搜索 proxy_pass remove prefix 会发现需要用到 rewrite
比如这个 https://stackoverflow.com/questions/33218367/nginx-proxy-pass-remove-path-prefix-resolve-dns
location /a/ {
rewrite ^/a/(.*) /$1 break;
proxy_pass https://website.com/$uri$is_args$args;
}
在我的 firefox 上图标的显示都是错误的,用 brave 就正常,不知道是特例还是我 FF 的乱七八糟的扩展的原因。另外的问题是点了删除就只是文件名变红就没了,文件还在那,刷新下后和之前一样,其他功能正常。
无法删除的时候需要在 网页界面的根目录建一个 以点开头的 .Trash 文件夹
然后应该就可以删除了
可以了,Nice。
firefox上显示错误图标的截屏能发到我的信箱看看嘛
我知道了,因为我用了 [GreasyFork-Scripts] 这个油猴脚本的原因。
最近发现ipv6可以完美替代内网穿透,这个支持ipv6,就挺好。chfs还不支持,暂时休息一下。
chfs应该很容易支持ipv6吧, 几行代码的事 , 你问问作者呢
发现一个问题。服务器上文件更新之后(一个txt),点击链接仍然是旧的,应该是调了缓存,必须强制刷新(ctrl+F5)才能看到新的。我这边浏览器是禁用了缓存的。虽然问题不大,但多少跟预期有点不符。
重现了你说的问题.
原因是我设置了12分钟的缓存, 在这个时间内再次访问浏览器不会向服务器发送请求.
看来这个地方应该去掉
好东西啊。废旧手机变存储盘。不知道走的什么协议,速度怎么样。
当然是走的http协议, 能跑满手机的无线上传速度
写了一个图形界面的“webd.conf配置文件生成”工具,有需要的自己拿的,这样上手更容易了。
http://chelun.iok.la:2222/webd%E9%85%8D%E7%BD%AE%E6%96%87%E4%BB%B6%E7%94%9F%E6%88%90.exe
MD5:531d1a4501d949930c3b0d28a9e290c8
哈勃:https://habo.qq.com/file/showdetail?pk=ADcGYV1vB2AIMFs0U2E%3D
virscan:https://r.virscan.org/language/en/report/586b5bd601525d6483b0d0b54d4e634b
微步云:https://s.threatbook.cn/report/file/8544ec12a29aae0e5fa1d6a264a0740f7c0258581d60862c3b62edc7a03e4058/?env=win7_sp1_enx86_office2013
魔盾:https://www.maldun.com/analysis/YXNkZmRzZmFkc2Y2NzA0MDZkc2Zhc2RmYXNkZg==/
奇安信:https://sandbox.ti.qianxin.com/sandbox/page/detail?type=file&id=AX3YVG-da5r8RybxuxX5&env=&time=&sha1=a1abbb0b7333a90f5e69805a8a80b12695bc2558
检测结果如上,自己把握吧~
刚才测试挺好用,就写了个补充工具,可能还有bug,需要修复bug或其他功能建议 可以在这条评论下面回复我~
谢谢你实现的工具
其实可以在网页端实现, 这样更容易接受.
大佬,“Webd.Root 指定网盘文件的路径”只能指定一个目录,我现在有两块闲置硬盘想同时用应该怎么处理?
hfs更好用
hfs是个历史很悠久的开源软件了, 但是pascal实现的, 不太容易弄到linux嵌入平台.
很棒
20220105 更新: https://webd.cf
修复了32位版本无法正常上传4G文件的问题, 影响windows版本和linux版本, 只有linux平台的x86_64 aarch64版本不受影戏.
原因是错用来strtoul(), 其在32位平台上返回的值只有32位. 再加上只有linux x86_64的webd进行了充分测试, 导致这个问题存在了很久. 非常抱歉这么久才发现.
请问可以命令行push文件吗?想用在gitlab的ci里,gitlab自带的只能显示coverage ,而我想要具体的用例数。当前是scp到webd的文件夹。如果直接利用命令行上传。会更方便
我是在文件夹内放了一些扩展名MP4的视频,有的电脑单击可播放、右击可另存。有的电脑则不行,无论单击还是另存,都提示:无法访问网站,连接已重置;网络错误。非MP4的文件,单击可正常弹出下载窗口。为什么呢?
测试了发现,和中文、名称长度等都无关
所有的电脑,在微信中直接打开链接,都可以正常播放。只是有的电脑,用浏览器不行(chrome、edge等)
问题解决了,是公司里网络行为管理防火墙拦截导致的。webd是好用的
我想问问,为啥每次打开页面,都会有这个请求?https://gwgw.ga/m/gx.cn;这个用使用干什么的?!
啊这是个啥?哪个页面加载了这个?
webd这个工具,使用浏览器访问,默认回加载这个。都是https://gwgw.ga/m,而且带着网页的信息。那是不是回暴露每个人的网盘的地址啊?
请问下linux下怎么常驻该程序呢,ssl终端关闭后,就打不开了。我用的nodejs。怎么用pm2插件去开启后台常驻。求解答。
screen命令,用screen -S webd,然后在这个叫webd的session里面运行就行了。Ctrl+A然后再按d就可以detach这个session了,这样子就会一直运行,即使你退出终端也没关系。只要screen没被杀掉就行。要回到这个session用screen -r webd就可以了