V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
VaalaCat
V2EX  ›  程序员

[开源求 Star] Frpc/Frps 中心化 WebUI 配置面板

  •  
  •   VaalaCat ·
    VaalaCat · 89 天前 · 3161 次点击
    这是一个创建于 89 天前的主题,其中的信息可能已经有所发展或是发生改变。

    开发笔记 - 博客地址

    Github - VaalaCat/frp-panel

    最近实在是想要一个 webui 的 frp ,之前的 nps 又太老了一堆 bug 不太敢用,所以花了一个周末手搓了一个中心化版本的 frp 管理,可以远程管理 frpc 和 frps 节点,免去了一个一个节点配置的时间。

    同时也支持和原版 frp 混用。因为是把 frp 当成一个 package 用,所以理论上可以完美兼容各个版本的 frp ,上游更新的话很方便就能适配

    求求各位👴给个 Star 吧,也欢迎各种 feature request

    21 条回复    2024-01-21 10:44:15 +08:00
    lstz
        1
    lstz  
       89 天前 via Android
    给大佬点赞了,正好最近也要用 frp ,另外求 star too...
    VaalaCat
        2
    VaalaCat  
    OP
       89 天前   ❤️ 1
    @lstz 给老哥点赞了!老哥这个工具看起来挺有创意,下载来试试看看
    lifei6671
        3
    lifei6671  
       89 天前
    frp 官方的 ui 天原始了。支持大佬。
    lstz
        4
    lstz  
       89 天前 via Android
    @VaalaCat 感谢老哥,奥利给
    yulgang
        5
    yulgang  
       89 天前
    想要一个可以设置备注的地方。

    我配置 frps 的时候,划分了几段端口范围,有些端口默认是没有对互联网开放的,有些对互联网开放了,有些对互联网部分 ip 开放。

    要是面板上能有一块区域添加注释,时间久了添加 frpc 也不用看 frps.ini 和防火墙去策略了
    VaalaCat
        6
    VaalaCat  
    OP
       89 天前   ❤️ 1
    @yulgang 需求收到!看看今天有没有空做出来!
    tangtang369
        7
    tangtang369  
       89 天前
    用 frpc 一定不要有弱口令的机器 不然就是一锅端
    VaalaCat
        8
    VaalaCat  
    OP
       89 天前
    @tangtang369 明白!这个项目里对每个客户端都做了单独的认证,端也只能端一个客户端的配置
    oneisall8955
        9
    oneisall8955  
       89 天前 via Android
    赞,做了大家都想要的
    wzw
        10
    wzw  
       89 天前 via iPhone
    非常支持,一直想替代 nps ,服务器控制客户端配置,有些场景太重要了
    EvineDeng
        11
    EvineDeng  
       89 天前
    看着不错,给 arch 打了包 aur 包,不知道细节有没有问题? https://aur.archlinux.org/packages/frp-panel
    EvineDeng
        12
    EvineDeng  
       89 天前
    我觉得最好所有的参数都能够从环境变量中读取,这样就可以从进程中、从命令中隐藏掉一些信息。目前打的包是直接把参数拼接到启动命令中。
    VaalaCat
        13
    VaalaCat  
    OP
       89 天前
    @EvineDeng 所有的参数都支持从环境变量获取,命令行是环境变量配置的子集,命令行参数是为了一键启动做的一些必要参数,换成环境变量也是可以的。

    老哥的配置看起来没啥问题

    具体每个环境变量参数是什么可以参考配置文件
    [conf/settings.go - Github]( https://github.com/VaalaCat/frp-panel/blob/main/conf/settings.go)

    命令行参数定义在这里,具体的操作其实就是先读环境变量,然后如果有命令行参数就用 patchConf 覆盖掉
    [cmd.go - Github]( https://github.com/VaalaCat/frp-panel/blob/e50254af351ef4a5b196c1203ebf5541c196bbba/cmd/cmd.go#L63-L99)
    EvineDeng
        14
    EvineDeng  
       89 天前
    @VaalaCat #13 不好意思,我对 go 的的细节还不太懂,是不是 clientSecret 和 clientID 只能从命令行输入,然后 rpcHost 可以读取 APP_RPC_HOST ,appSecret 读取 APP_SECRET ,rpcPort 读取 APP_RPC_PORT ,apiPort 读取 APP_API_PORT ?
    VaalaCat
        15
    VaalaCat  
    OP
       89 天前
    @EvineDeng 是的,clientSecret 和 clientID 想做成动态一点的,就没有做环境变量,其他东西都会对应读取环境变量
    VaalaCat
        16
    VaalaCat  
    OP
       89 天前   ❤️ 2
    @yulgang 老哥我加上备注功能了!
    EvineDeng
        17
    EvineDeng  
       89 天前   ❤️ 1
    @VaalaCat #15 我改进了一下环境变量文件的设置,现在改成自动从 conf/settings.go 转换成三个环境变量文件了。
    dasf53adf
        18
    dasf53adf  
       89 天前
    给大佬点赞了,我也是想做一个这样的东西,但是懒得没动,刚好大佬做了。
    dasf53adf
        19
    dasf53adf  
       89 天前
    我原来设想的架构非常简单,就是一个配置监控程序,甚至可以用 SHEEL 脚本来写。
    1,FRPC 进程
    2,配置监控进程,监控进程周期性对比本地和远程的一个配置文件( https+basic 认证),如果有变化,就更新本地配置文件,并重启 FRPC 进程。
    可能过于简陋了。。。
    Songxwn
        20
    Songxwn  
       88 天前
    已加星星,强烈支持
    VaalaCat
        21
    VaalaCat  
    OP
       88 天前 via iPhone
    @dasf53adf 之前也想过这种外置配置文件管理器和 frpc 进程独立的形式,不过仔细想想这样配置文件对比其实也不好做,比如配置文件内容不变,但有两行换了顺序,就会导致重连。

    而且配置文件外置的话不能很好地利用上 frp 热重载的能力,也不是很方便管理,因为是客户端被动的去检查,没办法做到主动推送某一种变更,所以感觉不够强制。综合一下就选择了现在这种架构
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   我们的愿景   ·   实用小工具   ·   3525 人在线   最高记录 6543   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 36ms · UTC 00:43 · PVG 08:43 · LAX 17:43 · JFK 20:43
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.