前言
我很久之前在Qexo的项目提出了针对Gitea的支持,没想到Qexo作者采纳并很快完成了该功能的模块,这里给作者点赞。 之前一直在寻找hexo的私有化部署,尝试过阿里云的云效流水线、华为云的CodeArts流水线,以及最开始的Github的托管方式,效果不是太理想。 最终选择在Gitea上托管Hexo博客,并使用Qexo写作触发Gitea Actions来完成hexo的部署。
准备工作
- 云服务器或者自托管
- 部署好Gitea和gitea actions
- 一台电脑 (当然手机也可以)
- SSH的客户端(PuTTy\XTerminal)
Docker部署Qexo
这里使用1panel面板进行部署,可以选择命令行或者在1panal容器上面创建编排。

使用docker-compose进行部署
1version: '3.8'
2
3services:
4 qexo:
5 image: abudulin/qexo:latest
6 container_name: qexo
7 restart: unless-stopped
8 ports:
9 - "8000:8000"
10 environment:
11 WORKERS: 4
12 THREADS: 4
13 TIMEOUT: 600
14 volumes:
15 - ./db:/app/db
也可以使用docker命令行进行部署
1docker run -d \
2 --restart=unless-stopped \
3 -v $(pwd)/db:/app/db \
4 -p 8000:8000 \
5 -e TIMEOUT=600 \
6 --name="qexo" \
7 abudulin/qexo:latest
其中 $(pwd)/db 为数据存储目录,8000 是访问端口, 你可以改为需要的地址
Qexo安装
Docker安装完成后,打开yousite:8000 进行初始化安装(如无法正常访问可以去看一下防火墙策略,如果没有添加对应的规则即可)

设置登录账号密码,点击下一步

设置你的gitea的托管地址和gitea的密钥、托管仓库和存放hexo的分支。gitea的密钥获取下面讲到。

这样就初始化完成。

Qexo管理与写作
Qexo的管理页面也是相当简洁。

Qexo的写作页面,支持Markdown和可视化写作

Gitea密钥获取
通过在Gitea创建Token拿到新的令牌,只需要赋予repo的读写权限即可。

Gitea 自动部署
在仓库根目录下创建 .gitea/workflows/main.yaml 配置文件写法和GitHub的文件差不多。
该为Demo测试,需要更多部署案例可以自行修改。
1name: Gitea Actions Hexo
2on: [push]
3jobs:
4 Explore-Gitea-Actions:
5 runs-on: ubuntu-latest
6 env:
7 TZ: Asia/Shanghai
8 RUNNER_TOOL_CACHE: /toolcache
9 container:
10 volumes:
11 - act-toolcache:/opt/hostedtoolcache
12 steps:
13 - name: 检查源仓库分支
14 uses: https://gitea.com/actions/checkout@v4
15 with:
16 ref: main
17 fetch-depth: |
18 source
19
20 - name: 恢复文件为提交修改时间
21 run: |
22 find source -name '*.md' | while read file; do
23 touch -d "$(git log -1 --format="@%ct" "$file")" "$file"
24 done
25
26 - name: 切换淘宝npm源
27 run:
28 npm config set registry https://registry.npmmirror.com/
29
30 - name: 安装依赖
31 run:
32 npm install --save
33
34 - name: 生成静态
35 run:
36 npm run clean && npm run build
