前言

最近一直在折腾家里的服务器,现在 ipv6 已经普及了,很多宽带也有 IPV6 公网地址了,于是就可以告别内网穿透,跑满家里的 100M 上传带宽了。群晖自带的域名在每次重启之后会有很长一段时间才能够解析到公网 IP,所以换用自己的域名。

设备

  • 群晖 DS218+,ds7.1
  • 需要自备域名且最好托管到 DNS 服务器上(推荐 Cloudflare,免费好用且安全)
  • docker 安装 DDNS 将域名解析到公网

开始安装

  1. 在群晖中打开 ssh 连接功能

  2. 使用 ssh 连接到群晖 并需要使用 root 用户登录或者获取 root 权限

  3. 安装 acme.sh

    1
    2
    3
    curl https://get.acme.sh | sh -s [email protected] --force

    ~~curl https://get.acme.sh | sh~~

    注意:如果不使用 email 的命令,群晖默认会报莫名其妙的错误,原因不明,个人测试发现必须要使用 email 参数才能正常安装 acme.sh

  4. 导入 cloudflare 的 API 密钥

    1
    2
    export CF_Key="your_cloudflare_api_key"
    export CF_Email="your_cloudflare_email"

    这里以 Cloudflare 为例,其他 DNS 服务商请参考 acme.sh 的文档

  5. 申请 SSL 证书

    1
    acme.sh --issue --dns dns_cf -d yourdomain.com -d www.yourdomain.com

    注意:这里的 yourdomain.com 和www.yourdomain.com需要替换为你自己的域名

  6. 安装 SSL 证书(需要更新到群晖中)

    1
    2
    3
    4
    acme.sh --install-cert -d yourdomain.com \
    --key-file /usr/local/etc/nginx/ssl/yourdomain.com.key \
    --fullchain-file /usr/local/etc/nginx/ssl/yourdomain.com.cer \
    --reloadcmd "/root/.acme.sh/acme.sh --deploy --deploy-hook synology_dsm --domain yourdomain.com"

    注意:这里的路径需要根据实际群晖环境进行调整,

  7. 设置自动续期
    我这里手动在 DSM 中创建计划任务,命令如下:

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    # 设置 acme.sh 路径
    ACME_SH="/root/.acme.sh/acme.sh"

    # 设置域名
    DOMAIN="yourdomain.com"

    # 设置证书安装路径
    CERT_PATH="path/to/your/certificates"
    # 这里的路径需要根据实际群晖环境进行调整

    # 开始续期证书(如果不需要续期会自动跳过)
    "$ACME_SH" --renew -d "$DOMAIN" --ecc \
    --key-file "$CERT_PATH/$DOMAIN.key" \
    --fullchain-file "$CERT_PATH/$DOMAIN.fullchain.pem" \
    --reloadcmd "\"$ACME_SH\" --deploy --deploy-hook synology_dsm --domain $DOMAIN"

    注意:这里的路径需要根据实际群晖环境进行调整,

    配置完成之后可以在 群晖中>安全性>证书中查看到新申请的证书。

    设置好计划任务后,就可以愉快的使用自己的域名且有 SSL 证书了。