吾爱破解 - LCG - LSG |安卓破解|病毒分析|www.52pojie.cn

 找回密码
 注册[Register]

QQ登录

只需一步,快速开始

查看: 3209|回复: 58
收起左侧

[原创工具] 【群晖docker小玩具】便捷的对群晖某个目录开启webdav

  [复制链接]
156608225 发表于 2024-4-7 17:10
本帖最后由 156608225 于 2024-4-7 17:10 编辑

又造了一个小玩具,这次是给群晖(其他Nas理论上也能用没测试)的,因为很简单所以没去搜索别人是不是做过类似的。
需求就是需要对群晖中的某个指定的子目录开启webdav服务
在群晖中开启共享都是基于系统用户密码的,共享的范围太大,创建个临时用户又不值当(最重要的是强迫症不想创建,临时账户感觉就是个精神污染)
用docker多好呀,不管是来还是扔都是打包的,直接上干货

如果自己从头操作的话需要点门槛,如golang编译、docker镜像打包

如果拿来主义的话有支持docker的群晖即可,下载打包好的镜像导入
https://lucy.lanzoue.com/b0kmx9e2b
密码:52pj

1. 开启webdav服务的主程序(golang编写)
[Golang] 纯文本查看 复制代码
package main

import (
        "flag"
        "golang.org/x/net/webdav"
        "net/http"
)

func main() {
        var addr *string
        var path *string
        var usr *string
        var pwd *string
        addr = flag.String("addr", ":8088", "")
        path = flag.String("path", "./files", "")
        usr = flag.String("usr", "admin", "")
        pwd = flag.String("pwd", "123456", "")
        flag.Parse()

        fs := &webdav.Handler{
                FileSystem: webdav.Dir(*path),
                LockSystem: webdav.NewMemLS(),
        }
        http.HandleFunc("/", func(w http.ResponseWriter, req *http.Request) {
                // 获取用户名/密码
                username, password, ok := req.BasicAuth()
                if !ok {
                        w.Header().Set("WWW-Authenticate", `Basic realm="Restricted"`)
                        w.WriteHeader(http.StatusUnauthorized)
                        return
                }
                // 验证用户名/密码
                if username != *usr || password != *pwd {
                        http.Error(w, "WebDAV: need authorized!", http.StatusUnauthorized)
                        return
                }
                fs.ServeHTTP(w, req)
        })
        http.ListenAndServe(*addr, nil)
}


2. 制作docker镜像
先准备一个Dockerfile文件,跟编译出的MyWebdav放一起:
# 使用Alpine镜像作为基础镜像
FROM alpine:3.5

# 设置工作目录
WORKDIR /home

# 将编译好的程序复制到镜像中
COPY ./MyWebdav .

# 设置容器启动时运行的命令
CMD ["./MyWebdav"]

然后做镜像
docker build -t mydav .
docker save -o mydav.tar mydav
3. 把制作的mydav.tar导入群晖的容器管理,然后启动新的容器,命令行配置端口、目录、账号密码
QQ截图20240407152738.png
4. 在需要webdav服务的地方配置好即可


免费评分

参与人数 6吾爱币 +11 热心值 +4 收起 理由
yoga2joker + 1 谢谢@Thanks!
xy6538 + 1 谢谢@Thanks!
风之暇想 + 7 + 1 感谢发布原创作品,吾爱破解论坛因你更精彩!
fancw17 + 1 + 1 我很赞同!
kbhu + 1 我很赞同!
Lcstar + 1 + 1 谢谢@Thanks!

查看全部评分

发帖前要善用论坛搜索功能,那里可能会有你要找的答案或者已经有人发布过相同内容了,请勿重复发帖。

xy6538 发表于 2024-4-9 16:57
本帖最后由 xy6538 于 2024-4-9 17:04 编辑

启动失败,提示如下:

failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: exec: "./MyWebdav": stat ./MyWebdav: no such file or directory: unknown

pFOmBge.png

dxxiong 发表于 2024-4-25 11:00
不成功啊,启动不了,一启动就提示下面信息:
Start container mydav1 failed: {"message":"OCI runtime create failed: container_linux.go:367: starting container process caused: exec: \"./MyWebdav\": permission denied: unknown"}.
zhangzifu 发表于 2024-4-7 17:12
dingqh 发表于 2024-4-7 17:28
太厉害了,就差个NAS了
sky1368877 发表于 2024-4-7 17:33
感觉能用上  谢谢大佬
飘云 发表于 2024-4-7 17:55
感谢大神分享。正在需要的功能呢
pinghost 发表于 2024-4-7 18:12
有点意思,感谢大佬!
tgy238 发表于 2024-4-7 18:33
感谢分享!
dxxiong 发表于 2024-4-7 19:17
先收藏,以备用~
zipx 发表于 2024-4-7 19:31
感谢分享
Lcstar 发表于 2024-4-7 19:38
赶紧分享webdav工具
您需要登录后才可以回帖 登录 | 注册[Register]

本版积分规则 提醒:禁止复制他人回复等『恶意灌水』行为,违者重罚!

快速回复 收藏帖子 返回列表 搜索

RSS订阅|小黑屋|处罚记录|联系我们|吾爱破解 - LCG - LSG ( 京ICP备16042023号 | 京公网安备 11010502030087号 )

GMT+8, 2024-5-4 04:44

Powered by Discuz!

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表