本片文章的来源呢,是在群晖搭建了blog,但是每次都端口加域名访问令我很难受

本章内容,需自己已经设置过ddns和upnp

今天的例子就以的halo博客为演示(本博客以替换为hexo)

感谢halo博客的开源

感谢vercel的免费资源

开源链接:GitHub - halo-dev/halo: 强大易用的开源建站工具。

halo官网:Halo 建站 - 强大易用的开源建站工具

halo生态:GitHub - halo-sigs/awesome-halo: 与 Halo 相关的周边生态资源列表

vercel官网:Vercel: Develop. Preview. Ship. For the best frontend teams

先做准备工作,我们是准备在群晖上搭建halo,可以完全使用docker-compose部署,也可以使用数据库在群晖安装,其他在docker

我采用的就是数据库在群晖halo在docker的模式

准备工作

先做准备工作,在群晖的商店安装好docker和MariaDB+mysqlphpadmin+node

image-20230413152007876

image-20230413152023819

image-20230413152129934

image-20230413154338909

域名绑定

我们先要做一下域名解析,之前做过ddns的会有一个泛解析

我们需要为blog.xxxxx.com做一个解析,解析到vercel

以腾讯云为例

image-20230413155552643

记录值填 cname-china.vercel-dns.com

MySQL设置

首先要现在打开Maria DB创建一个MySQL密码,并开启TCP/IP连接

image-20230413152256682

然后在phpmyadmin里面创建一个名字叫halo的数据库

安装halo

准备工作就做完了,我们开始安装halo

我们先要开启群晖的ssh功能,建议更改默认端口

image-20230413152534005

然后用ssh软件连接到群晖

我们回到网页端,创建一个halo的文件夹用来存放halo的数据

image-20230413152704444

创建好目录后,我们进入ssh工具,进入刚刚创建好的目录

1
cd /xxxxxx/xxxxx/xxx

目录可以去网页端复制,属性那里会有位置复制进入即可

创建一个docker-compose.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
version: "3"

services:
halo:
image: halohub/halo:2.4
container_name: halo
restart: on-failure:3
network_mode: "host"
volumes:
- /xxx/xxx/halo:/root/.halo2
#修改成你自己的目录
command:
# 修改为自己已有的 MySQL 配置
- --spring.r2dbc.url=r2dbc:pool:mysql://localhost:3306/halo
- --spring.r2dbc.username=root
- --spring.r2dbc.password=你设置的mysql密码
- --spring.sql.init.platform=mysql
# 外部访问地址,请根据实际需要修改
- --halo.external-url=http://localhost:8090/
#这里一定要改成你之后绑定vercel的域名比如https://blog.xxxx.com

# 初始化的超级管理员用户名
- --halo.security.initializer.superadminusername=admin
# 初始化的超级管理员密码
- --halo.security.initializer.superadminpassword=P@88w0rd
# 端口号 默认8090 你可以修改但是一定要记得在路由器配置放行你设置的端口
- --server.port=8090

启动 Halo 服务

1
docker-compose up -d

实时查看日志

1
docker-compose logs -f

启动成功后我们去放行你设置的端口没有修改就是默认8090

如果你在域名解析服务商创建了泛解析的话你可以随意地址加上端口号

例如b.xxxx.com:8090

反代halo

这样你就发现访问成功了,但是他是http形式,我们先用群晖自带的反代给他加上ssl

image-20230413154054005

image-20230413154105291

image-20230413154040372

在登陆门户—高级—反向代理服务器

根据自己的实际情况填写即可

vercel设置

然后我们去vercel用GitHub账号登陆即可

image-20230413154238958

然后根据提示绑定自己的仓库即可

vercel绑定完成后,我们开始下一步

在ssh命令行使用

1
npm -i g vercel

安装完成后输入

1
vercel login

选择登录方式登录即可

然后在群晖网页端创建一个文件夹

image-20230413154541944

也可以用命令行创建

然后在创建好的文件下创建一个json文件,并命名

比如我创建的是blog.json

1
2
3
4
5
6
{
"version": 2,
"rewrites": [
{"source": "/(.*)","destination": "https://b.tyslz.cn:5801/$1"}
]
}

详解使用 vercel.json 配置项目 |韦塞尔文档 在文件写入上述代码

然后回到ssh命令行,进入创建的文件夹

输入以下命令

1
vercel -A blog.json --prod

此命令会在vercel创建一个项目

我们去vercel看一下

image-20230413154909723

看见项目已经创建完成了

我们点进去然后在右上角

image-20230413155010288

点击View Domains

进入后是这样的

image-20230413155036886

这个时候我们要在Domains下面输入,我们在docker输入的网址了

image-20230413155116575

点击add他会自己检测并添加ssl证书

这个时候我们就可以去用blog.xxxxx.com这个域名访问blog了,而且没有端口,并且隐藏了真实源