Docker部署Certd-全自动证书管理系统

AI摘要:Certd是一款免费的全自动证书管理系统,支持证书申请、部署更新,并支持多种通知方式和私有化部署。它支持多种域名验证方式、部署插件和证书格式,提供多重安全保障和数据备份功能。

Powered by AISummary.

Certd

Certd® 是一个免费的全自动证书管理系统,让你的网站证书永不过期。
后缀d取自linux守护进程的命名风格,意为证书守护进程

一、特性

本项目不仅支持证书申请过程自动化,还可以自动化部署更新证书,让你的证书永不过期。

  • 全自动申请证书(支持所有注册商注册的域名,支持DNS-01、HTTP-01、CNAME代理等多种域名验证方式)
  • 全自动部署更新证书(目前支持部署到主机、阿里云、腾讯云等70+部署插件)
  • 支持通配符域名/泛域名,支持多个域名打到一个证书上,支持pem、pfx、der、jks等多种证书格式
  • 邮件通知、webhook通知、企微、钉钉、飞书、anpush等多种通知方式
  • 私有化部署,数据保存本地,安装简单快捷,镜像由Github Actions构建,过程公开透明
  • 授权加密,站点隐藏,2FA,密码防爆破等多重安全保障
  • 支持SQLite,PostgreSQL、MySQL多种数据库
  • 开放接口支持
  • 站点证书监控
  • 多用户管理
  • 多语言支持(中英双语切换)
  • 各版本向下兼容,一键无忧升级

二、在线体验

官方Demo地址,自助注册后体验

https://certd.handfree.work/

注意数据将不定期清理,不定期停止定时任务,生产使用请自行部署
包含敏感信息,务必自己本地部署进行生产使用

首页

三、使用教程

仅需3步,让你的证书永不过期

1. 创建证书流水线

演示

添加成功后,就可以直接运行流水线申请证书了

2. 添加部署任务

当然我们一般需要把证书部署到应用上,certd支持海量的部署插件,您可以根据自身实际情况进行选择,比如部署到Nginx、阿里云、腾讯云、K8S、CDN、宝塔、1Panel等等

此处演示部署证书到主机的nginx上
演示

如果目前的部署插件都无法满足,您也可以手动下载,然后自行部署
演示

3. 定时运行

演示

↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓

更多教程请访问官方文档 certd.docmirror.cn

↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑

四、私有化部署

由于证书、授权信息等属于高度敏感数据,请务必私有化部署,保障数据安全

您可以根据实际情况从如下方式中选择一种方式进行私有化部署:

【推荐】[Docker方式部署]

直接放上compose文件

version: '3.3' # 兼容旧版docker-compose
services:
  certd:
    # 镜像                                                  #  ↓↓↓↓↓ ---- 镜像版本号,建议改成固定版本号,例如:certd:1.29.0
    image: registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest
    # image: ghcr.io/certd/certd:latest                    #   --------- 如果 报镜像not found,可以尝试其他镜像源
    # image: greper/certd:latest
    container_name: certd # 容器名
    restart: unless-stopped # 自动重启
    volumes:
      #   ↓↓↓↓↓ -------------------------------------------------------- 数据库以及证书存储路径,默认存在宿主机的/data/certd/目录下,【您需要定时备份此目录,以保障数据容灾】
      - /home/docker/certd:/app/data # 只要修改冒号前面的,冒号后面的/app/data切记切记不要动
      #- /volume1/docker/certd:/app/data:delegated  #群晖使用这个配置
      #   ↓↓↓↓↓ -------------------------------------------------------- 如果走时不准,考虑挂载localtime文件
      #- /etc/localtime:/etc/localtime
      #- /etc/timezone:/etc/timezone
    ports: # 端口映射
      #  ↓↓↓↓ ---------------------------------------------------------- 如果端口有冲突,可以修改第一个7001为其他不冲突的端口号,第二个7001不要动
      - "7001:7001"
      #  ↓↓↓↓ ---------------------------------------------------------- https端口,可以根据实际情况,是否暴露该端口
      - "7002:7002"
    #↓↓↓↓ -------------------------------------------------------------- 如果出现getaddrinfo EAI_AGAIN 或 getaddrinfo ENOTFOUND 错误,可以尝试设置dns
#    dns:
#      - 223.5.5.5      # 阿里云公共dns
#      - 223.6.6.6
#       # ↓↓↓↓ --------------------------------------------------------- 如果你服务器在腾讯云,可以用这个替换上面阿里云的公共dns
#      - 119.29.29.29  # 腾讯云公共dns
#      - 182.254.116.116
#       # ↓↓↓↓ --------------------------------------------------------- 如果你服务器部署在国外,可以用这个替换上面阿里云的公共dns
#      - 8.8.8.8       # 谷歌公共dns
#      - 8.8.4.4
#    extra_hosts:
#        # ↓↓↓↓ -------------------------------------------------------- 这里可以配置自定义hosts,外网域名可以指向本地局域网ip地址
#      - "localdomain.com:192.168.1.3"
#        #         ↓↓↓↓ ------------------------------------------------ 直接使用主机的网络,如果网络问题实在找不到原因,可以尝试打开此参数
#    network_mode: host
    labels:
      com.centurylinklabs.watchtower.enable: "true"
#    ↓↓↓↓ -------------------------------------------------------------- 启用ipv6网络,还需要把下面networks的注释放开
#    networks:
#      - ip6net
    environment:
#             ↓↓↓↓ ----------------------------------------------------- 使用上海东八时区
      - TZ=Asia/Shanghai
#     设置环境变量即可自定义certd配置
#     配置项见: packages/ui/certd-server/src/config/config.default.ts
#     配置规则: certd_ + 配置项, 点号用_代替
#                                    #↓↓↓↓ ----------------------------- 如果忘记管理员密码,可以设置为true,docker compose up -d 重建容器之后,管理员密码将改成123456,然后请及时修改回false
      - certd_system_resetAdminPasswd=false
                        # ↓↓↓ 要使用ipv6,将此配置修改为::
      - certd_koa_hostname=0.0.0.0

#     默认使用sqlite文件数据库,如果需要使用其他数据库,请设置以下环境变量
#     注意: 选定使用一种数据库之后,不支持更换数据库。
#     数据库迁移方法:1、使用新数据库重新部署一套,然后将旧数据同步过去,注意flyway_history表的数据不要同步
#                                    #↓↓↓↓ ----------------------------- 使用postgresql数据库,需要提前创建数据库
#      - certd_flyway_scriptDir=./db/migration-pg                        # 升级脚本目录
#      - certd_typeorm_dataSource_default_type=postgres                  # 数据库类型
#      - certd_typeorm_dataSource_default_host=localhost                 # 数据库地址
#      - certd_typeorm_dataSource_default_port=5433                      # 数据库端口
#      - certd_typeorm_dataSource_default_username=postgres              # 用户名
#      - certd_typeorm_dataSource_default_password=yourpasswd            # 密码
#      - certd_typeorm_dataSource_default_database=certd                 # 数据库名

#                                    #↓↓↓↓ ----------------------------- 使用mysql数据库,需要提前创建数据库 charset=utf8mb4, collation=utf8mb4_bin
#      - certd_flyway_scriptDir=./db/migration-mysql                     # 升级脚本目录
#      - certd_typeorm_dataSource_default_type=mysql                     # 数据库类型, 或者 mariadb
#      - certd_typeorm_dataSource_default_host=localhost                 # 数据库地址
#      - certd_typeorm_dataSource_default_port=3306                      # 数据库端口
#      - certd_typeorm_dataSource_default_username=root                  # 用户名
#      - certd_typeorm_dataSource_default_password=yourpasswd            # 密码
#      - certd_typeorm_dataSource_default_database=certd                 # 数据库名

#         ↓↓↓↓ ---------------------------------------------------------  自动升级,上面certd的版本号要保持为latest
#  certd-updater:  # 添加 Watchtower 服务
#    image: containrrr/watchtower:latest
#    container_name: certd-updater
#    restart: unless-stopped
#    volumes:
#      - /var/run/docker.sock:/var/run/docker.sock
#    # 配置 自动更新
#    environment:
#      - WATCHTOWER_CLEANUP=true            # 自动清理旧版本容器
#      - WATCHTOWER_INCLUDE_STOPPED=false   # 不更新已停止的容器
#      - WATCHTOWER_LABEL_ENABLE=true       # 根据容器标签进行更新
#      - WATCHTOWER_POLL_INTERVAL=600       # 每 10 分钟检查一次更新


#    ↓↓↓↓ -------------------------------------------------------------- 启用ipv6网络,还需要把上面networks的注释放开
#networks:
#  ip6net:
#    enable_ipv6: true
#    ipam:
#      config:
#        - subnet: 2001:db8::/64

Docker镜像说明:

  • 国内镜像地址:

    • registry.cn-shenzhen.aliyuncs.com/handsfree/certd:latest
    • registry.cn-shenzhen.aliyuncs.com/handsfree/certd:armv7[version]-armv7
  • DockerHub地址:

    • https://hub.docker.com/r/greper/certd
    • greper/certd:latest
    • greper/certd:armv7greper/certd:[version]-armv7
  • GitHub Packages地址:

    • ghcr.io/certd/certd:latest
    • ghcr.io/certd/certd:armv7ghcr.io/certd/certd:[version]-armv7
  • 镜像构建通过Actions自动执行,过程公开透明,请放心使用

注意:

  • 本应用存储的证书、授权信息等属于高度敏感数据,请做好安全防护
  • 请务必使用HTTPS协议访问本应用,避免被中间人攻击
  • 请务必使用web应用防火墙防护本应用,防止XSS、SQL注入等攻击
  • 请务必做好服务器本身的安全防护,防止数据库泄露
  • 请务必做好数据备份,避免数据丢失
  • 更多安全生产建议点我

五、生态

1. 客户端工具 SSL-Assistant

SSL Assistant 是一个运行于主机上的证书部署管理助手客户端。
支持自动扫描主机Nginx配置,然后从Certd拉取证书并部署。
在不想暴露ssh主机密码情况下,该工具非常好用。

开源地址: https://github.com/Youngxj/SSL-Assistant

六、更多帮助

请访问官方文档:https://certd.docmirror.cn/

七、捐赠

发电权益:

  1. 可加入发电专属VIP群,可以获得作者一对一技术支持,必要时可以远程协助
  2. 您的需求我们将优先实现,并且可能将作为专业版功能提供
  3. 获得专业版功能

专业版特权对比

功能免费版专业版
免费证书申请免费无限制免费无限制
域名数量无限制无限制
证书流水线条数无限制无限制
站点证书监控限制1条无限制
自动部署插件阿里云CDN、腾讯云、七牛CDN、主机部署、宝塔、1Panel等大部分插件群晖、威联通、proxmox等
通知邮件通知、自定义webhook邮件免配置、企微、钉钉、飞书、anpush、server酱等
批量操作流水线模版,流水线复制,批量运行,批量设置通知、定时等
VIP群可加,一对一技术支持,必要时可申请远程协助

八、贡献代码

  1. 本地开发请参考 贡献插件向导
  2. 作为贡献者,代表您同意您贡献的代码如下许可:

    1. 可以调整开源协议以使其更严格或更宽松。
    2. 可以用于商业用途。

感谢以下贡献者做出的贡献。



NAS
打赏
评论区
头像
文章目录

本站已运行: