目前各大云厂商申请的证书只有3个月有效期,导致每次更新都需要登录各大厂商的DNS解析平台进行管理配置,域名过多会导致维护麻烦。
Domain Admin 是一个基于 Python 和 Vue3.js 技术栈实现的域名和 SSL 证书监测平台。它旨在解决不同业务域名 SSL 证书申请自不同平台,到期后无法及时收到通知,导致线上访问异常的问题。
Domain Admin是一个轻量级监控方案,占用系统资源较少。同时,Domain Admin也可以作为一个Flask 和 Vue.js前后端分离的项目模板
项目优势
- 集中管理: 提供一个统一的平台来管理多个域名,极大地提高了管理效率。
- 自动提醒: 支持域名到期提醒,帮助用户避免因域名过期导致的服务中断。
- 开源灵活: 作为开源项目,用户可以根据自身需求进行定制和扩展。
- 社区支持: 拥有活跃的社区,可以获得持续的更新和问题支持。
- 用户友好: 界面简洁直观,容易上手。
功能描述
- 核心功能:域名、SSL证书 和 托管证书文件 的过期监控,到期提醒
- 支持证书:单域名证书、多域名证书、泛域名(通配符)证书、IP证书、自签名证书
- 证书部署:单一主机部署、多主机部署、动态主机部署
- 通知渠道:支持邮件、Webhook、企业微信、钉钉、飞书等通知方式
- 支持平台:macOS、Linux、Windows
- 辅助功能:Let’s Encrypt SSL证书免费申请和SSL证书自动续期
- 多语言:支持中文、英文
效果预览
安装部署
Domain Admin支持不同方式安装,其它安装方式可以参考官方文档
本次安装主要是以k8s方式部署,并且接入腾讯云DNSPOD进行纳管域名
创建ns
kubectl create tools
创建pvc
创建pvc
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: domain-pvc
namespace: tools
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 50Gi
storageClassName: managed-nfs-storage
接下来创建deployment
apiVersion: apps/v1
kind: Deployment
metadata:
name: domain-admin-latest
namespace: tools
spec:
progressDeadlineSeconds: 600
replicas: 1
selector:
matchLabels:
app: domain-admin
template:
metadata:
labels:
app: domain-admin
spec:
containers:
- name: domain-admin
image: mouday/domain-admin:latest
imagePullPolicy: Always
env:
- name: DB_CONNECT_URL
value: "sqlite:///database/database.db"
livenessProbe:
failureThreshold: 3
httpGet:
path: /
port: http
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
ports:
- containerPort: 8000
name: http
protocol: TCP
readinessProbe:
failureThreshold: 3
httpGet:
path: /
port: http
scheme: HTTP
periodSeconds: 10
successThreshold: 1
timeoutSeconds: 1
volumeMounts:
- name: database-volume
mountPath: /app/database/
volumes:
- name: database-volume
persistentVolumeClaim:
claimName: domain-pvc
创建svc
apiVersion: v1
kind: Service
metadata:
name: domain-admin
namespace: tools
spec:
type: NodePort
selector:
app: domain-admin
ports:
- port: 8000
targetPort: 8000
nodePort: 30200 # 可以指定一个 NodePort,或者让 Kubernetes 自动分配
创建pvc并检查
root@k8s-01:~/domain# kubectl apply -f pvc.yaml
persistentvolumeclaim/domain-pvc created
root@k8s-01:~/domain#
root@k8s-01:~/domain#
root@k8s-01:~/domain# kubectl get pvc -n tools
NAME STATUS VOLUME CAPACITY ACCESS MODES STORAGECLASS AGE
domain-pvc Bound pvc-a8759bb5-492b-422b-833e-01c5e520f436 50Gi RWO managed-nfs-storage 4s
创建deployment
root@k8s-01:~/domain# kubectl apply -f deployment.yaml
deployment.apps/domain-admin created
访问测试
默认用户名为admin,默认密码123456