跳过正文

将博客迁移到Github->CloudFlare Pages

·2375 字

今天自建的gitlab runners 在拉取alpine镜像之后,尝试更新软件包的时候超时了…

WARNING: updating and opening https://dl-cdn.alpinelinux.org/alpine/v3.22/community: operation timed out

网络环境是真的差劲,十分无语,准备博客战略大转移。😅话不多说直接开始。

Github Pages
#

1. 添加 .github/workflows/hugo_deploy.yml 文件
#

AI一下简简单单,贴上来供参考:

name: Deploy Hugo Site to GitHub Pages # 命名
on: # 触发条件:
  push: # 1. 当代码被推送到 'main' 分支时
    branches:
      - main  # 如果你的主分支是 'master',请改成 'master'
  workflow_dispatch: # 2. 允许你从 GitHub 仓库的 "Actions" 标签页手动运行此工作流
  
permissions: # 权限设置:
  contents: read
  pages: write      # 允许写入 pages
  id-token: write   # 允许 OIDC 认证

jobs: # 任务(Jobs)
  build:
    runs-on: ubuntu-latest  # 使用最新的 Ubuntu 运行环境
    steps:
      - name: Checkout # 第一步:检出你的代码
        uses: actions/checkout@v4
        with:
          submodules: recursive  # <-- 关键!会自动拉取主题子模块
      - name: Setup Hugo # 第二步:安装和设置 Hugo
        uses: peaceiris/actions-hugo@v3 # 常用action
        with:
          hugo-version: '0.151.1' # <-- 把这里改成你同学的 Hugo 版本
          extended: true          # 如果你的主题需要 SASS/SCSS,请保持 true
      - name: Setup Pages # 第三步:设置 GitHub Pages
        id: pages
        uses: actions/configure-pages@v5
      - name: Build Hugo Site # 第四步:构建 Hugo 网站
        run: hugo --minify # 如果需要github.io的链接这里需要加上 --baseURL "${{ steps.pages.outputs.base_url }}"
      - name: Upload Artifact # 第五步:打包构建产物
        uses: actions/upload-pages-artifact@v3
        with:
          path: ./public # Hugo 默认的构建输出目录

  deploy:  # 部署任务
    runs-on: ubuntu-latest
    needs: build # 确保 'build' 任务成功完成后才运行
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }} # 输出部署后的 URL
    steps:
      - name: Deploy to GitHub Pages # 部署到 GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4

2. 提交到 Github
#

这里没啥好说的push就完事了(这个github有点喜欢掉登录

3. 在 Github 中配置
#

在仓库中点击上方的 ⚙️Settings -> Pages -> Build and deployment -> Github Actions

Custom domain 中,填入你自己的域名,需要强制https的话可以打开下方的 Enforce https,点击 Save 保存

4. 在 Cloudflare 中配置
#

  • 如果你需要挂在你的顶点域名上比如 xxxx.com 上,则在域的DNS配置下添加四个 A 记录,将 @ 解析到github提供的四个ip地址处
  • 如果你需要挂在你的二级域名比如 blog.xxxx.com 上,则在域的DNS配置下添加一个CNAME记录,将 blog 解析到具体的 <>.github.io 处即可

详见下方链接

🐱Managing a custom domain for your GitHub Pages site - GitHub Docs

5. 部署完成!
#

尝试再次提交,这次 Action 应该就构建成功了,可以访问试试!

发现国内访问失效了(唉Github

所以我又换了…

CloudFlare Pages
#

🐧萌新如何优雅地使用Hugo和大善人搭建图床和博客 - 资源荟萃 - LINUX DO

没办法,最后投靠大善人。☁️ 我又来化缘了

1. github actions 配置记得先给他注释了
#

不要再在github占用资源了

2. Cloudflare 设置
#

这应该是最简单的一个了

左侧选择 计算与AI -> Works & Pages -> Pages -> 创建链接到Git -> Github

接下来Github授权环节,记得只选一个blog仓库就好了

取一个名字,无所谓,选好分支,框架预设 选择 Hugo

点击环境变量 -> 添加变量 -> 添加一个变量名称叫 HUGO_VERSION - 0.151.1 这里填入适合你的Hugo版本 -> 保存并部署

然后等他拉库,然后就可以添加自定义域名了,如果域名托管在大善人这,他会自动帮你把DNS的CNAME记录填好,真是方便🥰

OK,大功告成!

图床配置🖼️
#

直接来到大善人家里,来薅一个CloudFlare R2储存桶,每月有10G免费额度

创建R2储存桶
#

存储和数据库->R2对象存储->概述->创建储存桶->输入储存桶名字->创建储存桶

配置公开访问
#

进入储存桶->选择 “设置” ->自定义域->输入自己的二级域名->点击修改DNS,他会自动添加一个CNAME记录

开源 CloudFlare ImgBed 项目部署
#

1. Fork项目
#

🐱CloudFlare ImgBed 项目

2. 创建CloudFlare Pages
#

  1. 登录 Cloudflare Dashboard
  2. 选择左侧菜单的 “计算和AI” -> “Workers & Pages”
  3. 点击 “创建应用程序”
  4. 在最下方 Looking to deploy Pages? 选择 “Get started”
  5. 在 “导入现有 Git 存储库” 处点击 “开始使用”
  6. 给CloudFlare权限访问你的Fork仓库
  7. 构建命令 npm install,其他都可以默认
  8. 点击 “保存并部署”
  9. 等待首次部署完成(需要2-3min😋

3. 配置储存桶R2
#

  1. 进入imgbed这个pages
  2. 设置->绑定->R2储存桶
  3. 变量名称填写 img_r2 ,R2储存桶选择已经创建的那个,保存
  4. 选择自定义域名->添加一个二级域名,用来访问前端

4. 配置数据库D1
#

创建 D1 数据库
#
  1. 在 Cloudflare Dashboard 中选择 “存储和数据库”
  2. 点击 “D1 SQL 数据库”
  3. 点击 “创建数据库”
  4. 输入数据库名称:img_d1(建议使用此名称)
  5. 点击 “创建”
初始化 D1 数据库
#
  1. 创建完成后,点击进入数据库详情页
  2. 选择 “控制台” 选项卡
  3. 在 SQL 输入框中逐段粘贴并执行初始化语句(见项目仓库(尾缀CloudFlare-ImgBed/blob/main/database/init.sql))
  4. 点击 “执行”
绑定 D1 到项目
#
  1. 返回您的 Pages 项目
  2. 选择 “设置” → “绑定”
  3. 点击 “添加” → “D1 数据库”
  4. 填写绑定信息:
    • 变量名称img_d1(必须是这个名称)
    • D1 数据库:选择刚创建的数据库
  5. 点击 “保存”

5. 重新部署Pages
#

  1. 进入项目的 “部署” 页面
  2. 找到最新的部署记录
  3. 点击右侧的 “…” 菜单
  4. 选择 “重试部署”
  5. 等待部署完成

CF ImgBed 项目生态 - Obsidian 上传插件
#

感谢开源!! 🐱fantasy-ke/obsidian-cf-imgbed at 1.0.4

Obsidian 安装本地插件
#

  1. 找到该工作区的 .obsidian 文件夹
  2. 在其中创建 plugins 文件夹
  3. 将下载的本地插件 .zip 文件解压,将整个文件夹复制到该文件夹下
  4. 重启 Obsidian
  5. Enjoy Your Plugins!

简单配置
#

  1. 点击插件中的小齿轮⚙️
  2. 填写url&upload_key这两个必要参数(url格式:https://your.domain 后面不要加 /upload_key 使用正常POST上传的密钥即可,不用生成API Key)
  3. 选择上传途径 CF R2
  4. 其他自己随便调
  5. 可以试试上传啦!
Haley
作者
Haley