前言

我很久之前在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进行部署

 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 进行初始化安装(如无法正常访问可以去看一下防火墙策略,如果没有添加对应的规则即可)

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测试,需要更多部署案例可以自行修改。

 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 

Gitea