Certimate 项目部署
一、项目简介
做个人产品或在中小团队负责运维时,经常要管理多个域名的证书。手动处理有两个痛点:
- 麻烦:申请、下载、上传、重启服务,域名一多就是重复劳动。
- 易忘:免费证书有效期很短(目前常见为 90 天,并有继续缩短的趋势),忘记续期就会导致网站无法访问。
Certimate 的做法是:你在网页里填好域名、DNS 服务商授权和要部署的目标,它按工作流定时自动申请、部署并在到期前续期。
核心特点
| 特点 | 说明 |
|---|---|
| 私有部署 | 数据全部保存在自己的服务器,不经过第三方 |
| 零依赖 | 不需要另装数据库、运行时或框架,下载即用 |
| 低资源占用 | 非常轻量,官方描述运行内存仅十几 MB 量级 |
| 跨平台 | 支持 Windows、Linux、macOS |
| 可视化工作流 | 申请、部署、通知等环节用节点编排,全自动运行 |
| 多服务商支持 | 对接主流云厂商的 DNS 与部署目标(云存储、CDN、负载均衡等) |
| 透明可审计 | 二进制与 Docker 镜像由 CI 构建,过程公开 |
二、工作原理
- 你在管理页面填写:要申请证书的域名、DNS 服务商的授权信息、要部署到的目标服务授权信息。
- Certimate 通过 ACME 协议向证书颁发机构发起申请,并用 DNS 验证方式证明域名归属。
- 证书签发后,按工作流把证书部署到指定目标(如 CDN、对象存储、负载均衡、服务器文件等)。
- 到期前自动续期并重新部署,同时可通过通知渠道告知结果。
三、部署方案选择
| 方案 | 适用场景 | 说明 |
|---|---|---|
| 二进制文件 | 最简单,VPS、物理机、Windows 均可 | 下载解压后直接运行,官方推荐的入门方式 |
| Docker / Docker Compose | 已有容器环境、NAS | 便于升级与迁移,推荐长期使用 |
| 源码运行 | 需要二次开发 | 需 Go 环境,一般用户无需使用 |
四、环境要求
- 一台能长期运行的机器(Linux 服务器、NAS、家用主机均可),内存 128MB 以上足够
- 能访问证书颁发机构和你所用 DNS 服务商的接口
- 默认管理端口:8090(放行或通过反向代理访问)
- 域名托管在受支持的 DNS 服务商,并能创建 API 密钥
- 使用 Docker 方案时:Docker Engine 与 Docker Compose 插件
五、二进制部署
5.1 下载与运行
- 在项目的发布页面下载与你系统和架构匹配的压缩包。
- 解压到固定目录,例如
/opt/certimate:
mkdir -p /opt/certimate
cd /opt/certimate
# 把下载好的压缩包解压到此目录后:
chmod +x certimate
./certimate serve
- 默认监听 8090 端口。若需要让局域网或公网访问,可指定监听地址:
./certimate serve --http 0.0.0.0:8090
5.2 注册为系统服务(Linux,systemd)
创建 /etc/systemd/system/certimate.service:
[Unit]
Description=Certimate
After=network-online.target
Wants=network-online.target
[Service]
Type=simple
WorkingDirectory=/opt/certimate
ExecStart=/opt/certimate/certimate serve --http 127.0.0.1:8090
Restart=on-failure
RestartSec=5
[Install]
WantedBy=multi-user.target
启用并启动:
sudo systemctl daemon-reload
sudo systemctl enable --now certimate
sudo systemctl status certimate
说明:上面把监听地址设为 127.0.0.1,是为了配合反向代理使用,不直接暴露到公网。局域网内直接访问时改为 0.0.0.0。
5.3 macOS 提示
macOS 首次运行可能提示「无法验证开发者」,到「系统设置 → 隐私与安全性」中点击「仍然允许」后再运行。
六、Docker Compose 部署
6.1 创建目录与配置
mkdir -p ~/certimate && cd ~/certimate
创建 docker-compose.yml(示例;官方仓库的 docker 目录里也提供了配置文件,建议对照使用):
services:
certimate:
image: certimate/certimate:latest
container_name: certimate
restart: unless-stopped
ports:
- "8090:8090"
volumes:
- /etc/localtime:/etc/localtime:ro
- ./data:/app/pb_data
要点:
./data对应容器内的数据目录,所有账号、授权、工作流和证书都保存在这里,务必持久化并备份。- 需要让 Certimate 把证书写入宿主机某个目录(例如给 Nginx 使用),要额外挂载对应目录,并在工作流的部署节点中填写容器内路径。
- 生产环境建议把镜像固定到具体版本号,按需升级。
6.2 启动
docker compose up -d
docker compose ps
docker compose logs -f certimate
七、首次登录与安全设置
- 浏览器访问「服务器IP地址:8090」。
- 使用项目文档中给出的初始管理员账号登录。早期版本 README 给出的默认账号为 admin@certimate.fun,默认密码为 1234567890,不同版本可能不同,请以你所用版本的说明为准。
- 登录后立即修改管理员邮箱和密码,使用强密码。这个默认账号是公开信息,不改等于没设防。
- 管理端不要在未保护的情况下暴露到公网,建议放在反向代理之后并启用 HTTPS,必要时限制来源 IP。
八、配置第一个证书流程
8.1 添加授权
进入「授权管理」,添加你的 DNS 服务商(用于 DNS 验证)和部署目标服务商的 API 凭据。
安全建议:
- 给 API 密钥只开放必要的最小权限,例如只允许修改 DNS 解析记录。
- 优先使用子账号或专用密钥,不要使用主账号密钥。
8.2 设置证书颁发机构与邮箱
在系统设置中选择证书颁发机构(如 Let’s Encrypt、ZeroSSL、Google Trust Services 等,具体以界面提供的选项为准),并配置接收通知的邮箱。部分颁发机构需要额外的账号信息。
8.3 创建工作流
- 新建工作流,设置触发方式:手动,或定时(如每天检查一次)。
- 添加「申请」节点:填写域名(可以是多域名或泛域名)、选择 DNS 授权、证书算法和提前续期天数。
- 添加「部署」节点:选择部署目标(CDN、对象存储、负载均衡、服务器文件、面板或网关等)。
- 可选添加「通知」节点:把成功或失败结果推送到邮件、即时通讯等渠道。
- 先手动执行一次,确认整条链路跑通,再启用定时。
8.4 部署到自己的 Nginx 等服务
常见做法是用「部署到本地或远程服务器」类节点,把证书和私钥写到指定路径,再执行重载命令,例如:
nginx -s reload
使用 Docker 部署 Certimate 时,请确认容器内有权限写入挂载目录,且重载命令在容器内可用,否则可改用 SSH 方式部署到宿主机。
九、反向代理与 HTTPS
Caddy 示例(自动签发管理端自身的证书):
cert.你的域名 {
encode zstd gzip
reverse_proxy 127.0.0.1:8090
}
若使用 Nginx,需要开启 WebSocket 或长连接升级支持,以保证管理界面的实时功能正常。
也可以让 Certimate 给自身签发证书,具体用法参见所用版本的文档说明。
十、备份、升级与维护
10.1 备份
- 二进制部署:备份运行目录下的
pb_data数据目录。 - Docker 部署:备份挂载的
data目录。 - 该目录包含 API 授权信息和私钥,备份文件须加密保存,且不要上传到公开位置。
- 建议升级前先备份,定期做恢复演练。
10.2 升级
Docker:
cd ~/certimate
docker compose pull
docker compose up -d
docker image prune
二进制:停止服务,用新版本的可执行文件替换旧文件,保留 pb_data 目录不动,然后重新启动:
sudo systemctl stop certimate
# 替换 /opt/certimate/certimate 为新版本
sudo systemctl start certimate
升级前请阅读版本发布说明,留意是否有数据结构或配置变更。
10.3 日常维护
- 关注工作流的执行记录,确认每次续期成功。
- 开启失败通知,避免静默失败直到证书过期才发现。
- API 密钥定期轮换,授权不再使用时及时删除。
- 保持服务器时间准确,时间偏差可能导致验证或续期异常。
十一、常见问题排查
| 现象 | 可能原因 | 处理办法 |
|---|---|---|
| 无法访问管理页面 | 端口未放行,或只监听了 127.0.0.1 | 检查防火墙和监听地址 |
| 默认账号登录失败 | 版本不同或初始密码已变更 | 查看所用版本的说明,或重置管理员账号 |
| DNS 验证失败 | 授权无权限、域名不在该服务商、解析未生效 | 检查 API 权限与域名归属,稍后重试 |
| 签发失败提示频率限制 | 短时间内重复申请 | 等待限制解除,减少测试次数 |
| 部署成功但网站仍用旧证书 | 服务未重载 | 在部署节点添加重载命令,或检查证书路径 |
| 容器内无法写入证书目录 | 目录未挂载或权限不足 | 增加挂载并检查目录权限 |
| 续期没有触发 | 工作流未启用或定时设置错误 | 检查触发设置与执行记录 |
| 数据丢失 | 未挂载数据目录 | 确认 pb_data 对应目录已持久化 |
十二、命令速查
# 二进制
./certimate serve
./certimate serve --http 0.0.0.0:8090
# systemd
sudo systemctl enable --now certimate
sudo systemctl restart certimate
sudo journalctl -u certimate -f
# Docker
docker compose up -d
docker compose logs -f certimate
docker compose pull && docker compose up -d
- 点赞
- 收藏
- 关注作者
评论(0)