前往申请免费HTTPS证书/SSL证书
一、介绍
群晖 - NAS 类型的部署节点用于实现将OHTTPS中申请的HTTPS证书/SSL证书自动化部署至群晖NAS(控制面板 - 安全性 - 证书)中。
二、使用方法
使用 群晖 - NAS 类型的部署节点,需要使用我们官方提供的容器镜像ohttps/ohttps-synology来实现证书的自动部署。
该镜像是基于nodejs官方稳定版镜像node:18-alpine构建,添加了证书自动更新服务后生成的,需要配合群晖的「Container Manager」套件或docker使用
1、拉取镜像
通过在群晖的「Container Manager」注册表中搜索「ohttps/ohttps-synology」拉取容器镜像,或者使用docker命令拉取镜像:
docker pull ohttps/ohttps-synology
2、使用镜像
如果通过群晖的「Container Manager」套件启动容器,则需要在「Container Manager - 项目」中新建项目,并配置docker-compose.yml,示例如下:
version: '3.9'
services:
ohttps:
image: ohttps/ohttps-synology
container_name: ohttps
restart: always
network_mode: host
environment:
- PUSH_NODE_ID=push-53ejqm8p60gd7no9
- PUSH_NODE_TOKEN=6b2440b1e3f180a3c9453f9d7766a565
- SYNO_USERNAME=ohttps
- SYNO_PASSWORD=1h^.Uih2-8hAf9wt.0ekjZa^2s%@t33d
或者通过docker命令启动:
docker run -d --restart always \
--network host \
-e PUSH_NODE_ID="push-53ejqm8p60gd7no9" \
-e PUSH_NODE_TOKEN="6b2440b1e3f180a3c9453f9d7766a565" \
-e SYNO_USERNAME="ohttps" \
-e SYNO_PASSWORD="1h^.Uih2-8hAf9wt.0ekjZa^2s%@t33d" \
--name ohttps \
ohttps/ohttps-synology
需要为容器设置以下环境变量:
- PUSH_NODE_ID:必须设置,即为部署节点创建完成后系统生成的部署节点的ID,部署节点的ID都是以push开头的,样例:push-53ejqm8p60gd7no9
- PUSH_NODE_TOKEN:必须设置,即为创建部署节点时,通过点击生成按钮生成的32位令牌,样例:6b2440b1e3f180a3c9453f9d7766a565
- SYNO_SCHEME:群晖管理面板URL的协议:http、https,用于群晖API调用,默认值为http,一般情况下使用默认值即可
- SYNO_HOSTNAME:群晖管理面板URL的域名或者IP,用于群晖API调用,默认值为127.0.0.1,一般情况下使用默认值即可,如需更改,请确保容器内可访问到配置的域名或者IP,否则会导致群晖API调用失败,无法部署证书
- SYNO_PORT:群晖管理面板URL的端口号,用于群晖API调用,默认值为5000,一般情况下使用默认值即可
- SYNO_USERNAME:必须设置,群晖NAS用户账号
- 由于证书自动部署需要使用API上传证书至群晖系统中,而群晖系统中只有管理员有权限上传证书,所以该用户账号必须要在administrators群组中,并且不能开启双重验证
- 建议单独创建一个专有用户账号用于证书的自动部署,并为该用户账号设置16位以上复杂的密码
- 建议对该账号禁用所有文件夹读写权限以及所有应用的访问权限,提升NAS数据的安全性
- OHTTPS仅在部署节点容器所在实例内对群晖NAS用户账号进行使用,用户账号信息不会通过网络传递,请放心使用
- SYNO_PASSWORD:必须设置,群晖NAS用户密码,建议使用16位以上复杂的密码
- SYNO_AS_DEFAULT:证书是否设置为默认证书,默认值为false,即不设置为默认证书,如果需要设置为默认证书,请将该值设置为true,并建议该部署节点仅绑定一个证书,否则多个证书都进行默认证书的设置会导致相互覆盖,只有最后一个会生效
需要注意docker容器网络模式(network_mode)的设置:
- 如果容器是部署在群晖NAS上,并且未对 SYNO_HOSTNAME 进行设置,则默认群晖NAS的API调用地址为:http://127.0.0.1:5000 ,那么容器的网络模式network_mode必须设置为host模式,否则无法通过 http://127.0.0.1:5000 调用群晖API,进而导致证书部署失败
- 如果容器不是部署在群晖NAS上,或者容器网络模式network_mode没有设置为host模式,那么请根据实际情况修改:SYNO_SCHEME、SYNO_HOSTNAME、SYNO_PORT,确保在容器实例内可以通过配置的协议(SYNO_SCHEME)、域名或者IP(SYNO_HOSTNAME)、端口(SYNO_PORT)可以访问到群晖NAS的API,否则会导致证书部署失败
三、常见问题
1、容器启动后,证书没有部署成功
遇到这种情况,需要依次检查以下几点:
- 请在OHTTPS中检查部署节点是否已和证书绑定,部署节点只有绑定证书才能自动拉取到相应的证书
- 请检查容器内的环境变量 PUSH_NODE_ID 以及 PUSH_NODE_TOKEN 是否设置正确并生效,可以使用以下命令检查
# 下方命令中的ohttps为容器名称,需要替换为你实际创建的容器名称
# 下方命令会打开容器内的shell执行环境,用以执行echo命令检查环境变量
docker exec -it ohttps sh
# 在打开的容器shell执行环境中执行下方两条命令,以检查环境变量是否在容器内存在且和OHTTPS中的一致
# 如果下方两条命令执行结果为空或与OHTTPS中的不一致,则环境变量没有生效或设置不正确,请检查容器启动命令或者docker-compose.yml文件中是否正确设置了这两个环境变量
echo $PUSH_NODE_ID
echo $PUSH_NODE_TOKEN
- 请检查配置的SYNO_SCHEME、SYNO_HOSTNAME、SYNO_PORT是否正确,可以在容器内通过curl检查配置的群晖API地址(
${SYNO_SCHEME}://${SYNO_HOSTNAME}:${SYNO_PORT}
)是否可以正常访问
如果以上三项都没有问题且问题依然存在,则可以查看容器日志来定位问题:
# 下方命令中的ohttps为容器名称,需要替换为你实际创建的容器名称
docker logs ohttps
OHTTPS: 免费HTTPS证书/SSL证书申请 • 自动化更新、部署、监控
OHTTPS 支持通过多种域名验证方式(DNS验证、HTTP验证、文件验证等)申请免费的HTTPS证书/SSL证书,包括单域名证书、多域名证书、通配符证书、IP证书等,支持HTTPS证书/SSL证书的自动化更新、自动化部署、自动化监控及告警等,并支持将HTTPS证书/SSL证书自动化部署至阿里云、腾讯云、群晖NAS、百度云、七牛云、多吉云、又拍云、宝塔面板、Docker容器、SSH等,实现HTTPS证书/SSL证书的一站式申请、更新、部署、监控和管理。