本文主要记录如何基于Halo开源方案搭建属于自己的私人博客。选用Halo的主要原因:

  • 开源, 不花钱的东西为啥不用呢。
  • 简单好用, 整个部署之前准备好, 只需要几行代码, 几分钟配置就可以了。
  • 模版多, 模版仓库有大量网友制作的模版, 开箱即用。

一、前期准备

在正式开始前, 需要准备一台服务器(物理服务器或云服务器都可以)、一个域名(冷门域名特别便宜, 有的可以首年6块)、远程工具(选配, 能直接操作服务器的话当然就不需要了)、公网IP。
备注:

  1. 关于服务器可以选择阿里云腾讯云等云服务, 想办法嫖个学生资格外加新用户,价格特别便宜;也可以用换代下来的旧台式或住笔记本电脑(建议旧笔记本电脑, 笔记本电脑功耗低, 并且笔记本电脑的电池可以充当UPS不间断电源), 安装一个PVE(Proxmox Virtual Environment)系统就可以在家里开机房了。
  2. 关于域名也可以在腾讯云和阿里云购买, 特别冷门的域名价格最便宜的可以首年6块, 常规一点的一般也就20-50块钱一年(这个常规也是建立在比较冷门的基础上的, 比如.xyz后缀的域名、自己名字全拼之类的。当然,如果你叫张三、张伟这类名字的话当我没说)。
  3. 公网IP这玩意, 如果使用的是云服务器一般会默认分配一个, 但如果是家用网络, 那就需要给宽带商打电话要了, 目前电信和联通都是可以提供动态公网IP的(至于方法说辞嘛, 某度上边一抓一大把, 自行选择、各显神通), 但如果是移动宽带, 当我没说(移动家用宽带完全不支持公网IP)。

二、部署Halo

  1. 登陆云服务器
略(这玩意不会别说从事的IT相关工作)
  1. 安装Docker
关于安装Docker呢, 这里就不详细讲述了, 可以参考一下链接:

https://www.runoob.com/docker/docker-tutorial.html

  1. 安装MySQL
上一步我们安装了Docker, 现在我们可以用Docker直接安装MySQL, 具体教程如下:

https://www.runoob.com/docker/docker-install-mysql.html
  1. 配置目录
mkdir ~/.halo && cd ~/.halo
  1. 配置文件
vim application.yaml

配置文件内容

server:
  port: 8090  #外部访问端口
  # Response data gzip.
  compression:
    enabled: false
spring:
  datasource:
    # H2 数据库信息:
    #driver-class-name: org.h2.Driver
    #url: jdbc:h2:file:~/.halo/db/halo
    #username: ahdi190
    #password: D21j0jJF 
 
    # MySQL 数据库信息
    driver-class-name: com.mysql.cj.jdbc.Driver
    ## 数据库地址写上边MySQL的Docker容器IP或当前Docker宿主机的内网IP
    url: jdbc:mysql://192.168.22.33:3306/halo_db?characterEncoding=utf8&useSSL=false&serverTimezone=Asia/Shanghai&allowPublicKeyRetrieval=true
    #数据库用户名(推荐修改)
    username: root
    #数据库密码(推荐修改)
    password: 123456 
halo:
  admin-path: admin #后台管理路径,可以修改
  # memory or level
  cache: memory
  1. 拉取镜像
docker pull halohub/halo:1.6.0
  1. 创建容器
docker run -it -d --name halo -p 8090:8090 -v ~/.halo:/root/.halo --restart=unless-stopped halohub/halo:1.6.0

备注: 完成以上步骤之后, Halo的部署就可以算是全部完成, 剩下的就只需要访问Web页面进行配置

三、配置Halo

通过 http://ip:8090 访问博客,我们将进入配置页面:

halo_0001.jpg

填入自己的各种信息之后点击安装即可。然后系统会自动跳转至登陆页:

halo_0002.jpg

输入一个页面填写的用户名及密码即可完成登陆进入系统后台。

四、配置外网访问

这一步分两种, 云服务器和家用电脑公网映射。

云服务器

云服务的配置非常简单, 只需要进入服务器的安全组中配置允许8090端口出入网流量。

家用内网电脑

这个就比较繁琐了, 常用的有两种解决方案, 一种是各家公司提供的内网穿透(花生壳之类), 另一种是通过上边说到的动态公网IP访问。相较而言, 现成的内网穿透方案配置简单, 但一般限制带宽和总流量; 动态公网IP配置偏繁琐, 但不限制总流量, 带宽根据家用宽带而定(通常家用宽带如果下行500MB, 上行一般对应的是50MB)。此处只提一下动态公网IP大概流程。

  1. 拨打电信/移动客服电话, 要求光猫路由改桥接。
  2. 联系片区宽带负责人上门修改, 最终使得拨号上网和路由功能通过路由器完成, 光猫仅负责电信号与光信号之间的转换。
  3. 完成上述两步之后, 路由器就拥有了外网可以访问的真实公网IP, 剩下的只需要登陆路由器管理页, 添加端口转发记录。

注意: 以上步骤风险较大, 不建议自行操作。特别是光猫改桥接、路由器拨号上网, 改完之后光猫的网络接口和WiFi都不能直接使用。室内所有网络必须是路由器拨号之后的网络才能正常使用。完成之后路由器及开放端口都将直接暴露在公网之上, 随时有被攻击的风险。同时, 由于家庭宽带非商用, 部分端口由运营商封禁(如: 80、8080、443等), 不可使用常规端口。

五、域名解析(选配)

上述步骤顺利完成之后, 个人博客网页就可以通过公网IP自由访问了。但使用过程中不太可能背IP地址, 此时就可以通过前期准备的域名配置域名解析了。如果是云服务器, 直接在购买域名的平台配置相应的主机解析记录即可, 如图:
halo_0003.jpg

如果使用的是家用宽带内网穿透, 只需要把解析类型A 换成CNAME, 记录值换成内网穿透供应商提供的具体网络地址即可。如果是家用宽带动态IP, 则需要配置DDNS动态解析, 具体操作方法很多, 部分路由器自带相应插件, 也可以直接在服务器上定时执行一段shell脚本, 贴上动态IP配置腾讯云DDNS(阿里云同理):

https://blog.csdn.net/weixin_43978546/article/details/113222378

以上就完成了Halo个人博客的全部搭建, 具体美化, 内容填充就属于个人爱好范畴了, 此处不在赘述。 记得网站备案哟!特别简单。