漂亮的Go语言通用后台管理框架,包含计划任务、MySQL管理、Redis管理、FTP管理、SSH管理、服务器管理、Caddy配置、云存储管理等功能。

Nging V3

Nging's logo

Open in Gitpod

注意:这是Nging V3源代码,旧版V2.x、V1.x已经转移到 v2分支 v1分支

注意:目前只支持安装到MySQL的Nging无缝升级,暂不支持SQLite安装方式的升级(推荐安装到MySQL,版本需不低于MySQL v5.7.18+)。

升级步骤:
0. 备份数据库和旧版可执行文件;
1. 停止旧版本程序的运行;
2. 将新版本所有文件复制到旧版文件目录里进行覆盖;
3. 启动新版本程序;
4. 登录后台检查各项功能是否正常;
5. 升级完毕

Nging是一个网站服务程序,可以代替Nginx或Apache来搭建Web开发测试环境,并附带了实用的周边工具,例如:计划任务、MySQL管理、Redis管理、FTP管理、SSH管理、服务器管理等。

本软件项目不仅仅实现了一些网站服务工具,本身还是一个具有很好扩展性的通用网站后台管理系统,通过本项目,您可以很轻松的构建一个全新的网站项目,省去从头构建项目的麻烦,减少重复性劳动。

当您基于本项目来构建新软件的时候,您可以根据需要来决定是否使用本系统的网站服务工具,这取决于您是否在main.go中导入包:

import (
	_ "github.com/admpub/nging/application/initialize/manager"
)

可执行文件下载

版本说明

V3 说明

  1. 简化:移除上传文件后需要移动文件的功能,简化上传处理。
  2. 修复:caddy服务申请HTTPS失败
  3. 修复:MySQL管理工具管理数据库账号的bug,以及修复对MySQL8的支持
  4. 改进:客户端加密方式改用国密SM2
  5. 改进:安装程序增加数据编码选项,可以自由选择安装为utf8还是utf8mb4,以便于更好的兼容低于MySQL5.7的数据库
  6. 新增:基于云存储增加云备份功能
  7. 增加:arm-5、arm-6、arm-7、arm64(即arm-8) 二进制文件安装包,以便于支持树莓派设备

V2 说明

相较于Nging V1.x进行了相当大的改进,包括增加了几个重量级的新功能、提高了稳定性、降低了CPU占用、修复了界面细节上的bug、作为通用后台基础框架这个定位来进行的项目结构优化

安装

  1. 下载相应平台的安装包,解压缩到当前目录,进入目录执行名为“nging”的可执行程序(在Linux系统,执行之前请赋予nging可执行权限)。 例如在Linux64位系统,分别执行以下命令:

    cd ./nging_linux_amd64
    chmod +x ./nging
    ./nging
  2. 打开浏览器,访问网址 http://localhost:9999/setup , 在页面中配置数据库和管理员账号信息进行安装。 安装成功后,使用管理员账号登录。

开机自动运行

  1. 首先,安装为服务,执行命令 ./nging service install
  2. 启动服务,执行命令 ./nging service start

与服务相关的命令:

命令 说明
./nging service install 安装服务
./nging service start 启动服务
./nging service stop 停止服务
./nging service restart 重启服务
./nging service uninstall 卸载服务

0、基本功能

一. 系统设置

目前,在“系统设置”中提供了以下设置组:

  1. 系统: 目前提供了API密钥和调试模式的开关
  2. SMTP: 配置用于发送邮件的SMTP服务器的相关设置
  3. 日志: 在这里可以设置如何保存和输出本系统所生成的日志

二. 用户管理

提供对后台用户的修改、添加和删除等操作。可以为后台用户分配相应的角色,从而对其进行权限控制

三. 角色管理

一个角色就是一个权限集合。在本系统中我们将权限分为了操作权限和指令权限。

  1. 操作权限:基于网址操作来进行权限判断
  2. 指令权限:用于指定该角色可以执行的指令(这里的指令是指系统命令)

四. 邀请码

邀请码用来邀请其他人来注册成为本系统的后台用户。您可以指定受邀人注册后所拥有的角色,从而限制其操作权限。

五. 验证码

在这里可以查看短信验证码和邮箱验证码的发送记录以及使用时间

六. 指令集

为了对系统命令的执行进行权限控制,可以定义某个系统命令为指令

七. 修改个人资料

可以在此修改自己的头像、邮箱、手机号、密码等信息

八. 使用两步验证

如果想要提高账号的安全性,请启用两步验证。本系统已经实现了对两步验证的完整支持。

Ⅰ、特色功能

一. Web服务

Web服务采用caddy作为内核。
caddy 是类似于nginx或apache的网站服务软件。caddy的配置文件比nginx更加简洁易用。 Nging采用了图形化界面来配置caddy,这使得对caddy的配置变得更加的容易。

设置网站服务的一般流程为:添加分组 - 添加网站 - 启动服务

1. 创建分组

首先,我们来添加一个分组。点击左边竖向导航栏上的网站管理展开子菜单,点击添加分组打开创建界面,在表单录入框组名称中输入名称后提交

2. 添加网站

然后,我们来添加一个网站。点击左边竖向导航栏上的网站管理展开子菜单,点击添加网站打开创建界面,这里向我们展示了创建网站服务所要配置的一些录入框,我们现在分别来说明各个录入框的作用:

  • 分组:如果网站特别多,需要按组进行归类,您可以在这里选择相应分组,这里我们选择第一步添加的分组

  • 监听地址:可以是网址、域名或IP。如果不提供端口则默认为2005,如果不提供协议(比如https://)则默认为http,如果不提供IP和域名则默认为0.0.0.0,如果只想允许本地访问请设置为localhost或127.0.0.1。
    域名支持通配符“*”(例如*.admpub.com)和环境变量(环境变量用花括号括起来,例如localhost:{$PORT})。
    例子: https://admpub.com:443 admpub.com:80 :8080 127.0.0.1:9999
    监听地址如有多个,用空格隔开。

  • 网站位置:网站文件夹在服务器上的绝对路径

  • 网站名称:网站的名字

  • 日志文件:输入保存访问日志文件的路径

  • 默认首页:在访问某个目录的时候,默认的首页文件。如有多个,用空格隔开。如不填写,默认为:index.html index.htm index.txt default.html default.htm default.txt

  • 响应Header:可以对网址中的某个起始路径的访问设置响应头参数,支持添加、删除和修改Header

    删除Header:在Header名称前使用减号(-)并将其值留空

  • HTTPS:支持手动和自动设置SSL证书。
    在手动模式下,需要分别填写证书和私钥文件位置;在自动模式下必须填写电子邮箱地址以便自动获取Let's encrypt 证书

  • GZIP:压缩数据,用于减少页面或静态文件的网络传输尺寸,可以通过指定扩展名的方式来对特定文件进行压缩

  • FastCGI:FastCGI代理用于将请求转发到FastCGI服务。尽管此指令最常见的用途是为PHP站点提供服务,但默认情况下它是通用的。支持设置多个不同的请求路径。

  • Proxy:反向代理功能用于将接收到的请求转发到指定的后台。通过设置多个后台地址我们能实现服务器的负载均衡。

  • 文件服务:用于提供文件的直接访问

  • IP过滤:通过设置过滤规则来禁止某些IP或国家来访问我们的网站

  • 网址重写:将请求的网址重写为其它值。常用于资源重定向、伪静态等场景

  • 备注:记录当前网站的一些附加说明

  • 网站状态:如果是启用状态则表示该网站能够上线

  • 是否重启:修改配置后,必须重启Web服务后才会生效

3. 启动服务

Web服务是默认启动的。

可以在网站列表页面点击重新应用配置来重新生成Caddy配置文件和重启服务。

当然,你也可以在左边的导航菜单中点击服务器链接然后再点击展开的子菜单服务管理,在打开的页面中点击Web服务的控制按钮来进行单纯的重启和关闭

二. 服务器

  1. 服务器信息

    展示服务器的操作系统、CPU、磁盘、内存、网络等信息。

    在这个页面中,使用了进度条和百分比来直观的展示数据和资源的占用量。

  2. 网络端口

    列出占用网络端口的进程,并且支持关闭进程

  3. 执行命令

    执行简单的控制台命令。

    用聊天对话框的方式来与机器进行简单的交互。

  4. 服务管理

    控制Web和FTP服务的启动和关闭

  5. 进程值守

    进程保活,即当执行的程序被异常关闭后自动重新启动此程序

    1. 添加配置

      在左边的导航菜单中点击服务器链接然后再点击展开的子菜单进程值守打开列表页,点击列表右上角的添加配置按钮,我们来添加一个配置,在配置表单中我们可以录入以下信息:

      • 状态:指定是否启用当前配置。如果启用则会自动开始值守
      • 名称:描述一下要值守的这个进程的名字
      • 命令:进程的启动命令
      • 环境变量:如果启动的程序需要一些特定的环境变量,您可以在这里进行设置。输入的格式为“环境变量的名称=环境变量的值”,比如“NAME=Nging”。如有多个,一行一个
      • 命令参数:其实在命令输入框中已经可以带参数了,但是如果参数比较多,则可以在这里添加,格式为-c=value,如有多个则一行一个
      • 工作目录:有的时候我们需要切换到某个目录下之后再执行程序,对于这种情况在这里输入这个目录的路径即可
      • 信息日志文件:值守的信息日志保存位置。如果不填,则输出到控制台
      • 错误日志文件:错误日志保存位置。如果不填,则输出到控制台
      • 重试次数:连续重试的次数。如果连续启动程序都失败了并且达到重试次数的限制,则退出值守
      • 启动延时:程序异常退出后,等待多长时间后再启动。格式为数字和单位字母的组合,有效的单位有:"ns", "us" (or "µs"), "ms", "s", "m", "h" 分别表示 "纳秒", "微秒", "毫秒", "秒", "分钟", "小时"
      • 心跳检测间隔:也就是多久检测一次程序运行状态。默认1m,即1分钟。格式同启动延时
      • 说明:该配置的附加说明
      • 调试模式:如果开启,则会在控制台输出调试信息
    2. 启动和关闭值守

      在列表页点击“启用状态”列中的复选框可以控制值守程序的开和关

三. FTP账号

  1. 添加账号分组

    对于有大量FTP账号的情况,可以通过建立分组来进行归类

  2. 添加FTP账号

    要使用Nging提供的FTP功能,必须首先要创建一个FTP账号。

    FTP客户端使用这里创建的账号来登录。

  3. 开关FTP服务

    在左边的导航菜单中点击服务器链接然后再点击展开的子菜单服务管理,在打开的页面中点击FTP服务的控制按钮来进行重启和关闭

    为了避免与原有FTP服务发生冲突,本系统的FTP服务默认端口为233,可以通过修改配置文件config/config.yaml中ftp节点内的port字段值来指定其它端口。

四. 数据采集

数据采集模块提供了强大的采集功能,它包含了以下特色:

  • 灵活便捷的配置表单
  • 支持无限级页面
  • 支持多种页面格式(html,json,text)
  • 支持多类型采集规则(regexp,regexp2,goquery)
  • 丰富的过滤器和验证器
  • 支持多种浏览器引擎(chromedp,webdriver等)
  • 三种去重验证机制
  • 支持代理
  • 支持自动导出采集数据到不同的数据源(WebAPI,DSN)
  • 支持定时采集
  1. 添加采集规则

    在左边的导航菜单中点击数据采集链接然后再点击展开的子菜单新建规则,我们来添加一个新规则,在配置表单中我们可以录入以下信息:

    • 规则名称:首先您得为规则取一个名字

    • 分组:为当前规则选择一个分组

    • 说明:规则附加说明

    • 判断重复:选择一个判断重复的方式,这样可以避免重复采集相同的数据

    • 入口页面网址:在这里,您可以指定多个入口页面网址,每一个网址单独放在一行,支持使用Go语言的模板语法循环输出网址,此外,每一个网址中都支持使用数字范围标签,在数字范围标签中,连续的范围我们使用-来指定,不连续的范围使用,来罗列,同时支持指定步进值,且步进值与范围值之间用:分隔,默认步进值为1,例如:{(1-9,11,13-19:2)}

      例如:http://www.admpub.com/{(1-2)}.html 会生成网址:  
      http://www.admpub.com/1.html  
      http://www.admpub.com/2.html  
      
    • 最大超时:请求页面时的最大等待时长(秒)

    • 间歇时间:每个页面的随机等待的秒数范围

    • 代理地址:例如:http://admpub:[email protected]:8080。支持格式protocol://user:password@ip:port

      • protocol - 支持http、https、socks5
      • user - 用户名(选填)
      • password - 密码(选填)
      • ip - IP地址
      • port - 端口
    • 页面格式:目标页面的内容格式,支持的有HTML/JSON/Text

    • 浏览引擎:目前支持standard/chromedp/webdriver这三种,其中standard为普通方式,速度最快,默认为standard。chromedp和webdriver为调用chrome浏览器,速度相对较慢

    • 页面类型:可以选择“列表页”和“内容页”选项,请根据所采集页面的实际类型来选择

    • 页面字符集:比如gbkutf-8。此项为选填,不填写的情况下会根据网页内容自动判断

    • 区域规则:指定所要采集页面上的某个区域的匹配规则。这里支持两种类型的规则:

      1. 选择器规则:即类似于jQuery匹配页面元素的规则,比如:div.container > h1
      2. 正则匹配规则:需要在规则前添加前缀regexp:regexp2:。其中regexp:为Go语言原生正则表达式规则;regexp2:为兼容 Perl5 和 .NET 的正则表达式规则(相关文档:https://github.com/admpub/regexp2
    • 规则:此处指定以下规则

      1. 数据采集规则:所要采集的数据匹配规则,如果指定了区域规则则在该区域内进行查找
      2. 数据保存变量名:指定数据保存到哪个变量里
      3. 数据过滤器和验证器:多个过滤器或验证器之间用管道符“|”分隔,以下划线“_”开头的为验证器(不符合验证器规则的数据会被跳过)

    然后可以点击“添加下一级页面”链接来对添加第二级页面的规则。页面的层级数量没有限制。

  2. 测试采集规则

点击“测试”按钮可以进行采集测试,为了快速获取测试结果,每一级页面只采集一条

  1. 执行采集

点击“采集”按钮进行手动采集

  1. 将采集加入计划任务

也可以将采集任务加入到计划任务中,进行自动定时采集

  1. 添加导出规则

    定义采集数据的导出方式。如果希望在采集的时候自动将采集到的数据导入其它系统,请在这里添加导出规则。 目前支持两种导出方式:

    1、导入到数据库; 2、提交到API接口(将JSON数据POST提交到API接口)

五. 计划任务

crontab的完美替代,并采用了图形化配置界面,支持记录日志、发送错误报告邮件等

六. 离线下载

这里的离线下载支持并行下载。
对于需要很长时间才能下载完成的大文件,我们只需要建立一个离线下载任务并且启动,然后就可以关闭浏览器去做其它的事情了,Nging会自动在后台帮您下载。

七. 云服务

  1. 云存储账号 可以管理所有与Amazon S3 API兼容的对象存储文件,比如亚马逊AWS、阿里云OSS、腾讯云COS、网易云NOS、百度云BOS、华为云OBS、七牛云Kodo等
  2. 文件备份 可以通过配置将指定目录下的文件备份到云存储

八. 数据库管理

  1. 管理MySQL
  2. 管理Redis
  3. MySQL表结构比较/同步

九. FRP内网穿透

当你想要将局域网内的电脑暴露到外网,以便于外网的用户也能访问到您的网站服务时,这时候就需要用到内网穿透。

内网穿透支持服务端模式和客户端模式,全图形化的配置界面让配置变得非常容易。

要成功使用内网穿透功能,必须在局域网电脑上启动客户端模式,在提供外网的服务器或VPS上启动服务端模式。

十. SSH管理

SSH管理功能实现了SSH的Web客户端管理功能,您可以在Nging网页上进行SSH命令行交互操作,也可以通过Nging以SFTP方式来进行文件的上传、下载、删除和编辑

Ⅱ、先睹为快

运行

安装

安装:

安装

登录:

登录

系统信息:

系统信息

实时状态:

实时状态

在线编辑文件:

在线编辑文件

添加计划任务:

添加计划任务

MySQL数据库管理:

MySQL数据库管理

Ⅲ、开发环境下的启动方式

  • 第一步: 安装GO环境(必须1.12.1版以上),配置GOPATH、GOROOT环境变量,并将%GOROOT%/bin%GOPATH%/bin加入到PATH环境变量中
  • 第二步: 执行命令go get github.com/admpub/nging
  • 第三步: 进入%GOPATH%/src/github.com/admpub/nging/目录中启动run_first_time.bat(linux系统启动run_first_time.sh)
  • 第四步: 打开浏览器,访问网址http://localhost:8080/setup,在页面中配置数据库账号和管理员账号信息进行安装
  • 第五步: 安装成功后会自动跳转到登录页面,使用安装时设置的管理员账号进行登录

请注意,本系统的源代码基于AGPL协议发布,不管您使用本系统的完整代码还是部分代码,都请遵循AGPL协议。

如果需要更宽松的商业授权协议,请联系我购买授权。

Comments
  • [BUG]win2016服务器启动服务失败

    [BUG]win2016服务器启动服务失败

    问题描述 win2016服务器启动服务失败 但是我去直接执行 .\nging service run 却是可以运行的 重现步骤 重现步骤如下: 启动服务

    系统类型和版本:

    • 64位win2016

    数据库类型和版本:

    • sqlite

    其它相关信息 nging service start [Register Extend Config] P4244 ftpserver: *ftp.Config [Register Extend Config] P4244 caddy: *caddy.Config [Register Extend Config] P4244 wanIPProvider: *ip2region.WANIPProviders [Register Extend Config] P4244 upload: *upload.Config [Register Extend Config] P4244 download: *config.Config [ INFO]4244|2022-06-22 13:30:19|Info|db| Session ID: 00001 Query: PRAGMA TABLE_INFO('nging_config') Time taken: 0.00000s Context: context.Background

    [ INFO]4244|2022-06-22 13:30:19|Info|db| Session ID: 00001 Query: SELECT * FROM "nging_config" WHERE ("disabled" = 'N') Arguments: ["N"] Time taken: 0.00106s Context: context.Background

    [ INFO]4244|2022-06-22 13:30:19|Info|app|Currently running in normal mode Error: Failed to start Nging: The service cannot be started, either because it is disabled or because it has no enabled devices associated with it. 4244|2022-06-22 13:30:19|Error|service|start: Failed to start Nging: The service cannot be started, either because it is disabled or because it has no enabled devices associated with it. Failed to start Nging: The service cannot be started, either because it is disabled or because it has no enabled devices associated with it.

  • Frp服务器无法连接

    Frp服务器无法连接

    2021/09/24 18:41:31 [W] [service.go:104] login to server failed: EOF 2021/09/24 18:41:41 [W] [service.go:104] login to server failed: EOF 2021/09/24 18:41:51 [W] [service.go:104] login to server failed: EOF

    以上是远程客户端信息 我启动了服务器 还有本地的客户端 但是远程 的客户端连不上 测试了很多次 端口都是联通的 防火墙已经关闭

  • 内网穿透-多用户支持

    内网穿透-多用户支持

    请问一下大佬,我开启服务端多用户支持插件,但是客户端连接不成功,服务端没有启用http://127.0.0.1:8080 2021/11/10 15:16:40 [I] [frp_server.go:202] Start frps success 2021/11/10 15:16:42 [W] [manager.go:83] [reqid: 178c991991baf0f0] send Login request to plugin [multiuser_login] error: Post "http://127.0.0.1:8080/frp_login?op=Login&version=0.1.0": dial tcp 127.0.0.1:8080: connectex: No connection could be made because the target machine actively refused it. 2021/11/10 15:16:42 [W] [service.go:351] register control error: send Login request to plugin error

    这是什么情况?

  • [BUG]内网穿透服务端配置问题

    [BUG]内网穿透服务端配置问题

    问题描述 配置内网穿透服务端配置,管理地址填写0.0.0.0会跳转127.0.0.1

    重现步骤 重现步骤如下:

    1. 前往内网穿透下的服务端配置
    2. 点击添加配置
    3. 填写管理地址,然后保存
    4. 保存后点击统计按钮跳转到127.0.0.1:{管理端口}

    期望的正确结果 frp的管理页面

    截图

    系统类型和版本:

    • 64位ubuntu18 nging4.1.3

    数据库类型和版本:

    • MySQL8.0
  • 最新版

    最新版

    [Register Extend Config] P25104 wanIPProvider: *ip2region.WANIPProviders [ INFO]25104|2021-11-29 21:42:10|Info|app|Currently running in debug mode

         SYSTEM MONITOR         
    

    Starting collect server status

            POWERED BY WEBX.TOP 
    

    panic: Not connected to any database

    goroutine 28 [running]: github.com/webx-top/db/lib/factory.(*Factory).Cluster(0xc00094bd08, 0x452974) /source/vendor/github.com/webx-top/db/lib/factory/factory.go:154 +0x65 github.com/webx-top/db/lib/factory.(*Transaction).Database(0xc000149f00, 0xc000538140) /source/vendor/github.com/webx-top/db/lib/factory/transaction.go:21 +0x65 github.com/webx-top/db/lib/factory.(*Transaction).C(0xc000650060, 0xc000538140) /source/vendor/github.com/webx-top/db/lib/factory/transaction.go:74 +0x25 github.com/webx-top/db/lib/factory.(*Transaction).result(0x251fa60, 0xc000538140) /source/vendor/github.com/webx-top/db/lib/factory/transaction.go:58 +0x25 github.com/webx-top/db/lib/factory.(*Transaction).Result(0x30b3fd6, 0xc000538140) /source/vendor/github.com/webx-top/db/lib/factory/transaction.go:66 +0x1e github.com/webx-top/db/lib/factory.(*Transaction).List(0xc000149f00, 0xc000538140) /source/vendor/github.com/webx-top/db/lib/factory/transaction.go:247 +0x106 github.com/webx-top/db/lib/factory.(*Param).List(0xc0007f60b0) /source/vendor/github.com/webx-top/db/lib/factory/param.go:590 +0x37 github.com/admpub/nging/v3/application/dbschema.(*NgingFrpServer).ListByOffset(0xc00000c780, {0x0, 0x0}, 0xf, 0x0, 0xffffffffffffffff, {0xc0007f6100, 0x7, 0x0}) /source/application/dbschema/NgingFrpServer.go:329 +0x1d3 github.com/admpub/nging/v3/application/handler/frp/plugins/multiuser.OnChangeBackendURL({0x31a5178, 0xc00000c5a0}) /source/application/handler/frp/plugins/multiuser/multiuser.go:66 +0x2d2 github.com/admpub/nging/v3/application/handler/frp/plugins/multiuser.init.0.func2.1() /source/application/handler/frp/plugins/multiuser/init.go:46 +0x2c created by github.com/admpub/nging/v3/application/handler/frp/plugins/multiuser.init.0.func2 /source/application/handler/frp/plugins/multiuser/init.go:44 +0x6b

  • nging建议

    nging建议

    nging是一个很棒的app。前段时间在找一个服务器管理的软件,找到nging,用的还不错。 在使用过程中有几条使用建议, 1、左侧的功能菜单能否做成按需配置,不用的功能可以通过配置文件隐藏或不启用?比如云服务基本用不到,是否可以删除。 2、服务器文件上传和管理,不是很方便,上传文件只有txt能编辑,而如果在管理服务器时,经常需要修改python等文件,建议增加可配置用编辑器打开的文件类型。 (可参考bt面板) 3、计划任务管理,可以增加一个立即执行的按钮,测试当前的任务执行是否有效。

  • [BUG]

    [BUG]

    问题描述 2297 root 1703m S ./nging -p 1234 -c ./config/config.yaml 2304 root 1196m S ./nging --config ./config/config.yaml --type ftpserver 2309 root 1412m S ./nging --config ./config/config.yaml --type caddy 主进程会自动退出 重现步骤 重现步骤如下:

    1. 前往 '服务器信息'
    2. 点击 '点击进程数量'
    3. 出现错误,无法加载出。且后台查看主进程已经退出 2304 root 1196m S ./nging --config ./config/config.yaml --type ftpserver 2309 root 1412m S ./nging --config ./config/config.yaml --type caddy 期望的正确结果 输入期望的正确结果

    截图 这里提供截图

    系统类型和版本: ARM64 4.1.2

    数据库类型和版本:

    • MySQL8.0

    其它相关信息

  • hi 请问nging中的frpc版本是多少呢

    hi 请问nging中的frpc版本是多少呢

    尝试链接启动,都不成功,不知道是不是版本不兼容服务器的frps版本 2020/01/01 09:31:11 [I] [service.go:223] login to server success, get run id [5736bce10bd09b6b], server udp port [6667] 2020/01/01 09:31:11 [I] [proxy_manager.go:137] [5736bce10bd09b6b] proxy added: [yaitoo23.ssh] 2020/01/01 09:31:11 [I] [service.go:223] login to server success, get run id [7c5a565ecd11dd15], server udp port [6667] 2020/01/01 09:31:11 [I] [proxy_manager.go:137] [7c5a565ecd11dd15] proxy added: [woshiyonghubiaos.ssh] 2020/01/01 09:31:11 [W] [control.go:207] read error: message type error 2020/01/01 09:31:11 [I] [control.go:228] control writer is closing 2020/01/01 09:31:11 [I] [service.go:129] try to reconnect to server... 2020/01/01 09:31:11 [W] [control.go:207] read error: message type error 2020/01/01 09:31:11 [I] [control.go:228] control writer is closing 2020/01/01 09:31:11 [I] [service.go:129] try to reconnect to server...

  • 内存不足安装失败出现的一些问题

    内存不足安装失败出现的一些问题

    问题描述 我的阿里云主机安装时,内存低于2.2G时会导致安装失败,提示删除install.lock文件重新安装,将内存清理到2.2G并删除后install.lock文件后安装成功,但是install.lock文件并没有再次生成

    重现步骤 重现步骤如下:

    1. 安装机器的内存低于2.1G
    2. 进入安装步骤
    3. 安装失败提示删除install.lock文件,按照提示操作后安装成功,install.lock文件并没有再次生成
    4. 再次重新启动程序又会进入安装步骤

    期望的正确结果 安装成功后重启程序不会重新安装

    系统类型和版本:

    • 64位ubuntu18

    数据库类型和版本:

    • MySQL8.0

    其它相关信息 部署程序版本:4.1.3

  • 构建新软件 import 错误

    构建新软件 import 错误

    linux amd64: archlinux go version: go1.16.5 linux/amd64

    1. create main.go
    package main
    
    import (
    	"fmt"
    
    	_ "github.com/admpub/nging/application/initialize/manager"
    )
    
    func main() {
    	fmt.Printf("Hello World.")
    }
    
    1. go mod init test
    2. go mod tidy output log:
    ... ... ...
    go: finding module for package github.com/admpub/frp/models/config
    go: finding module for package github.com/admpub/frp/utils/log
    go: finding module for package github.com/admpub/frp/utils/util
    go: finding module for package github.com/admpub/frp/models/consts
    go: finding module for package github.com/admpub/frp/g
    test imports
            github.com/admpub/nging/application/initialize/manager imports
            github.com/admpub/nging/application/handler/caddy imports
            github.com/admpub/nging/application/library/config imports
            github.com/admpub/nging/application/library/frp imports
            github.com/admpub/frp/g: module github.com/admpub/frp@latest found (v0.36.8), but does not contain package github.com/admpub/frp/g
    test imports
            github.com/admpub/nging/application/initialize/manager imports
            github.com/admpub/nging/application/handler/caddy imports
            github.com/admpub/nging/application/library/config imports
            github.com/admpub/nging/application/library/frp imports
            github.com/admpub/frp/models/config: module github.com/admpub/frp@latest found (v0.36.8), but does not contain package github.com/admpub/frp/models/config
    test imports
            github.com/admpub/nging/application/initialize/manager imports
            github.com/admpub/nging/application/handler/caddy imports
            github.com/admpub/nging/application/library/config imports
            github.com/admpub/nging/application/library/frp imports
            github.com/admpub/frp/models/consts: module github.com/admpub/frp@latest found (v0.36.8), but does not contain package github.com/admpub/frp/models/consts
    test imports
            github.com/admpub/nging/application/initialize/manager imports
            github.com/admpub/nging/application/handler/caddy imports
            github.com/admpub/nging/application/library/config imports
            github.com/admpub/nging/application/library/frp imports
            github.com/admpub/frp/utils/log: module github.com/admpub/frp@latest found (v0.36.8), but does not contain package github.com/admpub/frp/utils/log
    test imports
            github.com/admpub/nging/application/initialize/manager imports
            github.com/admpub/nging/application/handler/caddy imports
            github.com/admpub/nging/application/library/config imports
            github.com/admpub/nging/application/library/frp imports
            github.com/admpub/frp/utils/util: module github.com/admpub/frp@latest found (v0.36.8), but does not contain package github.com/admpub/frp/utils/util
    
    
  • Bump github.com/mholt/certmagic from 0.8.3 to 0.11.2

    Bump github.com/mholt/certmagic from 0.8.3 to 0.11.2

    Bumps github.com/mholt/certmagic from 0.8.3 to 0.11.2.

    Release notes

    Sourced from github.com/mholt/certmagic's releases.

    v0.10.0

    This tag has some significant changes to the exported API and the default certificate storage location.

    • I've separated ACME-specific configuration from the main Config struct. Please see the godoc to see the latest Config definition, and get familiar with the ACMEManager type.

    • The refactoring of the configuration makes CertMagic much more compatible with non-ACME issuers/managers.

    • Certificates are now stored in <storage base>/certificates/<issuer_key>, where the <issuer_key> is derived from the CA URL like before, but now includes the path portion as well. This structure allows for greater versatility in the future.

    • The DecisionFunc is now invoked for on-demand TLS renewals (before, it was only queried for initial obtain).

    • The import path has changed! It's now github.com/caddyserver/certmagic. More on that later.

    • Huge benefits with these changes! CertMagic can work with certificate lifetimes down to less than an hour. It works well with non-ACME certificate sources, it is much more resilient to errors, is more efficient at the scale of hundreds of thousands of certificates, and we've improved distributed locks with active locking in case processes get killed forcefully! You'll love these improvements in production.

    Sorry for the breaking changes. It's for the better, I promise! This year I hope to tag a stable 1.0.

    Commits
    • 77f91b9 Don't encode EAB HMAC
    • 5b5ac32 Only use default test CA if primary CA is also default
    • 7249bad Configurable cache capacity
    • 82040fd Lock now takes a context and should honor cancellation (#66)
    • fff412b Restart maintenance routine if it panics
    • 69af6a5 chore: update go version declared in go.mod (#73)
    • 5ed3640 Add nil check; recover from all goroutines
    • d43c0e3 fix typo in example (#72)
    • 0643091 fix typo (#67)
    • 663df05 Allow duplicate 'obtain' jobs
    • Additional commits viewable in compare view

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
  • [BUG]数据库查看会乱跳

    [BUG]数据库查看会乱跳

    问题描述 数据库表查看界面,滑动到底部会一直上下跳动。

    重现步骤 重现步骤如下:

    1. 前往 'Home >MySQL管理 > ADMIN数据库 >数据库: USER > 表: USERS > 数据' 数据条数 25条
    2. 滚动到 '底部'
    3. 出现上下跳动

    期望的正确结果 可以正确滑动到底部

    系统类型和版本: 浏览器 Microsoft Edge 版本 89.0.774.63 (官方内部版本) (64 位)

    Chrome 版本 80.0.3987.149(正式版本) (64 位) Included Chrome++ 1.0.3

    2022 Nging v4.1.2 licensed

    数据库类型和版本:

    • MySQL8.0
  • web服务间断无反应

    web服务间断无反应

    这一两个月用下来,运行的 nging 每隔几天,网页服务就无法访问,需要手动重启。 查看重启前的 service_app_20220301.log

    27343|2022-03-01 19:39:01|Debug|echo|Method Not Allowed: //dnspod.qcloud.com:443
    :405: 92.118.234.202 CONNECT http dnspod.qcloud.com:443 dnspod.qcloud.com:443 569.02µs 3587
    :200: 66.23.238.6 GET http azenv.net http://azenv.net/ 132.267µs 0
    :405: 66.23.238.6 CONNECT http dnspod.qcloud.com:443 dnspod.qcloud.com:443 616.92µs 3587
    27343|2022-03-01 19:54:30|Debug|echo|Method Not Allowed: //dnspod.qcloud.com:443
    :200: 66.23.238.6 GET http azenv.net http://azenv.net/ 200.103µs 0
    :405: 66.23.238.6 CONNECT http dnspod.qcloud.com:443 dnspod.qcloud.com:443 612.161µs 3587
    27343|2022-03-01 20:04:29|Debug|echo|Method Not Allowed: //dnspod.qcloud.com:443
    :200: 172.105.224.72 GET http XX.XXX.XXX.XXX:9999 / 133.168µs 0
    http: Server closed
    

    需要怎么查看?