Docker部署Typecho博客+Xray
加密文章,输入密码浏览
前言
前文以caddy
方案部署v2ray+Typecho
,本文以nginx+acme
方案部署xray+Typecho
一键脚本
更新一下,最近不知是不是用chatGPT比较多的原因,443端口老是被封,借鉴wulabing大大的Nginx前置脚本自己简单制作了daocker+typecho的一键脚本,用VLESS+TCP+TLS+Nginx+WebSocket
协议试验一段时间:
|
|
脚本以cloudflare解析域名为例,按提示输入相关参数即可,如果不喜欢docker和PHP可直接使用wulabing大大的脚本:
|
|
后面步骤为手动安装,较为繁琐,可阅读了解原理
部署前准备
宿主机安装 docker, docker-compose,拥有正确解析的域名和相应的证书
先克隆文件
|
|
切换到 docker-xray-web
目录下,共有 3 处配置文件需要用户自行修改:
./docker-compose.yml :
db 一节中的数据库用户名、数据库用户密码、数据库名都可以由用户自定义;
每一节都有环境变量 TZ ,可供设置容器时区;
./nginx/conf.d :
需要将文件中所有 yourdomain.com 替换为用户自己的域名;
./xray/config/config.json :
需要自行填写 UUID 和邮箱。
将域名对应的证书放入 ./cert,fullchain 文件保存为 xray.crt,key 文件保存为 xray.key;
部署
在 docker-xray-web 下执行
|
|
正常情况下,所有容器都应能正常运行
使用 Ctrl-C
停止所有容器,然后执行:
|
|
然后执行:
|
|
重启容器,通过 docker ps -a
命令记住nginx的容器ID,后面会用到
ssl 证书颁发与续期
借助acem.sh来迅速实现 let’s encrypt 的泛域名 ssl 证书颁发与续期。安装步骤为:
1. 登录VPS并切换root账号,我这里以 Centos 举例说明
|
|
2. 安装acme.sh
|
|
3. 申请密钥
到域名购买服务商,申请 api key,用于后期的 txt 记录验证
DNSPod
密钥申请完毕之后,如下操作导入命令
|
|
阿里云
|
|
其他
至于其他平台,应该如何导入 API key,可以参考下面的文档,这里不一一说明了
https://github.com/acmesh-official/acme.sh/wiki/dnsapi
4. 证书生成
请注意,--dns
后面的参数,一般来讲后缀就是上面的导入key的前缀
如果不确定,到上面的github连接中去找
|
|
5. 安装证书
接下来将我们的证书安装到 nginx,下面的脚本除了安装之外,也添加了一个自动更新的任务(一般来说,60 天以后会自动更新,并会强制重启 nginx 使新的证书生效,可以通过 crontab -e
看到对应的定时任务)
|
|
安装 Typecho
证书加载成功后打开浏览器访问预先设置的域名,即可安装 Typecho 。安装时需要注意的是数据库地址要填你的数据库服务名称,本项目docker-compose配置文件里为db
本项目内置的 default.conf 已经配置为支持 Typecho 伪静态,但您可能需要在 Typecho 安装后,到网站后台中启用相关设置。
Typecho 安装后可能需要在程序自动生成的 ./nginx/www/typecho/config.inc.php
中加入一行:
|
|
以启用全站 HTTPS 加密。
其它
Xray 的日志默认是输出在容器内的控制台中的,您可以按照 Xray 的文档要求,将 Xray 配置文件的 log 一节设置为
|
|
默认的 Xray 配置不能通过 CDN,但您可以自定义 Xray 配置文件来实现这一功能。