目 录CONTENT

文章目录

域名和SSL证书监测平台Domain Admin

阿尘Joueur
2024-11-18 / 0 评论 / 1 点赞 / 16 阅读 / 2,651 字 / 正在检测是否收录...
温馨提示:
本文最后更新于 2024-11-18,若内容或图片失效,请留言反馈。部分素材来自网络,若不小心影响到您的利益,请联系我们删除。
广告 广告

介绍

基于Python + Vue3.js 技术栈实现的域名和SSL证书监测平台

用于解决,不同业务域名SSL证书,申请自不同的平台,到期后不能及时收到通知,导致线上访问异常,被老板责骂的问题

Domain Admin是一个轻量级监控方案,占用系统资源较少。同时,Domain Admin也可以作为一个FlaskVue.js前后端分离的项目模板

项目优势
  • 集中管理: 提供一个统一的平台来管理多个域名,极大地提高了管理效率。
  • 自动提醒: 支持域名到期提醒,帮助用户避免因域名过期导致的服务中断。
  • 开源灵活: 作为开源项目,用户可以根据自身需求进行定制和扩展。
  • 社区支持: 拥有活跃的社区,可以获得持续的更新和问题支持。
  • 用户友好: 界面简洁直观,容易上手。
功能描述
  • 核心功能:域名、SSL证书 和 托管证书文件 的过期监控,到期提醒
  • 支持证书:单域名证书、多域名证书、泛域名(通配符)证书、IP证书、自签名证书
  • 证书部署:单一主机部署、多主机部署、动态主机部署
  • 通知渠道:支持邮件、Webhook、企业微信、钉钉、飞书等通知方式
  • 支持平台:macOSLinuxWindows
  • 辅助功能:Let’s Encrypt SSL证书免费申请和SSL证书自动续期
  • 多语言:支持中文、英文

img

相关地址

官方GitHub地址:
文档:

img

img

搭建方式

方式一:宝塔面板安装

宝塔服务器面板,一键全能部署及管理
宝塔Linux面板是提升运维效率的服务器管理软件,支持一键LAMP/LNMP/集群/监控/网站/FTP/数据库/JAVA100多项服务器管理功能。

如果还未安装宝塔,请先前往下载注册安装

面板版本v9.2.0: 宝塔面板 –> Docker –> 应用商店 –> Domain Admin –> 安装

【教程贴】Docker应用-Domain Admin 安装帮助

方式二:docker启动

本地文件夹和容器文件夹映射

$ docker run \
-v $(pwd)/database:/app/database \
-v $(pwd)/logs:/app/logs \
-p 8000:8000 \
--name domain-admin \
mouday/domain-admin:latest
database:sqlite数据库和重要数据的目录

logs:日志目录,用于排查问题

启动命令增加参数:-d,可以后台运行

本地文件夹和容器文件夹映射

$ docker run \
-d \
-v $(pwd)/database:/app/database \
-v $(pwd)/logs:/app/logs \
-p 8000:8000 \
--name domain-admin \
mouday/domain-admin:latest

也可以用dokcer-compose来一键启动

可以使用docker-compose up -d来启动

当版本更新时,可以用docker-compose pull来拉取镜像,然后用docker-compose up -d来重启新镜像

version: '3.3'
services:
    domain-admin:
        volumes:
            - './database:/app/database'
            - './logs:/app/logs'
        ports:
            - '8000:8000'
        container_name: domain-admin
        image: mouday/domain-admin:latest
        ```
可用的`docker`镜像站
$ sudo mkdir -p /etc/docker

$ sudo tee /etc/docker/daemon.json <<EOF
{
"registry-mirrors": [
"https://dockerpull.com",
"https://dockerproxy.cn",
"https://docker.loli.voto",
"https://docker.chenby.cn",
"https://docker-cf.registry.cyou",
"https://docker.m.daocloud.io",
"https://docker.ketches.cn",
"https://docker.1panel.dev",
"https://docker.1panel.live",
"https://docker.rainbond.cc",
"https://hub.rat.dev",
"https://docker.aityp.com/",
"https://docker.catiz.eu.org/"
]
}
EOF

$ sudo systemctl daemon-reload
$ sudo systemctl restart docker
方式三:下载源码安装

下载地址:https://github.com/mouday/domain-admin/releases

本方式仅适用于二次开发,推荐采用 pip安装 或者 docker启动 的方式体验

例如:以v1.5.8为例

每次发布都会包含以下代码包

domain-admin-1.5.8.tar.gz                # 完整源码包,包含打包后的H5端、web端代码
domain_admin-1.5.8-py2.py3-none-any.whl  # pip包,可直接安装
domain-admin-mini-v1.5.8.tar.gz          # H5端源码
domain-admin-web-v1.5.8.tar.gz           # web端源码
Source code(zip)                         # Python源码 windows适用
Source code(tar.gz)                      # Python源码 linux/mac适用
此处以linux/macos为例,windows用户可直接点击下载,自行使用加压软件解压

1、下载发布包

下载 domain-admin-1.5.8.tar.gz
wget https://github.com/mouday/domain-admin/releases/download/v1.5.8/domain-admin-1.5.8.tar.gz
如果下载速度过慢,可以使用加速方案
wget https://ghproxy.com/https://github.com/mouday/domain-admin/releases/download/v1.5.8/domain-admin-1.5.8.tar.gz

2、解压进入

tar -zxvf domain-admin-1.5.8.tar.gz
cd domain-admin-1.5.8

3、创建虚拟环境

创建名为 venv 的虚拟环境,windows用户参考方式一
$ python3 -m venv venv && source venv/bin/activate
安装依赖
pip3 install .

4、新建启动文件 app.py

from domain_admin.main import app

if __name__ == '__main__':
    app.run(port=8000)

此时的目录结构如下

$ tree -L 1
.
├── LICENSE
├── MANIFEST.in
├── PKG-INFO
├── README.md
├── app.py                 # 新建的启动文件
├── build
├── database
├── domain_admin
├── domain_admin.egg-info
├── logs
├── requirements
├── setup.cfg
├── setup.py
├── temp
└── venv

5、启动运行

启动运行
$ python app.py

* Serving Flask app 'domain_admin.main'
* Debug mode: off
WARNING: This is a development server. Do not use it in a production deployment. Use a production WSGI server instead.
* Running on http://127.0.0.1:8000
Press CTRL+C to quit

warning提示可以忽略,推荐参考方式一,使用gunicorn 或者 waitress-serve 启动

访问地址:http://127.0.0.1:8000

方式四:1Panel面板安装

1Panel是一个Linux 服务器运维管理面板,Domain-Admin已发布到它的应用商店,可以直接安装

安装地址:

https://apps.fit2cloud.com/1panel/domain-admin
方式五:k8s部署

配置文件示例

apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app.kubernetes.io/instance: domain-admin-latest
    app.kubernetes.io/managed-by: Helm
    app.kubernetes.io/name: domain-admin
    app.kubernetes.io/version: 1.16.0
    argocd.argoproj.io/instance: domain-admin-latest
    helm.sh/chart: domain-admin-0.1.0
  name: domain-admin-latest
  namespace: domain-admin-production
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      app.kubernetes.io/instance: domain-admin-latest
      app.kubernetes.io/name: domain-admin
  strategy:
    rollingUpdate:
      maxSurge: 25%
      maxUnavailable: 25%
    type: RollingUpdate
  template:
    metadata:
      creationTimestamp: null
      labels:
        app.kubernetes.io/instance: domain-admin-latest
        app.kubernetes.io/name: 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
方式六:pip安装

运行环境:

Python >= 2.7 或者 Python >= 3.4

sqliteopenssl

python的安装,可以参考文章:Linux环境下安装Python3

可以使用 pyenv + venv 管理多个Python版本和隔离虚拟环境

确保已经安装Python解释器

$ python3 --version
Python 3.7.0
linux / macos 安装

创建名为 venv 的虚拟环境并激活

$ python3 -m venv venv && source venv/bin/activate

安装 domain-admin

$ pip install gunicorn domain-admin

启动运行

$ gunicorn --bind '127.0.0.1:8000' 'domain_admin.main:app'
windows 安装

创建名为 venv 的虚拟环境

> py -3 -m venv venv

激活虚拟环境

> venv\Scripts\activate

安装 domain-admin

> pip install waitress domain-admin

启动运行

> waitress-serve --listen=127.0.0.1:8000 domain_admin.main:app

访问地址:http://127.0.0.1:8000

升级到最新版本

$ pip3 install -U domain-admin -i https://pypi.org/simple
Python2.7如果安装依赖报错,可以使用依赖文件 production-2.7.txt

先安装好依赖文件的依赖,再安装domain-admin即可

其他部署方式
可以参考`https://flask.palletsprojects.com/en/2.3.x/deploying/`

平滑升级
`Domain Admin`所有版本都支持平滑升级

安装最新版,重启即可

注意:如果是`docker`安装的,注意`database` 目录是不是手动挂载的,不要删除

可选配置
通过配置`.env` 文件或者直接设置系统环境变量

1、修改数据库存储方式

sqlite 默认 (少量用户推荐)
DB_CONNECT_URL=sqlite:///database/database.db
mysql (团队使用推荐)
DB_CONNECT_URL=mysql://root:123456@127.0.0.1:3306/data_domain
postgresql,需自己安装psycopg2依赖:pip install psycopg2
DB_CONNECT_URL=postgresql://root:123456@localhost:5432/data_domain
说明:以上配置仅为示例,根据自己实际情况修改

如果使用mysql数据库,建议指定默认字符编码为utf8mb4

create database data_domain default character set=utf8mb4;
配置参数
可以通过运行目录下添加 .env 文件配置项目的可选参数
数据库链接参数
支持数据库:sqlite(默认)、mysqlpostgresql
DB_CONNECT_URL=mysql://root:123456@127.0.0.1:3306/data
运行模式
可选:production(默认) / development(可以打印更多的调试日志)
APP_MODE=production
允许远程执行的命令白名单,多个英文分号(;)分隔
ALLOW_COMMANDS=/opt/nginx/sbin/nginx -s reload;nginx -s reload
允许用户注册,目前仅支持邮箱验证码登录
ENABLED_REGISTER=true

还可以通过环境变量来暴露

export APP_MODE=production

Dockerfile 中使用 ENV 指令设置环境变量

设置单个环境变量
ENV APP_MODE production
设置多个环境变量
ENV APP_MODE=production ALLOW_COMMANDS='nginx -s reload'
使用 docker run 命令的 -e 或 --env 选项在运行容器时设置环境变量
设置单个环境变量
docker run -e APP_MODE=production my_image
设置多个环境变量
docker run -e APP_MODE=production -e ALLOW_COMMANDS='nginx -s reload' my_image

docker-compose.yml文件中使用environment关键字

version: '3.3'
services:
    domain-admin:
        volumes:
            - './database:/app/database'
            - './logs:/app/logs'
        ports:
            - '8000:8000'
        environment:
            - APP_MODE=production
        container_name: domain-admin
        image: mouday/domain-admin:latest

docker-compose.yml文件从宿主机获取环境变量,可以使用env_file关键字指向一个文件

version: '3.3'
services:
    domain-admin:
        volumes:
            - './database:/app/database'
            - './logs:/app/logs'
        ports:
            - '8000:8000'
        env_file:
            - .env
        container_name: domain-admin
        image: mouday/domain-admin:latest
可以通过 printenv 命令查看设置的环境变量

反向代理

点击查看教程:HestiaCP面板反向代理其他网站设置
点击查看教程:Nginx Proxy Manager 一款Nginx可视化面板
点击查看教程: 宝塔反代、反代后不能上传大文件等解决问题

1
广告 广告

评论区