做了一个自建文件服务器 - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
爱意满满的作品展示区。
machengim
V2EX    分享创造

做了一个自建文件服务器

  •  
  •   machengim 2021 年 10 月 29 日 8509 次点击
    这是一个创建于 1580 天前的主题,其中的信息可能已经有所发展或是发生改变。
    类似于 http-server ,可以通过 http 访问服务器上的指定目录,不过功能上略多一点,包括用户验证,常见文件预览或播放,播放列表,srt 字幕支持,分享链接,移动端适配等。有主要操作系统 x86 64 的 release ,其他系统需要自己构建。文件体积大约 10~15M 。技术栈是 svelte 和 rust 。请各位大佬指正,谢谢。

    https://github.com/machengim/oasis
    第 1 条附言    2021 年 10 月 30 日
    感谢各位的支持,局域网 IP 的问题已经修复,目前可以修改配置文件 `oasis.conf` 来指定 IP 和端口。在不指定的情况找不到局域网 IP 也不会异常退出,而是提示没有找到,但用户仍可以输入正确的 IP 来访问。没有 IPv6 的环境无法测试,有条件的大佬可以配置 IPv6 的地址试试。
    64 条回复    2021-12-14 20:51:30 +08:00
    771007147
        1
    771007147  
       2021 年 10 月 29 日   1
    UI 看起来不错,提供一个在线预览就更好了
    MakeItGreat
        2
    MakeItGreat  
       2021 年 10 月 29 日 via Android
    有兴趣做一个下面预览当前目录的 index.md 吗?
    MakeItGreat
        3
    MakeItGreat  
       2021 年 10 月 29 日 via Android
    @MakeItGreat 就是文件目录下面或者上面预览
    weak
        4
    weak  
       2021 年 10 月 29 日 via iPhone
    感觉还不错
    makelove
        5
    makelove  
       2021 年 10 月 29 日   1
    看着不错,比我现在用的 miniserve 好看多了,那个真是完全没有设计。

    不过那个有个功能挺有用,就是可以上传,我用来在手机上发文件到电脑,否则我 Android 发到 Linux 主力机还是挺不方便的。
    iikebug
        6
    iikebug  
       2021 年 10 月 29 日   1
    看起来可以,就是 build 脚本为什么要用 py3 来做?直接 node 一把梭不好吗?
    aboat365
        7
    aboat365  
       2021 年 10 月 29 日
    rust 开发的程序果然非常小巧,作为一个网盘非常不错。建议增加文件上传功能,这比各种在线预览更加实用。
    pompeii
        8
    pompeii  
       2021 年 10 月 29 日
    Error: Cannot retrieve local ip
    cweijan
        9
    cweijan  
       2021 年 10 月 29 日
    看起来不错, star 一波, 很久前就一直想找一个开源的 web 文件管理器, 用于在手机上管理 pc 文件.
    40EaE5uJO3Xt1VVa
        10
    40EaE5uJO3Xt1VVa  
       2021 年 10 月 29 日
    svelte 体验如何
    Zchary
        11
    Zchary  
       2021 年 10 月 29 日 via iPhone
    这技术栈就很厉害
    machengim
        12
    machengim  
    OP
       2021 年 10 月 29 日
    @771007147 也有考虑,不过可能要先做 https 功能
    machengim
        13
    machengim  
    OP
       2021 年 10 月 29 日
    @MakeItGreat 可以考虑,不过感觉像是在复刻 github :)
    machengim
        14
    machengim  
    OP
       2021 年 10 月 29 日
    @iikebug 多谢提醒,确实没想过,可能是习惯了。后面就改成 node 。
    machengim
        15
    machengim  
    OP
       2021 年 10 月 29 日
    @pompeii 应该是因为 IP 地址。目前 rust 没有什么很好的本机 IP 的确认方法,所以土法炼钢写了一个大致的局域网 IP 范围,为了排除一些奇奇怪怪的设备所以没有考虑除 192.168.0.0.x 以外的 192.168 网段。大佬们有什么建议的处理方法吗?
    machengim
        16
    machengim  
    OP
       2021 年 10 月 29 日
    @yanzhiling2001 感觉跟 react 写法很像,但比 react 更轻快,特别是自带的 store 比 react 的 context 易用很多。不过生态还不够成熟,可能要自己造点轮子。
    alect
        17
    alect  
       2021 年 10 月 29 日
    搞一个访问家里的电影,当在线影院如何
    alect
        18
    alect  
       2021 年 10 月 29 日
    刚测试了下,貌似不支持 ipv6 ?
    machengim
        19
    machengim  
    OP
       2021 年 10 月 29 日
    @alect 是,目前不支持 IPv6
    alect
        20
    alect  
       2021 年 10 月 29 日   1
    @machengim #19 还想着拿来远程看家里下的电影呢,加油改进。整体运行挺好的。
    crab
        21
    crab  
       2021 年 10 月 29 日
    Error: Cannot retrieve local ip

    不在 0.0 ,IP 能不能弄成参数手动指定。
    defunct9
        22
    defunct9  
       2021 年 10 月 29 日
    miniserve 很不错啊, 在 k8s 里跑了一个,做 nginx ingress 的 503 整体自定义
    machengim
        23
    machengim  
    OP
       2021 年 10 月 29 日
    @crab 好的,这两天就改一下。
    bequt
        24
    bequt  
       2021 年 10 月 29 日
    不错,是否准备做 webd 支持呢
    machengim
        25
    machengim  
    OP
       2021 年 10 月 29 日
    @bequt 不太了解,暂时没有打算。
    itechify
        26
    itechify  
    PRO
       2021 年 10 月 29 日 via Android
    支持,这才是开源应有的样子
    hanguofu
        27
    hanguofu  
       2021 年 10 月 30 日
    看起来很牛的样子,这么多技术栈 ~~~ 请问有没有打算支持 文件上传啊 ?
    root01
        28
    root01  
       2021 年 10 月 30 日
    双击 oasis.exe ,释放 db 目录后,啥反应也没了
    machengim
        29
    machengim  
    OP
       2021 年 10 月 30 日 via Android   1
    @hanguofu 看来这个需求比较多,以后会考虑加上
    machengim
        30
    machengim  
    OP
       2021 年 10 月 30 日 via Android
    @root01 一般会一个黑框程序在运行,里面有服务器的局域网 ip 地址和端口,用浏览器访问就行。如果没有看到这个程序,八成是 IP 不在范围内,程序没启动起来。我这两天会修一下。
    caokeck
        31
    caokeck  
       2021 年 10 月 30 日
    好东西,之前有这个需要就自己写了一个,不过十分简陋。 这个已经完全可以满足我的需求了。
    abear
        32
    abear  
       2021 年 10 月 30 日
    rust
    Michelangelono
        33
    Michelangelono  
       2021 年 10 月 30 日
    打开弹出 cmd 然后迅速关闭,好像也是提示 Error: Cannot retrieve local ip
    basaka
        34
    basaka  
       2021 年 10 月 30 日
    本机 IP 80 端口被用了直接消失,可以先设置地址和端口在运行比较好
    Mantext1989
        35
    Mantext1989  
       2021 年 10 月 30 日
    可以添加多个文件夹吗?
    Mantext1989
        36
    Mantext1989  
       2021 年 10 月 30 日
    似乎是没办法播放 mkv 文件
    machengim
        37
    machengim  
    OP
       2021 年 10 月 30 日
    @Mantext1989 目前不能适用多个文件夹。mkv 要看浏览器的支持情况,chrome 支持一部分编码的 mkv ,但也不能保证。火狐和 safari 应该不行。
    machengim
        38
    machengim  
    OP
       2021 年 10 月 30 日
    @Mantext1989 忘了说了,浏览器里不能打开的视频文件可以复制它的分享链接用第三方播放器打开,比如 vlc 或者 mpv ,大多数视频应该没问题。
    guanhui07
        39
    guanhui07  
       2021 年 10 月 31 日 via iPhone
    不错
    root01
        40
    root01  
       2021 年 11 月 1 日
    @root01 如果可以的话 ,像 Cute HTTP File Server 也挺好的,毕竟如果再 cmd 执行的话就不能开机启动方便
    root01
        41
    root01  
       2021 年 11 月 1 日
    @machengim 如果可以的话 ,像 Cute HTTP File Server 也挺好的,毕竟如果再 cmd 执行的话就不能开机启动方便
    确实得到 Error: Cannot retrieve local ip
    machengim
        42
    machengim  
    OP
       2021 年 11 月 1 日 via Android
    @root01 方便说一下软件版本和你的局域网 ip 吗? 0.1.2 版应该覆盖了主要的局域网 ip 了
    root01
        43
    root01  
       2021 年 11 月 1 日
    @machengim 运行不了 也找不到相关版本信息,但是这是 2021.10.27 下载的
    root01
        44
    root01  
       2021 年 11 月 1 日
    @machengim oasis_v0.1.1_windows_x86_64 找到压缩包了
    machengim
        45
    machengim  
    OP
       2021 年 11 月 1 日 via Android
    @root01 麻烦尝试一下 0.1.2 版,这个问题应该修复了。
    root01
        46
    root01  
       2021 年 11 月 1 日
    @machengim 尝试了,不能没有访客模式很尴尬
    kaesi0
        47
    kaesi0  
       2021 年 11 月 2 日
    unraid 苦没有强大的文件管理器久已(玩 unraid 的共同需求),少侠能不能发挥下,整一个 docker 版的超强线上文件管理器,像群晖的 filestation 一样
    kaesi0
        48
    kaesi0  
       2021 年 11 月 2 日
    如果能支持显卡硬解就牛 啤了
    Marathonk
        49
    Marathonk  
       2021 年 11 月 2 日
    ./oasis: /lib/x86_64-linux-gnu/libm.so.6: version `GLIBC_2.29' not found (required by ./oasis)

    这个问题怎么解呀
    machengim
        50
    machengim  
    OP
       2021 年 11 月 2 日
    @Marathonk 可能是因为 release 编译环境的 GLIBC 版本比较高。建议下载源码手动编译一下。
    kun775
        51
    kun775  
       2021 年 11 月 4 日
    树莓派 4 编译了好久,一直 cargo build --release ,这个阶段要多久呀
    Chipmunker
        52
    Chipmunker  
       2021 年 11 月 4 日
    近期准备在组内局域网搭建一个文件服务器来共享常用的程序安装包,昨天还在找有什么方便搭建的程序,今天就看到这个项目了,真是太巧了。

    首先感谢楼主开源这么妙的项目。另外有一个问题,如何设置可以实现不需要账号的匿名访问呢?
    machengim
        53
    machengim  
    OP
       2021 年 11 月 4 日
    @kun775 这一步确实有点慢,在我的 nuc8 上感觉要 10 分钟左右。
    machengim
        54
    machengim  
    OP
       2021 年 11 月 4 日
    @Chipmunker 谢谢支持。访客功能目前还没做,正在考虑实现哪些功能。应该会在上传功能做完后就开始。
    kun775
        55
    kun775  
       2021 年 11 月 4 日
    视频(浏览器支持)是什么意思,我用谷歌浏览器能播放 MP4 文件,就是没画面
    u2gign
        56
    u2gign  
       2021 年 11 月 4 日
    有 docker 版吗
    ashuai
        57
    ashuai  
       2021 年 11 月 4 日
    建议参照 FTP :D

    支持匿名账户
    支持虚拟目录
    每个目录都可以设置自己的权限 List/View/Download/Upload/Append
    目录权限默认继承上一级
    用户可以重新定义目录权限
    用户组
    用户组可以定义目录权限

    所以权限的优先级是:目录 DIR <- 用户组 UserGroup <- 用户 User
    machengim
        58
    machengim  
    OP
       2021 年 11 月 4 日 via Android
    @kun775 视频播放是浏览器实现的。可能有些文件的编码格式不被 Chrome 支持
    machengim
        59
    machengim  
    OP
       2021 年 11 月 4 日 via Android
    @u2gign 暂时没有
    Marathonk
        60
    Marathonk  
       2021 年 11 月 7 日
    老哥,突然发现没法在 web 上删除文件哈?只能在部署的机器上删除吗
    machengim
        61
    machengim  
    OP
       2021 年 11 月 7 日 via Android
    @Marathonk 是的,开始计划的是只做读功能。后面会加上。
    Marathonk
        62
    Marathonk  
       2021 年 11 月 8 日
    @machengim 赞!!
    kknd22
        63
    kknd22  
       2021 年 11 月 8 日
    坐等以后吊打可道云
    piloots
        64
    piloots  
       2021 年 12 月 14 日
    一级棒,提个“问题”,虚拟磁盘无法找到。
    关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4938 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 38ms UTC 03:57 PVG 11:57 LAX 19:57 JFK 22:57
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86