【hexo配置】1panel部署、定时更新hexo博客

一直喜欢用1panel,想发挥香港服务器的低延迟优势,同时又喜欢hexo,于是自己写个脚本实现自动更新。

先安装git:

1
sudo apt install git-all

然后在网站那里建立一个静态网站

现在目录中 git clone 一下你的hexo仓库

记得把 index.html 所在的根目录文件挪到index文件夹里,可以先访问一下试试

然后就在定时任务里加入以下内容:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
#!/bin/bash

# ================= 配置区域 =================
BLOG_DIR="/opt/1panel/www/sites/blog/index" # 博客根目录(包含 .git 文件夹)
GIT_REMOTE="origin" # 远程仓库名称
GIT_BRANCH="main" # 分支名(也可能是 master)
# 可选:构建命令(如 Hugo / Hexo)
# BUILD_CMD="hugo"
# BUILD_CMD="hexo generate"
# ===========================================

# 输出带时间戳的信息
log() {
echo "[$(date '+%Y-%m-%d %H:%M:%S')] $1"
}

log "========== 开始更新博客 =========="

# 检查目录是否存在
if [ ! -d "$BLOG_DIR" ]; then
log "错误:博客目录 $BLOG_DIR 不存在,脚本退出。"
exit 1
fi

# 进入博客目录
cd "$BLOG_DIR" || { log "错误:无法进入目录 $BLOG_DIR"; exit 1; }

# 确认是 Git 仓库
if [ ! -d ".git" ]; then
log "错误:当前目录不是 Git 仓库,请先执行 git clone。"
exit 1
fi

# 解决 Git 的 dubious ownership 问题(信任该目录)
git config --global --add safe.directory "$BLOG_DIR"

# ---------- 关键修改:强制同步远程仓库 ----------
log "拉取远程最新代码(fetch)..."
git fetch "$GIT_REMOTE" "$GIT_BRANCH"
if [ $? -ne 0 ]; then
log "错误:git fetch 失败,请检查网络或仓库权限。"
exit 1
fi

log "强制重置本地分支到远程最新提交(reset --hard)..."
git reset --hard "$GIT_REMOTE/$GIT_BRANCH"
if [ $? -eq 0 ]; then
log "本地仓库已强制同步到远程 $GIT_BRANCH 分支的最新状态。"
else
log "错误:git reset 失败。"
exit 1
fi
# ---------------------------------------------

# 如果有构建命令,则执行
if [ -n "$BUILD_CMD" ]; then
log "执行构建命令:$BUILD_CMD"
eval "$BUILD_CMD"
if [ $? -eq 0 ]; then
log "构建成功。"
else
log "错误:构建失败。"
exit 1
fi
fi

log "========== 更新完成 =========="

记得把博客根目录改成自己的

然后就行啦,更新时间我自己设得是 30min,短一点也没啥问题


【hexo配置】1panel部署、定时更新hexo博客
https://www.0xff.ink/posts/2691857721/
作者
Frank9527
发布于
2026年4月18日
许可协议