基于Python + Vue3.js 技术栈实现的域名SSL证书监测平台
核心功能:到期自动邮件提醒
用于解决,不同业务域名SSL证书,申请自不同的平台,到期后不能及时收到通知,导致线上访问异常,被老板责骂的问题
支持平台:macOS、Linux、Windows
运行环境:
- Python 3.7.0
$ pip install domain_admin
# 升级到最新版本,可选
$ pip3 install -U domain-admin -i https://pypi.org/simple
# 启动运行
$ gunicorn 'domain_admin.main:app'
默认的管理员账号:admin 密码:123456
强烈建议
:登录系统后修改默认密码
感谢@miss85246 提供Docker支持
$ docker run -p 8000:8000 mouday/domain-admin
# 后台运行
$ docker run -d -p 8000:8000 mouday/domain-admin
# 本地文件夹和容器文件夹映射
$ docker run \
-v $(pwd)/database:/app/database \
-v $(pwd)/logs:/app/logs \
-p 8000:8000 \
--name domain-admin \
mouday/domain-admin:latest
git clone https://github.com/mouday/domain-admin.git
# 安装依赖
pip install -r requirements.txt
# 启动生产服务
make pro
# 启动开发服务
make dev
- https://gitee.com/mouday/domain-admin
- https://github.com/mouday/domain-admin
- https://pypi.org/project/domain-admin
- https://hub.docker.com/r/mouday/domain-admin
项目截图
网页版:
桌面端:
功能:
-
权限
- 用户登录
- 用户退出
- 修改密码
-
域名管理
- 域名添加
- 域名删除
- 域名搜索
- 域名批量导入
- 导出功能
- 域名证书信息
-
用户管理
- 添加用户
- 删除用户
- 禁用/启用用户
-
证书监控
- 定时监控
- 到期邮件提醒
- 微信提醒(待开发)
- 手动/自动更新证书信息
-
监控日志
-
管理界面
- api接口(用于二次开发)
- web浏览器
- 桌面
移动端(app+小程序)
如果需要对域名进行到期监控和邮件提醒,必须设置
1、设置系统发送邮件的账号密码
2、批量导入域名
导入文本示例: /doc/domain.txt
3、设置邮件通知
4、设置webhook通知
推送到微信的webhook第三方工具
接口文档:/doc/index.md
代码推送
# github
git push -u origin master
# gitee
git push -u gitee master
前端选型(网页版)
- Node.js
- Vite.js
- Vue3.js
- Vue Router
- Pinia
- Element Plus
- Tailwind CSS
前端选型(桌面版)
- node.js v16.15.1
- vue3.js
- quasar + electron
后端选型
- Python3.7.0
- Flask https://flask.palletsprojects.com/en/2.2.x/
- jinja2 https://jinja.palletsprojects.com/en/3.1.x/
- peewee(sqlite) http://docs.peewee-orm.com/en/latest/index.html#
- apscheduler https://apscheduler.readthedocs.io/en/3.x/
- supervisord http://supervisord.org/index.html
- gunicorn https://docs.gunicorn.org/
使用 master + 多worker 方式启动应用,会启动多个定时任务Scheduler,导致多次执行任务
如果小规模使用,启动一个进程即可
如果是需要支持并发访问,可自行改进应用
将定时器独立出来,单独一个进程控制,行成 scheduler + Flask(master + 多worker)
# 启动运行
$ gunicorn 'domain_admin.main:app'
# 支持外网可访问,云服务器(阿里云或腾讯云)需要设置安全组
# 默认内网访问 --bind 127.0.0.1:8000
$ gunicorn --bind '0.0.0.0:8000' domain_admin.main:app'
更多设置,可参考gunicorn
gunicorn不支持Windows,可以使用waitress 替换,感谢@cbr252522489提供的解决方案
$ pip install waitress
$ waitress-serve --listen=127.0.0.1:8000 domain_admin.main:app
参考:https://stackoverflow.com/questions/45228395/error-no-module-named-fcntl
可按如下步骤删除异常数据
docker 启动方式
# 查看容器的运行信息
$ docker ps
# 进入容器
$ docker exec -it <容器id> /bin/sh
# 安装依赖
$ apk add sqlite
# 进入sqlite3
$ sqlite3
sqlite> .open /app/database/database.db
sqlite> .tables
log_scheduler tb_group tb_system tb_version
tb_domain tb_notify tb_user
# 查看数据
sqlite> select * from tb_domain;
# 删除数据
sqlite> DELETE FROM tb_domain WHERE id = 1;
# 退出
sqlite> .quit
可尝试更换端口25或465
邀请码:domain-admin
开发计划
- 支持企业微信通知
- 支持域名分组
- 增加理员权限,权限分级:root 管理员 普通用户
已完成
解决批量导入超时问题,支持1000条数据导入
证书测试:https://badssl.com/
获取证书列表
JSON.stringify([...document.querySelectorAll('a')].map(a=>a.href))
批量域名列表 (746314个)
-
1.0.1
- 修改批量更新方式为异步更新,避免接口超时
-
1.0.0
- 修复前端批量导入域名按钮只能导入一次的问题
- 增加options请求缓存时间,减少请求
- 增加网站连接状态默认值为:未知(黄色)
- 修改批量导入为异步导入执行,导入测试文件大小11.8M
- 修复导入域名解析错误
-
0.0.18
- 修复部分公司邮件校验失败的问题
- 修复添加异常域名后系统奔溃的问题
-
v0.017
- 通过openssl支持自签名证书
-
v0.0.16
- 支持自签名证书,感谢@star7th 提出的建议
-
v0.0.14 v0.0.15
- 修复bug: peewee.OperationalError: no such table: tb_version,感谢@star7th 提出的反馈
-
v0.0.13
- 支持非443端口,感谢@star7th 提出的建议
- 修复前端网络错误没有错误弹窗提示的问题
-
v0.0.12
- 新增webhook通知方式,感谢@star7th 提出的建议
-
v0.0.11
- 优化前端页面显示,增加页面加载进度条
- 修复有效期天数显示不对的问题
-
v0.0.10
- 更新域名证书获取方式为socket,替换curl,移除curl依赖,兼容windows,感谢@cbr252522489 提出的反馈