Certimate + Docker:让 Unraid 上的证书彻底告别手动续期

用一个小容器,把 SSL 证书的申请、部署、续期、监控全流程自动化。

一、为什么是它

NAS 玩家都懂这个痛:Let’s Encrypt 证书 90 天一到期,忘了续,反向代理直接报错,所有服务跟着连不上。

Certimate 就是为终结这件事而生的——一个完全开源免费的自托管 SSL 证书 ACME 工具。它把申请、部署、续期、监控串成可视化工作流,配置一次,之后基本不用再管。

几个关键卖点:

  • 自托管:所有证书和云厂商密钥都存本地,数据不出门。
  • 零依赖:不用装数据库、不用装运行时,一个容器跑完。
  • 低占用:常驻内存约 20 MB,对 NAS 来说几乎无感。
  • 全平台:Windows / Linux / macOS,多架构都能跑。

官方文档:https://docs.certimate.me/zh-CN/docs/introduction/

二、它能干什么

能力 说明
证书类型 单域名、多域名、泛域名,甚至 IP 地址证书
私钥算法 RSA / ECC 可选
验证方式 DNS-01(域名解析验证)、HTTP-01(文件验证)
输出格式 PEM、PFX、JKS 等
域名托管商 70+,阿里云、腾讯云、AWS、Cloudflare、GoDaddy……
部署目标 160+,Kubernetes、CDN、WAF、负载均衡、Nginx……
通知渠道 邮件、钉钉、飞书、企业微信、Discord、Slack、Telegram
颁发机构 Let’s Encrypt、ZeroSSL、Google Trust Services、SSL.com……

一句话:上游能拿到证书,下游能把证书送出去,中间全自动。

三、在 Unraid 上部署

Certimate 目前不一定能在 Unraid 应用市场(CA)里直接搜到,所以走手动添加容器。前提是你已经搞定 DDNS、域名解析和反向代理。

方式一:界面手动添加(推荐)

进入 Unraid 的 Docker → 添加容器,切到高级视图,按下面填:

基础信息

字段 值
名称 certimate
Repository(镜像) certimate/certimate:latest
网络类型 Bridge
特权模式 开启
WebUI http://[IP]:[PORT:8090]
图标 可留空,或填官方 GitHub 头像地址

国内拉取 Docker Hub 困难?把镜像换成阿里云加速地址即可,内容完全一致:
registry.cn-shanghai.aliyuncs.com/certimate/certimate:latest

端口映射

容器端口 宿主端口 协议
8090 自定义,如 8091 TCP

路径映射

容器路径 宿主路径 读写
/app/pb_data /mnt/user/appdata/certimate 读写
/etc/localtime /etc/localtime 只读
/etc/timezone /etc/timezone 只读

为什么要开特权模式? Certimate 需要通过 SSH 操作本机文件(比如把证书写到反向代理目录)。开启后它就能直接读写宿主机的挂载路径,省掉一堆权限麻烦。

方式二:命令行直接跑

如果你更习惯终端,在 Unraid 的终端里执行:

docker run -d \
  --name certimate \
  --restart unless-stopped \
  -p 8090:8090 \
  -v /etc/localtime:/etc/localtime:ro \
  -v /etc/timezone:/etc/timezone:ro \
  -v /mnt/user/appdata/certimate:/app/pb_data \
  certimate/certimate:latest

国内环境把最后一行替换为:

  registry.cn-shanghai.aliyuncs.com/certimate/certimate:latest

方式三:Docker Compose

官方提供的 docker-compose.yml 长这样,Unraid 装了 Compose Manager 插件就能直接用:

services:
  certimate:
    image: certimate/certimate:latest
    container_name: certimate
    ports:
      - 8090:8090
    volumes:
      - /etc/localtime:/etc/localtime:ro
      - /etc/timezone:/etc/timezone:ro
      - ./data:/app/pb_data
    restart: unless-stopped

四、首次登录

容器跑起来后,浏览器访问 http://你的NAS地址:端口。

默认管理员账号:

  • 账号:admin@certimate.fun
  • 密码:1234567890

登录后第一件事就是改密码。

五、上手小提示

  1. 先建授权:在「授权管理」里填好 DNS 服务商的 API 密钥,DNS-01 验证才能自动加 TXT 记录。
  2. 再编排工作流:把「申请证书 → 部署到目标 → 失败通知」串成一条流程,后续全部自动跑。
  3. 注意版本差异:老版本镜像 usual2970/certimate 的数据目录是 /data,新版本 certimate/certimate 是 /app/pb_data。迁移时别挂错路径。

配置好之后,你基本可以把它忘掉了——证书会在过期前自动续上,失败还会主动通知你。对一个长期在线的 NAS 来说,这就是最舒服的状态。

上一篇 博客上线十五年了,心情还是不错