使用Termux安装halo博客

安装步骤:

  • 在 proot 内安装 debian

  • 在 debian 内安装好 halo 博客

  • 使用 CloudFlare 进行内网穿透访问

安装系统:

首先安装 Termux,更新软件包

pkg update && pkg upgrade

安装 proot 容器

pkg install proot proot-distro

默认情况下,proot-distro会根据你当前的设备架构选择适合的发行版。例如,如果你的设备是 arm 架构,那么proot-distro安装的发行版会自动适配 arm 架构。

如果你希望安装模拟运行其他的架构,可以查看这篇文章(通常是为了模拟使用 docker,本文安装的容器因为手机架构限制无法使用 docker)

在 proot 安装完成后,我们在容器内安装 linux 系统

你可以选择指定版本,或将系统文件放在 proot-distro 目录下进行安装

proot-distro install debian

安装完成后进入系统

proot distro login debian
apt update

安装halo博客

因为无法使用 1Panel 等工具 (无法使用 docker),所以需要手动配置环境

参考:https://docs.halo.run/category/ 安装指南 /

首先安装好必要的环境:jdk21、mariadb数据库。

安装jdk

获取 jdk 包,放在合适的位置:

# mkdir java && cd java
wegt https://download.oracle.com/java/21/latest/jdk-21_linux-aarch64_bin.tar.gz

解压 jdk 包:

tar -xzvf jdk包名

配置 java 环境:

vim /etc/profile

在 profile 下方添加内容:

export JAVA_HOME=/usr/jdk21/jdk-21.0.4

export PATH=$JAVA_HOME/bin:$PATH

输入 java 查看安装是否成功

安装mariadb

apt install mariadb-server
service mariadb start

此时直接进入数据库后执行(把 YourStrongPass 换成你的密码):

mariadb
ALTER USER 'root'@'localhost' IDENTIFIED BY 'YourStrongPass';
FLUSH PRIVILEGES;

退出后用密码验证登录

mariadb -uroot -p

有时候,halo2 博客未自行创建数据库,而是启动时报错,需要手动创建。

进入数据库:

CREATE DATABASE halo_db
CHARACTER SET utf8mb4
COLLATE utf8mb4_general_ci;

安装halo博客

我们不推荐直接使用系统 root 用户来运行 Halo。如果你需要直接使用 root 用户,请跳过这一步。

创建一个名为 halo 的用户(名字可以随意)

创建新的系统用户

useradd -m halo

为 halo 用户创建密码

passwd halo

登录到 halo 账户

su - halo

创建存放运行包的目录,这里以 ~/app 为例

mkdir ~/app && cd ~/app

下载运行包

wget https://dl.halo.run/release/halo-2.20.0.jar -O halo.jar

以下是官方维护的下载地址:

https://download.halo.run

https://github.com/halo-dev/halo/releases

创建 工作目录

mkdir ~/.halo2 && cd ~/.halo2

创建 Halo 配置文件

vim application.yaml

将以下内容复制到 application.yaml 中,根据下面的配置说明进行配置。

server:
  # 运行端口
  port: 8090
spring:
  # 数据库配置,支持 MySQL、MariaDB、PostgreSQL、H2 Database,具体配置方式可以参考下面的数据库配置
  r2dbc:
    url: r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE
    username: admin
    password: 123456
  sql:
    init:
      mode: always
      # 需要配合 r2dbc 的配置进行改动
      platform: h2
halo:
  caches:
    page:
      # 是否禁用页面缓存
      disabled: true
  # 工作目录位置
  work-dir: ${user.home}/.halo2
  # 外部访问地址
  external-url: http://localhost:8090
  # 附件映射配置,通常用于迁移场景
  attachment:
    resource-mappings:
      - pathPattern: /upload/**
        locations:
          - migrate-from-1.x

数据库配置说明:

参数名

描述

spring.r2dbc.url

数据库连接地址,详细可查阅下方的 配置对应关系

spring.r2dbc.username

数据库用户名

spring.r2dbc.password

数据库密码

spring.sql.init.platform

数据库平台名称,支持 postgresql、mysql、mariadb、h2

配置对应关系:

链接方式

链接地址格式

spring.sql.init.platform

PostgreSQL

r2dbc:pool:postgresql://{HOST}:{PORT}/{DATABASE}

postgresql

MySQL

r2dbc:pool:mysql://{HOST}:{PORT}/{DATABASE}

mysql

MariaDB

r2dbc:pool:mariadb://{HOST}:{PORT}/{DATABASE}

mariadb

H2 Database

r2dbc:h2:file:///${halo.work-dir}/db/halo-next?MODE=MySQL&DB_CLOSE_ON_EXIT=FALSE

h2

HOST:数据库服务地址,如 localhost

PORT:数据库服务端口,如 3306

DATABASE:数据库名称,如 halo,需要提前创建,以 MySQL 为例:

create database halo character set utf8mb4 collate utf8mb4_bin;

不推荐在生产环境使用默认的 H2 数据库,这可能因为操作不当导致数据文件损坏。如果因为某些原因(如内存不足以运行独立数据库)必须要使用,建议按时备份数据。

为了保持部署流程的简洁,此文档仅提供了必要的配置示例,完整的配置选项列表可查阅:配置说明

配置完成之后,保存即可。

测试运行 Halo

cd ~/app && java -Dfile.encoding=UTF-8 -jar halo.jar --spring.config.additional-location=optional:file:$HOME/.halo2/

如果没有观察到异常日志,即可尝试访问 Halo

打开 http://ip: 端口号 即可跳转到初始化页面。

关于如何将 halo 作为系统服务,以及如何更新系统可以查看上方官方文档

配置内网穿透

如果需要配置域名访问,建议先配置好反向代理以及域名解析再进行初始化。但在这里是使用 CloudFlare 的免费内网穿透服务

参考:https://www.bilibili.com/video/BV1H4421X7Wg

访问并注册:https://www.cloudflare.com/zh-cn/

首先将域名迁移到 CloudFlare 下解析,这里用腾讯云的域名进行演示

在 CloudFlare 官网右上角点击添加域,输入你的 dns,选择 free 服务,点击继续后在下方更改名称服务器内找到

类似

NS xxxx.ns.cloudflare.com

NS xxxx.ns.cloudflare.com

随后在腾讯云的控制台 -> 我的域名 -> 更多 -> 修改 DNS 服务器 -> 自定义 dns 修改为上方两条

修改完成返回 CloudFlare,等待完成更改后,域名就可以在 CloudFlare 使用了

CloudFlare 左侧列表 Zero Trust 处,在一些内容填写完后,打开 Networks->Tunnels,添加一条隧道,随后 CloudFlare 会根据你的操作环境给出隧道安装方法,在隧道激活后,可以尝试使用域名访问自己的博客了!


使用Termux安装halo博客
https://blog.yamds.cafe/archives/termux-install-halo
作者
Yamds
发布于
2024年11月02日
更新于
2026年03月05日
许可协议