Package: sayhi-admin
Domain Admin基于Python + Vue3.js 技术栈实现的域名和SSL证书监测平台核心功能：到期自动邮件提醒用于解决，不同业务域名SSL证书，申请自不同的平台，到期后不能及时收到通知，导致线上访问异常，被老板责骂的问题支持平台：macOS、Linux、Windows项目地址：https://github.com/mouday/domain-admin国内镜像：https://gitee.com/mouday/domain-adminpypi：https://pypi.org/project/domain-admindocker：https://hub.docker.com/r/mouday/domain-admin项目截图网页版：预览地址：https://mouday.github.io/domain-admin-web/账号密码随意，预览模式仅提供模拟数据，无法操作修改安装方式一：pip安装运行环境：Python 3.7.0可以使用pyenv管理多个Python版本$python3--version
Python3.7.0# 创建名为 venv 的虚拟环境$python3-mvenvvenv# 激活虚拟环境$sourcevenv/bin/activate# 安装 domain-admin$pipinstalldomain-admin# 升级到最新版本，可选$pip3install-Udomain-admin-ihttps://pypi.org/simple# 启动运行$gunicorn'domain_admin.main:app'访问地址：http://127.0.0.1:8000默认的管理员账号：admin 密码：123456强烈建议：登录系统后修改默认密码方式二：docker启动感谢@miss85246提供Docker支持$dockerrun-p8000:8000mouday/domain-admin# 后台运行$dockerrun-d-p8000:8000mouday/domain-admin# 本地文件夹和容器文件夹映射$dockerrun\-v$(pwd)/database:/app/database\-v$(pwd)/logs:/app/logs\-p8000:8000\--namedomain-admin\mouday/domain-admin:latest方式三：克隆源码运行本方式仅适用于二次开发，推荐采用 pip安装 或者 docker启动 的方式体验# 后端项目gitclonehttps://github.com/mouday/domain-admin.git# 安装依赖pipinstall-rrequirements.txt# 启动开发服务makedev# 前端项目gitclonehttps://github.com/mouday/domain-admin-web.git# 启动开发服务makedev为了更多地人参与到项目中来，现已开放前端代码前端项目地址：https://github.com/mouday/domain-admin-web项目简介功能：权限用户登录用户退出修改密码域名管理域名添加域名删除域名搜索域名导入、导出功能域名信息证书监控定时监控到期邮件提醒微信提醒手动/自动更新证书信息用户管理添加用户删除用户禁用/启用用户监控日志管理界面api接口（用于二次开发）web浏览器桌面移动端（app+小程序）系统设置如果需要对域名进行到期监控和邮件提醒，必须设置1、设置系统发送邮件的账号密码2、批量导入域名导入文本示例:/docs/domain.txt3、设置邮件通知4、设置webhook通知推送到微信的webhook第三方工具微信推送消息通知接口汇总二次开发接口文档：https://mouday.github.io/domain-admin/代码推送# githubgitpush-uoriginmaster# giteegitpush-ugiteemaster技术选型前端选型（网页版）Node.jsVite.jsVue3.jsVue RouterPiniaElement PlusTailwind CSS前端选型（桌面版）node.js v16.15.1vue3.jsquasar + electron后端选型Python3.7.0Flaskjinja2peewee（sqlite）apschedulersupervisord部署推荐gunicornmac/linux 推荐waitresswindows 推荐问题1、暂不支持多进程方式启动使用 master + 多worker 方式启动应用，会启动多个定时任务Scheduler，导致多次执行任务如果小规模使用，启动一个进程即可如果是需要支持并发访问，可自行改进应用将定时器独立出来，单独一个进程控制，行成 scheduler + Flask（master + 多worker）2、为什么外网访问不到？# 启动运行$gunicorn'domain_admin.main:app'# 支持外网可访问，云服务器（阿里云或腾讯云）需要设置安全组# 默认内网访问 --bind 127.0.0.1:8000$gunicorn--bind'0.0.0.0:8000'domain_admin.main:app'更多设置，可参考gunicorn3、Windows平台启动报错,找不到模块fcntlgunicorn不支持Windows，可以使用waitress替换，感谢@cbr252522489提供的解决方案$pipinstallwaitress

$waitress-serve--listen=127.0.0.1:8000domain_admin.main:app参考：https://stackoverflow.com/questions/45228395/error-no-module-named-fcntl4、添加域名数据后系统异常可按如下步骤删除异常数据docker 启动方式# 查看容器的运行信息$dockerps# 进入容器$dockerexec-it<容器id>/bin/sh# 安装依赖$apkaddsqlite# 进入sqlite3$sqlite3

sqlite>.open/app/database/database.db

sqlite>.tables
log_schedulertb_grouptb_systemtb_version
tb_domaintb_notifytb_user# 查看数据sqlite>select*fromtb_domain;# 删除数据sqlite>DELETEFROMtb_domainWHEREid=1;# 退出sqlite>.quit5、邮件发送失败可尝试更换端口25或4656、webhook模板可以参考接口文档：更新用户通知配置7、监控域名非443的端口域名格式域名:端口

eg:

www.baidu.com:80808、修改数据库链接通过配置.env文件或者直接设置系统环境变量# sqlite 默认DB_CONNECT_URL=sqlite:///database/database.db# mysqlDB_CONNECT_URL=mysql://root:123456@127.0.0.1:3306/data_domain9、k8s部署配置文件示例apiVersion:apps/v1kind:Deploymentmetadata:labels:app.kubernetes.io/instance:domain-admin-latestapp.kubernetes.io/managed-by:Helmapp.kubernetes.io/name:domain-adminapp.kubernetes.io/version:1.16.0argocd.argoproj.io/instance:domain-admin-latesthelm.sh/chart:domain-admin-0.1.0name:domain-admin-latestnamespace:domain-admin-productionspec:progressDeadlineSeconds:600replicas:1revisionHistoryLimit:10selector:matchLabels:app.kubernetes.io/instance:domain-admin-latestapp.kubernetes.io/name:domain-adminstrategy:rollingUpdate:maxSurge:25%maxUnavailable:25%type:RollingUpdatetemplate:metadata:creationTimestamp:nulllabels:app.kubernetes.io/instance:domain-admin-latestapp.kubernetes.io/name:domain-adminspec:containers:-envFrom:-secretRef:name:envimage:mouday/domain-admin:latestimagePullPolicy:AlwayslivenessProbe:failureThreshold:3httpGet:path:/port:httpscheme:HTTPperiodSeconds:10successThreshold:1timeoutSeconds:1name:domain-adminports:-containerPort:8000name:httpprotocol:TCPreadinessProbe:failureThreshold:3httpGet:path:/port:httpscheme:HTTPperiodSeconds:10successThreshold:1timeoutSeconds:1问题反馈交流QQ群号:731742868邀请码：domain-admin开发计划已完成支持企业微信通知已完成支持域名分组增加理员权限，权限分级：root 管理员 普通用户已完成解决批量导入超时问题，支持1000条数据导入已完成支持域名备注已完成支持域名到期数据已完成webhook支持变量已完成异步操作的前端状态显示暗黑模式已完成支持内网用户自己设置过期时间已完成增加筛选功能: 筛选域名状态、证书状态、网站状态已完成增加批量删除域名的功能证书测试：https://badssl.com/获取证书列表JSON.stringify([...document.querySelectorAll('a')].map(a=>a.href))批量域名列表 (746314个)alexa-top-1m.csv.zipdocs/top-1m.csv更新日志CHANGELOG.md参考文章Python：获取域名ssl证书信息和到期时间一文搞定：whois数据库查询域名信息（WHOIS）