一、部署Halo并配置

1、关于部署机

本次部署机使用的是绿联DXP 4800 plus,相比较于搭建网站常用的小鸡,NAS拥有更强劲的性能和自定义配置权限。绿联DXP 4800 Plus 是一台高性能的4盘位NAS,采用Intel Gold 8505处理器,拥有5核6线程的任务处理能力。同时,绿联DXP 4800 Plus提供了1个万兆网口,1个2.5GbE网口,在局域网环境下可以发挥更大的传输优势。

绿联DXP系列采用全新的UGOS Pro系统,以debian12为底层框架,重构了影音、相册、docker等服务,新增应用中心、虚拟机等功能,可以满足家用、企业用户的存储、娱乐需求。值得一提的是docker应用,更是增加了对docker-compose的支持,诸如Halo等部署比较复杂的应用,可以通过docker项目的方案一键部署,并支持长期可视化管理,十分方便。

图片

2、部署Halo

Halo目前系统版本为v2.19,支持MySql、postgreSQL、H2三种数据库,建议大家使用MySql数据库进行管理,会比较方便一些。

🔻下面是docker-compose.yaml代码,根据自己需要修改数据库的账号密码

services:
  halo:
    image: registry.fit2cloud.com/halo/halo:2.21
    restart: on-failure:3
    depends_on:
      halodb:
        condition: service_healthy
    networks:
      halo_network:
    volumes:
      - ./halo2:/root/.halo2
    ports:
    ################# 可修改左侧端口,建议不改
      - "8090:8090"
    healthcheck:
      test: ["CMD", "curl", "-f", "http://localhost:8090/actuator/health/readiness"]
      interval: 30s
      timeout: 5s
      retries: 5
      start_period: 30s
    command:
      - --spring.r2dbc.url=r2dbc:pool:mysql://halodb:3306/halo
      - --spring.r2dbc.username=root
      # MySQL 的密码,请保证与下方 MYSQL_ROOT_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=3sfsdf%nnjgb
      - --spring.sql.init.platform=mysql
      # 外部访问地址,可以后面再来根据实际情况修改
      - --halo.external-url=http://xxxxxxx.xxx:8090/


  halodb:
    image: mysql:8.1.0
    restart: on-failure:3
    networks:
      halo_network:
    command: 
      - --default-authentication-plugin=caching_sha2_password
      - --character-set-server=utf8mb4
      - --collation-server=utf8mb4_general_ci
      - --explicit_defaults_for_timestamp=true
    volumes:
      - ./mysql:/var/lib/mysql
      - ./mysqlBackup:/data/mysqlBackup
    healthcheck:
      test: ["CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent"]
      interval: 3s
      retries: 5
      start_period: 30s
    environment:
      # 请修改此密码,并对应修改上方 Halo 服务的 SPRING_R2DBC_PASSWORD 变量值
      - MYSQL_ROOT_PASSWORD=3sfsdf%nnjgb
      - MYSQL_DATABASE=halo


networks:
  halo_network:

打开绿联云【Docker】应用,可以看到集成了仪表盘、监控、compose管理、容器管理、镜像管理、网络管理等功能。

图片

选择【项目】标签栏,点击【创建】按钮。

图片

在【项目名称】处填入halo,绿联云会自动在共享文件夹下创建容器路径,然后我们将上面提供的代码复制到【Compose配置】处,根据自己的习惯修改端口信息,点击【立即部署】即可。

图片

打开浏览器,通过ip:8090访问halo博客,并进行系统初始化。

图片

3、安装插件

要正确使用Uni-Halo,我们必须先在Halo管理后台安装6个插件,插件目录如下:

- Uni-halo- 评论插件- 搜索插件- 链接管理- 图库管理- 瞬间插件

输入ip:port/console进入管理后台,点击左下角【应用市场】,筛选免费、官方的插件,找到列表中的几个插件并下载。
图片

下载完成后,记得点击右侧的开关,把插件启用。最终插件列表如下,其中live2d看板娘是我自己装的,大家不用抄。

图片

我们需要对Uni-Halo插件进行自定义配置,这些内容最终都会体现在小程序上,比如作者信息、域名、进入画面等,不配置的话就是默认配置,不影响使用。

图片

4、配置用户API

接着,我们需要获取Halo的用户API,点击左下角的用户头像,进入个人中心。

图片

选择 我的-个人令牌,新建令牌,在申请API的时候,需要开通以下权限:插件查看、文章查看、评论查看、链接查看、图库查看、瞬间查看,勾选以后点击提交。

图片

提价以后会给一个Token,这个只显示一次,建议备份好待用。

图片


二、配置小程序

1、注册域名

由于微信小程序平台要求,任何微信小程序都必须使用https服务,同时只允许使用443端口。因此我们的家宽肯定是玩不了了,要满足https和443端口,一般的做法就是去阿里云、腾讯云等云服务提供商注册一个域名,购买SSL证书,购买云主机,然后将域名绑定到云主机上进行备案才可以,时间久不说,花销其实也挺大的。

好在我们可以通过一个取巧的方法来获取免备案的域名,那就是花生壳壳域名。之前的花生壳,不支持通过内网穿透将服务映射到443端口上,只能提供http服务,所有很多人不会选择这个工具。但是最近,花生壳推出了https/443端口映射服务,只需要6元的认证费用,就可以获取一个内网穿透的https/443端口,我们可以通过花生壳把NAS中的各类服务映射出来,实现互联网服务。

图片

第一步: 登录贝锐花生壳官网,下拉选择下载docker镜像v1.0版本。

图片

第二步: 把下载下来的镜像上传到绿联云的个人文件夹中,然后打开docker,按照路径【镜像】-【本地镜像】-【添加镜像】-【从NAS导入】,选择刚上传的phddns镜像压缩包上传。

图片

勾选自动重启,确保NAS重启后花生壳容器也会自动重启。

图片

继续下拉,在网络配置栏,把默认的bridge网络修改为host网络,然后确认启动容器。

图片

第三步: 容器启动成功后,点击容器进入控制台页面,选择【终端】-【新建连接】,把默认命令修改为【/bin/sh】。

图片

保存以后,点击左侧的命令行,在右侧的SSH页面中,我们输入phddns status获取花生壳的SN码。

图片

第四步: 登录花生壳管控平台,注册账号并实名认证,点击最下方的【设备列表】-【添加设备】,把NAS中的SN码填入。

图片

之后点击红框内的蓝字,激活设备。

图片

第五步: 点击左侧的【域名列表】,点击域名管理,这里我们注册并获取免费的花生壳提供的加密壳域名信息,白嫖了1年的免费服务。后期也可以在这里购买自定义域名。

图片

第六步: 点击左侧的【内网穿透】,选择【网站应用】-【Https】,外网域名选择刚才申请的壳域名,内网主机填写NAS的内网ip,内网端口填写Halo的8090(如果自己修改了,就填写修改后的)。

图片

第七步: 打开壳域名测试,可以看到已经顺利将NAS中的服务映射到了互联网端。

图片

2、注册小程序并配置

登录【微信公众平台】,点击最上方的立即注册。

图片

在提供的4个服务中,选择小程序。

图片

下拉,按着流程注册小程序,然后配置小程序的基本信息等内容,完成开发者绑定。这些就按着官方步骤一步步往下就可以了。

图片

整个【小程序信息】、【小程序类目】还是比较复杂的,大家设置好自己小程序账号、名称等,然后类目可以选择备忘录,接着就是花几天时间去进行微信认证(每年300元认证费/个人小程序认证每年30元)、小程序备案。这些流程就不介绍了,网上很多,我们一笔带过。

图片

当我们完成认证后(也可以不认证,先部署体验版),来到【管理】-【开发管理】里,把我们刚才申请的域名填入到request合法域名、uploadFile合法域名、downloadFile合法域名三个空格中去。

图片

3、安装编译程序

首先我们需要安装HBuilder X、微信小程序开发注册两个软件,下载地址我放在网盘里了,以免大家找官方折腾。

百度网盘链接:https://pan.baidu.com/s/12V6yQ-Ike5KMN1Zi0ng63g?pwd=8888 夸克网盘链接:https://pan.quark.cn/s/02f880716e73

图片

下载后,双击exe解压文件,然后安装。首先打开微信小程序开发工具,用注册好小程序的微信扫码登录,然后点击右上角的【齿轮】进入配置页面,选择【安全】页面,打开【服务端口】即可。

图片

然后解压打开HBuilder X,选择【工具】-【设置】-【运行配置】,下拉到【小程序运行配置】-【微信开发者工具路径】这里,把微信开发者工具所安装的目录填入并保存。

图片

4、修改源代码并编译

第一步: 打开HBuilder工具,点击【文件】-【导入】-【从本地目录导入】,选择提供的Uni-halo代码包导入。

第二步: 找到【uni-halo-main】-【config】-【token.config.template.js】这个文件,首先重命名为【token.config.js】,然后在BASE_API内填入我们的域名,域名必须https,然后在systemToken处填入halo的用户API。

第三步: 找到【uni-halo-main】-【mainfest.json】这个文件,点击【基础配置】-【AppID】-【重新获取】,这里需要登录HBuilder的账号,去注册一个并登录、手机号认证就行了。

切换到【微信小程序配置】,把我们注册的小程序APPID填入。

第四步: 点击【运行】-【运行到小程序模拟器】-【微信开发者工具】,随后系统会开始自动安装编译包和插件。

图片

安装完编译包以后,我们继续到【运行】-【运行到小程序模拟器】-【停止微信开发者工具】,然后继续启动进行再次编译,这个时候会提示缺少各种编译器插件,HBuilder X会自动进行下载安装,所以我们只需要等待,然后多点击几次就可以了。

图片

第五步: 当一切顺利运行以后,HBuilder会自动打开微信开发者工具,并提示是否信任作者,我们点击信任并运行。

图片

完成以后,就可以在开发者工具中看到小程序的画面,然后右下角的调试窗口,可以看看有什么错误。

图片

🔻首页

图片

🔻栏目分类

图片

🔻瞬间

图片


三、发布小程序

在预览阶段,我们多点一点,试一试,基本上不会有大问题,如果有异常报错,懂代码的可以自己修复一下,不懂得可以去Uni-Halo项目的issue里查询一下。

完成预览测试后,右键点击【Uni-halo】根目录,选择【发行】-【小程序-微信】

图片

在弹出的页面填入小程序命名,以及小程序AppID,点击发行。这个时候如果Dcloud没手机认证的,会弹出来让大家认证,如果之前按流程走下来的应该已经认证过了。

图片

点击预览,这里可以选择二维码预览(手机),自动预览(PC客户端),然后查看一下小程序是否正常,能否读取到我们halo里的博客,然后图床、瞬间这些插件是不是可以正常打开。

图片

最后,点击右侧的上传按钮,选择覆盖体验版。

图片

代码上传完成以后,可以在小程序管理后台,打开【版本管理】-【开发版本】,这里可以点击蓝色字体扫二维码体验实机,没问题了点击右侧的提交审核。

图片

根据官方提示,在审核的时候尽量描述为个人使用的日志、心得类,上传图片不要有评论、社交类内容,然后等待官方通过接口。

图片

最终小程序发布以后,我们就可以在微信中根据名称检索到了,实际体验如下,和网页版几乎没区别。而且增加了恋爱相册、图库、瞬间等功能。

图片


总结

uni-halo项目还在不断完善优化中,可以说是将Halo博客移植到微信小程序上的最给力的项目了。整个项目部署过程中,最麻烦的其实还是小程序认证、备份,以及域名获取、备案等部分。如果大家自己有域名、vps的,可以自己设置,如果没有又不想折腾的,可以通过文章中介绍的贝锐花生壳进行内网穿透和端口映射,花几块钱解决麻烦事。