我的自建博客之旅04之Halo

我的自建博客之旅04之Halo

Halo是我无意间发现的一款博客框架,如果你讨厌Hexo,Vuepress等静态框架本地编辑,构建部署等方式,如果你想要一款一次搭建,前台是博客,后台是文章维护,并且支持各种定制化折腾的博客框架,可能Halo会比较适合你。

因为我个人还是比较偏技术,所以最后选用了Hexo,为了省点服务器资源,这款博客服务也就停了,没法预览了,就截取几张图预览预览。

搭建

依旧采用docker-compose模式搭建,Halo由服务和数据库构成,我数据库依旧依据自己的习惯采用了pg:

  1. 编写docker-compose.yml文件:
yaml 复制代码
version: "3"
services:
  halo:
    image: halohub/halo:2.12  # 注意,halo每个版本都是单独发布的,截止2024年2月27日是2.11
    container_name: halo
    restart: always
    depends_on:
      halodb:
        condition: service_healthy
    volumes:
      - ./halo:/root/.halo2   # 持久化halo服务数据,将数据存储在本配置当前目录的halo文件夹里面
    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:postgresql://halodb/halo
      - --spring.r2dbc.username=halo
        # PostgreSQL 的密码,请保证与下方 POSTGRES_PASSWORD 的变量值一致。
      - --spring.r2dbc.password=openpostgresql
      - --spring.sql.init.platform=postgresql
      # 外部访问地址,请根据实际需要修改,也就是自己搭建后准备用来访问的地址
      - --halo.external-url=https://xxx:18888/
  halodb:
    image: postgres:15.4    # 这一块一定要慎重,写死版本最好,我之前一直用latest最新版,突然某个版本一直无法启动
    container_name: halodb
    restart: always
    ports:
      - "5432:5432"   # 数据库访问端口,建议可以不暴露出去
    volumes:
      - ./db:/var/lib/postgresql/data     # 持久化数据库数据,将数据存在当前目录的db文件夹里面
    healthcheck:
      test: [ "CMD", "pg_isready" ]
      interval: 10s
      timeout: 5s
      retries: 5
    environment:
      - POSTGRES_PASSWORD=openpostgresql
      - POSTGRES_USER=halo
      - POSTGRES_DB=halo
      - PGUSER=halo
  1. 启动服务

在你配置docker-compose.yml的目录里面执行:

bash 复制代码
docker-compose up -d   # 启动应用,默认读取名为docker-compose.yml或docker-compose.yaml的文件
bash 复制代码
docker-compose ps  # 命令查看已经启动的容器。

docker-compose stop # 停止已经启动的容器。

docker-compose down # 命令停止并清除所有已经启动的容器。

也可以利用Portainer界面化docker管理平台来部署,它是一个相当于把我们针对docker或者docker compose的命令全部界面化的项目,有兴趣的可以看看我的docker服务系列文章01.Portainer-容器界面化管理工具

  1. 初始化

假设我们服务的端口映射时用的8090。我们启动Halo后,在首次通过ip:8090访问网站的时候会自动跳转到初始化页面,你需要完成这个步骤才能正常使用 Halo。

表单项说明:

  1. 站点名称:网站的名称,将会显示在浏览器标签页上。
  2. 邮箱:初始管理员的邮箱地址。
  3. 用户名:初始管理员的用户名。
  4. 密码:初始管理员的密码。
  5. 确认密码:重复输入密码以验证是否匹配。

输入完成之后点击初始化按钮即可完成初始化,初始化完成之后,将会跳转到登录页面,输入刚才设置的用户名和密码即可登录。

  • 博客访问地址:IP:8090

  • 博客后台访问地址:IP:8090/console

注意:

  1. 大家上面脚本里面可以看到我数据库和halo服务镜像都用的固定版本,halo是官方要求的,因为他们按照版本发布新版。数据库是因为我之前使用latest标签的镜像,有一次因为某个服务升级了,导致halo无法通过数据库健康检测,所以建议数据库独立且指定版本。
  2. 端口这一块,如果自己是阿里云腾讯云等等,问题不大,不管自己设置的映射是80还是8090,策略组放行即可。如果家庭宽带,首先得有外网ip,然后DMZ主机或者端口映射,如果家庭宽带不是专线,无法使用80,443等几个端口。

使用

建议先安装应用市场插件[2.10版本之前]

此条针对2.10版本之前的,2.10版本后内置了。

以前老版本插件需要每次去官网找插件,然后安装,现在有人开发了市场插件,相当于将官网插件市场移植到了自己定位博客服务里面。

应用市场插件:www.halo.run/store/apps/...

后台管理

访问:IP:8090/console,输入初始化的管理员账号密码进入后台。

后台是我们整个博客的后台管理系统。

文章

我们博客的核心,包括文章的新增,编辑以及删除,发布等等,还有文章标签的管理,分类的管理全部在这。

这边需要注意,默认编辑器是富文本编辑器,不支持Markdown,需要安装插件,我用的插件有ByteMD以及Vditor Markdown

页面

博客内的一些单页面,例如关于,音乐,友情链接等等页面,如果主题支持,需要自己构建页面。

评论

博客自带评论框架插件的审核管理功能。

附件

资源管理功能,例如图片,视频等等。

瞬间

类似于博客通知或者每日心情,需要安装瞬间插件,并且主题要支持。

链接

一些友情链接等等第三方链接地址配置,有些主题功能需要。

主题

自己可以安装多款主题,这边就是主题的管理,可以针对主题进行配置,删除,修改,调整,预览等等。默认主题是Earth,我自己使用的是Hao。

菜单

菜单配置,一般主题内可能会有多种支持,例如Hao主题支持设置footer菜单。

插件

插件管理界面,可以开启关闭插件。

用户

用户管理。

设置

网站基本设置,例如站点名称,logo等等。还有文章,seo,用户,评论,通知等等设置。

概览

系统概览信息,版本,时间,环境信息等等。

备份

网站数据备份等等。

应用市场

1.10版本后边内置的应用市场,可以直接进入去安装插件和主题。

hao主题

这一块可配置项太多了,还是大家自己边预览边摸索吧,这是一个细活。

我们可以点击右上角主题预览,然后再预览界面点击配置即可开启桌面,手机,平板预览配置。

相关推荐
lsjweiyi21 小时前
极简AI工具箱网站开源啦!
opencv·开源·微信支付·支付宝支付·百度ai·极简ai工具箱·ai图像处理
开源社1 天前
一场开源视角的AI会议即将在南京举办
人工智能·开源
FreeIPCC1 天前
谈一下开源生态对 AI人工智能大模型的促进作用
大数据·人工智能·机器人·开源
海害嗨1 天前
阿里巴巴官方「SpringCloudAlibaba全彩学习手册」限时开源!
学习·开源
生命是有光的1 天前
【开源风云】从若依系列脚手架汲取编程之道(八)
开源
HuggingFace1 天前
Halo 正式开源: 使用可穿戴设备进行开源健康追踪
开源·健康追踪
时光追逐者1 天前
.NET 9 中 LINQ 新增功能实操
开发语言·开源·c#·.net·.netcore·linq·微软技术
檀越剑指大厂1 天前
Linux本地部署开源项目OpenHands基于AI的软件开发代理平台及公网访问
linux·人工智能·开源
胜天半子_王二_王半仙2 天前
c++源码阅读__ThreadPool__正文阅读
开发语言·c++·开源
FIT2CLOUD飞致云2 天前
案例研究|阿特斯的JumpServer分布式部署和多组织管理实践
运维·开源·堡垒机·jumpserver