前言

我很久之前在Qexo的项目提出了针对Gitea的支持,没想到Qexo作者采纳并很快完成了该功能的模块,这里给作者点赞。
之前一直在寻找hexo的私有化部署,尝试过阿里云的云效流水线、华为云的CodeArts流水线,以及最开始的Github的托管方式,效果不是太理想。
最终选择在Gitea上托管Hexo博客,并使用Qexo写作触发Gitea Actions来完成hexo的部署。

准备工作

  • 云服务器或者自托管
  • 部署好Gitea和gitea actions
  • 一台电脑 (当然手机也可以)
  • SSH的客户端(PuTTy\XTerminal)

Docker部署Qexo

Qexo官方文档

Qexo Github仓库

这里使用1panel面板进行部署,可以选择命令行或者在1panal容器上面创建编排。

Qexo

使用docker-compose进行部署

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
version: '3.8'

services:
qexo:
image: abudulin/qexo:latest
container_name: qexo
restart: unless-stopped
ports:
- "8000:8000"
environment:
WORKERS: 4
THREADS: 4
TIMEOUT: 600
volumes:
- ./db:/app/db

也可以使用docker命令行进行部署

1
2
3
4
5
6
7
docker run -d \
--restart=unless-stopped \
-v $(pwd)/db:/app/db \
-p 8000:8000 \
-e TIMEOUT=600 \
--name="qexo" \
abudulin/qexo:latest

其中 $(pwd)/db 为数据存储目录,8000 是访问端口, 你可以改为需要的地址

Qexo安装

Docker安装完成后,打开yousite:8000 进行初始化安装(如无法正常访问可以去看一下防火墙策略,如果没有添加对应的规则即可)

Qexo

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

Qexo

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

Qexo

这样就初始化完成。

Qexo

Qexo管理与写作

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

Qexo

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

Qexo

Gitea密钥获取

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

Gitea

Gitea 自动部署

在仓库根目录下创建 .gitea/workflows/main.yaml 配置文件写法和GitHub的文件差不多。

该为Demo测试,需要更多部署案例可以自行修改。

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
name: Gitea Actions Hexo
on: [push]
jobs:
Explore-Gitea-Actions:
runs-on: ubuntu-latest
env:
TZ: Asia/Shanghai
RUNNER_TOOL_CACHE: /toolcache
container:
volumes:
- act-toolcache:/opt/hostedtoolcache
steps:
- name: 检查源仓库分支
uses: https://gitea.com/actions/checkout@v4
with:
ref: main
fetch-depth: |
source

- name: 恢复文件为提交修改时间
run: |
find source -name '*.md' | while read file; do
touch -d "$(git log -1 --format="@%ct" "$file")" "$file"
done

- name: 切换淘宝npm源
run:
npm config set registry https://registry.npmmirror.com/

- name: 安装依赖
run:
npm install --save

- name: 生成静态
run:
npm run clean && npm run build

Gitea