使用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

安装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.fun/archives/termux-install-halo
作者
Yamds
发布于
2024年11月02日
更新于
2025年03月26日
许可协议