134 lines
3.8 KiB
Markdown
134 lines
3.8 KiB
Markdown
# 没有IPv4公网,Plex 设置 IPv6访问
|
||
|
||
## 准备条件
|
||
- domain name 你需要有域名一枚
|
||
- 公网IPv6地址 IPv6 address
|
||
- 证书获取工具 推荐使用 acme.sh
|
||
|
||
## 主机环境 Host is PVE
|
||
|
||
|
||
|
||
### 安装 acme.sh Install acme.sh
|
||
|
||
- 命令
|
||
|
||
curl https://get.acme.sh | sh -s email=my@example.com
|
||
|
||
- 添加 acme.sh 启动环境,安装 acme.sh 到 home 目录下
|
||
|
||
`~/.acme.sh/`
|
||
|
||
- 并创建 一个 shell 的 alias, 例如 .bashrc,方便你的使用:
|
||
`alias acme.sh=~/.acme.sh/acme.sh`
|
||
|
||
- 启用环境
|
||
|
||
`source .bashrc`
|
||
### 生成证书
|
||
|
||
- 手动 dns 方式
|
||
|
||
```
|
||
这种方式的好处是, 你不需要任何服务器, 不需要任何公网 ip, 只需要 dns 的解析记录即可 完成验证. 坏处是,如果不同时配置 Automatic DNS API,使用这种方式 acme.sh 将无法 自动更新证书,每次都需要手动再次重新解析验证域名所有权。
|
||
```
|
||
|
||
```
|
||
acme.sh --issue --dns -d mydomain.com \
|
||
--yes-I-know-dns-manual-mode-enough-go-ahead-please
|
||
```
|
||
然后, acme.sh 会生成相应的解析记录显示出来, 你只需要在你的域名管理面板中添加这条 txt 记录即可.
|
||
|
||
等待解析完成之后, 重新生成证书:
|
||
|
||
```
|
||
acme.sh --renew -d mydomain.com \
|
||
--yes-I-know-dns-manual-mode-enough-go-ahead-please
|
||
|
||
```
|
||
|
||
注意第二次这里用的是 --renew
|
||
|
||
dns 方式的真正强大之处在于可以使用域名解析商提供的 api 自动添加 txt 记录完成验证.
|
||
|
||
|
||
|
||
- api 认证方式
|
||
|
||
**acme.sh** 目前支持 cloudflare, dnspod, cloudxns, godaddy 以及 ovh 等数十种解析商的自动集成.
|
||
|
||
以 dnspod 为例, 由于我用的 dnspod 的域名服务。 你需要先登录到 dnspod 账号, 生成你的 api id 和 api key, 都是免费的. 然后:
|
||
|
||
```
|
||
export DP_Id="1234"
|
||
|
||
export DP_Key="sADDsdasdgdsf"
|
||
|
||
acme.sh --issue --dns dns_dp -d aa.com -d www.aa.com
|
||
|
||
```
|
||
|
||
证书就会自动生成了. 这里给出的 api id 和 api key 会被自动记录下来, 将来你在使用 dnspod api 的时候, 就不需要再次指定了. 直接生成就好了:
|
||
|
||
```
|
||
acme.sh --issue -d mydomain2.com --dns dns_dp
|
||
```
|
||
|
||
- copy/安装 证书
|
||
|
||
注意, 默认生成的证书都放在安装目录下: `~/.acme.sh/`, 请不要直接使用此目录下的文件, 例如: 不要直接让 nginx/apache 的配置文件使用这下面的文件. 这里面的文件都是内部使用, 而且目录结构可能会变化.
|
||
|
||
正确的使用方法是使用 `--install-cert` 命令,并指定目标位置, 然后证书文件会被copy到相应的位置, 例如:
|
||
|
||
## Apache example:
|
||
|
||
```
|
||
acme.sh --install-cert -d example.com \
|
||
--cert-file /path/to/certfile/in/apache/cert.pem \
|
||
--key-file /path/to/keyfile/in/apache/key.pem \
|
||
--fullchain-file /path/to/fullchain/certfile/apache/fullchain.pem \
|
||
--reloadcmd "service apache2 force-reload"
|
||
```
|
||
|
||
|
||
|
||
## Plex 证书准备
|
||
|
||
- 自定义域支持 PKCS #12 文件路径,其中包含启用 TLS 的证书和私钥。
|
||
|
||
由于 Plex 需要 PKCS#12 证书,我们需要把通过 acme.sh 获取的证书转换一下。
|
||
|
||
`openssl pkcs12 -export -out yourdomain.pfx -inkey yourdomain.key -in fullchain.cer`
|
||
|
||
**说明:**
|
||
|
||
```
|
||
openssl pkcs12 --export --out 我们需要的证书 --inkey 刚获取的证书密钥 --in fullchain.cer (这个不用 变,用 acme.sh 获取的证书)
|
||
```
|
||
|
||
- Plex 相关设置
|
||
|
||
进入设置 —— 网络 ——
|
||
|
||
- [x] 启动支持 IPv6 的服务器选中☑️ check in
|
||
|
||
- 自定义证书位置
|
||
|
||
- 这里填写上面一步转换获取的 pkcs#12 的证书保存位置 /your/dir/yourdomain.pfx
|
||
|
||
- 自定义证书加密密钥
|
||
|
||
- 这里填写 acme.sh 的证书私钥 /your/domain/key
|
||
|
||
- 自定义证书域
|
||
|
||
- 你的域名 yourdomain.com
|
||
|
||
- 自定义服务器访问 URL
|
||
|
||
- https://yourdomain:port
|
||
|
||
- 例如: https://yourdoain.com:9999
|
||
|
||
|