IT博客汇
  • 首页
  • 精华
  • 技术
  • 设计
  • 资讯
  • 扯淡
  • 权利声明
  • 登录 注册

    安利一下我最近写的两个caddy插件

    ysicing (i@ysicing.me)发表于 2025-05-07 22:07:27
    love 0

    我个人 Caddy 粉哈,习惯 Caddy 一梭子,从我历史博客中就可以看出来。最近写了两个 Caddy 的插件,geocn 和 gfw.

    源码及镜像

    源码 ysicing/dockerfiles#caddy

    以下是我构建好的镜像,可以根据自己的环境拉取

    • ysicing/caddy2
    • ghcr.io/ysicing/caddy2
    • registry.cn-beijing.aliyuncs.com/k7scn/caddy2
    • ccr.ccs.tencentyun.com/k7scn/caddy2

    源码构建

    需要 go 环境了

    go install github.com/caddyserver/xcaddy/cmd/xcaddy@latest
    xcaddy build \
        --with github.com/caddyserver/jsonc-adapter \
        --with github.com/caddy-dns/cloudflare \
        --with github.com/caddy-dns/tencentcloud \
        --with github.com/caddy-dns/alidns \
        --with github.com/ysicing/caddy2-geocn \
        --with github.com/ysicing/caddy2-gfw \
        --with github.com/mholt/caddy-dynamicdns \
        --with github.com/mholt/caddy-events-exec \
        --with github.com/WeidiDeng/caddy-cloudflare-ip \
        --with github.com/xcaddyplugins/caddy-trusted-cloudfront \
        --with github.com/mholt/caddy-l4 \
        --with github.com/mholt/caddy-webdav \
        --with github.com/mholt/caddy-ratelimit
    

    插件 geocn

    • 源码:https://github.com/ysicing/caddy2-geocn
    • 用途:识别来源 ip 是否为中国 ip,我的大部分服务都开启了这个,只针对大陆放行,甚至部分服务只针对部分省市(误判比较大,后续有需要也可以开源 😄)
    @china {
    		geocn 
    	}
    	file_server @china {
    		root ./docker/example/deny
    	}
    

    上面是默认参考,正常情况下不需要调整,GeoIP 数据源来自 Hackl0us/GeoIP2-CN,支持自定义

    geocn {
     georemote 你的自定义地址
    }
    

    插件 gfw

    • 源码:https://github.com/ysicing/caddy2-gfw
    • 用途:想实现类似宝塔 waf 的功能,目前只是初步实现了,还在测试中,误判比较大 😂
    {
        order gfw before respond
    }
    
    :80 {
        gfw {
            # 基本规则配置
            block_rule ip:1.2.3.4
            block_rule url:/admin
            block_rule ua:curl
            block_rule_file /path/to/rules.txt
            ttl 24h
    
            # 额外安全检测(默认关闭)
            enable_extra true
        }
    }
    

    目前是所有实例共享黑名单的,命中就 1 天黑名单直接返回 403,之前想的是命中后触发 hook 执行 iptables 封禁 ip,但是容器跑的好像不太方便。

    最后

    大家对 Caddy 插件有什么的需求或者想法么?




沪ICP备19023445号-2号
友情链接