自动化版图床保姆级搭建教程:B2 / 又拍云 + CF+GitHub

baiyakai 2023-3-11 428 3/11

自动化版图床保姆级搭建教程:B2 / 又拍云 + CF+GitHub

 

那图床搭好了,GitHub 有啥用呢?

之前阿斌使用的 GitHub+jsDelivr(已被墙),所有照片都在 GitHub 上,阿斌就想有没有直接将 GitHub 同步到 B2,Github 不缺大佬,还真有!

自动化版图床保姆级搭建教程:B2 / 又拍云 + CF+GitHub

一目了然流程图

 

下面就跟着阿斌一起来操作吧!真可谓一劳永逸!

准备资源

PS:已有账号的,忽略注册,直接登录即可

  • 一个域名(可以修改 DNS,不作为主要域名)
  • Backblaze:注册账号,不能访问,富强试试
  • Cloudflare:注册账号
  • GitHub:注册账号

教程

Backblaze 设置

  1. 创建一个桶(Bucket),配置如下,点击创建即可。
    名称(Bucket Unique Name):任意英文
    Files in Bucket are:Public
    Default Encryptio:Disable
    
    HTML
  2. 上传一张照片到桶里,点击照片即可查看图片信息,复制友好URL,格式如下:
    https://f004.backblazeb2.com/file/<桶名称>/<文件夹>/<文件名称>
    域名(后面会用到):f004.backblazeb2.com
    
    HTML
  3. 桶设置(Bucket Settings)- Bucket Info:{“cache-control”:”max-age=720000"} 

CloudFlare 设置

  1. 添加站点,按步骤操作,去域名厂商修改 DNS(阿里云:控制台 - 域名 - 域名列表 - 域名后的 管理 - DNS 管理 - DNS 修改 - 修改 DNS 服务器),生效时间 24-48 小时,设置完过一段时间去 ClouFlare 检验一下,通过则表示设置成功。
  2. 在域名的设置页面,点击左侧:SSL/TLS,加密模式:完全(严格)

    自动化版图床保姆级搭建教程:B2 / 又拍云 + CF+GitHub

     

  3. 点击左侧:DNS,添加一条 CNAME 记录,名称:任意,内容:Backblaze图片的域名

    自动化版图床保姆级搭建教程:B2 / 又拍云 + CF+GitHub

     

  4. 点击左侧:规则,创建页面规则
    URL:https://<CNAME名称>.<自己的域名>/file/<桶名称>/*
    选取设置:缓存级别
    缓存级别:标准
    选取设置:边缘缓存 TTL
    输入边缘缓存 TTL:1 个月
    
    HTML

    自动化版图床保姆级搭建教程:B2 / 又拍云 + CF+GitHub

     

    URL:https://<CNAME名称>.<自己的域名>/*
    转发URL:301-永久重定向
    输入目标URL:https://f004.backblazeb2.com/file/<桶名称>/$1
    
    HTML

    自动化版图床保姆级搭建教程:B2 / 又拍云 + CF+GitHub

     

  5. 规则 - 转换规则 - 创建规则
    自定义筛选表达式
    字段:主机名
    运算符:等于
    值:<CNAME名称>.<自己的域名>
    重写到:Dynamic
       concat("/file/<桶名称>", http.request.uri.path)
    保留
    
    HTML

    自动化版图床保姆级搭建教程:B2 / 又拍云 + CF+GitHub

     

验证

替换后的地址仍能显示原图片代表配置成功了。

https://f004.backblazeb2.com/file/<桶名称>/<文件夹>/<文件名称>
替换后:https://<CNAME名称>.<自己的域名>/<文件夹>/<文件名称>
HTML

GitHub 同步到 Backblaze

  1. 在 GitHub 打开 Actions 权限自动化版图床保姆级搭建教程:B2 / 又拍云 + CF+GitHub
    看图操作

     

  2. 点击顶部导航:Action - New workflow - Configure(Simple workflow)

    自动化版图床保姆级搭建教程:B2 / 又拍云 + CF+GitHub

     

  3. 将 .yml 文件内容清空,替换为如下内容,保存。触发条件:每次 push(提交)文件自动执行,具体参数说明可参考此仓库:backblaze-b2-action
    name: Sync B2 Bucket
    on: push
    
    jobs:
     deploy:
       runs-on: ubuntu-latest
       steps:
       - uses: actions/checkout@master
       - run: rm -rf /github/workspace/.git/ && rm -rf /github/workspace/.github
       - uses: alximy/backblaze-b2-action@master
         env:
         # SOURCE_DIR:文件夹路径,此处设置的是仓库的根目录,/里面包含系统文件,不是真正的仓库文件夹路径
           SOURCE_DIR: '/github/workspace'
           B2_BUCKET: ${{ secrets.B2_BUCKET }}
           B2_APPKEY_ID: ${{ secrets.B2_APPKEY_ID }}
           B2_APPKEY: ${{ secrets.B2_APPKEY }}
    
    YAML
  4. Backblaze 获取 B2_APPKEY_ID 和 B2_APPKEY:App Keys - Add a New Application Key - 名称:随意,权限:All - Create New Key自动化版图床保姆级搭建教程:B2 / 又拍云 + CF+GitHub

     

    B2_APPKEY: Backblaze里的applicationKey
    B2_APPKEY_ID: Backblaze里的keyID
    
    YAML
  5. GitHub 新增 Action 变量: Settings - Action - New repository secret - Name:冒号前的内容,Secret:冒号后的内容 - Add secret
    B2_BUCKET: b2://<桶名称>/
    
    YAML

    自动化版图床保姆级搭建教程:B2 / 又拍云 + CF+GitHub

     

验证

在本地用上传工具上传到 GitHub,查看 Action是否运行,运行成功后查看 Backblaze是否有文件

  • 运行成功、有文件:代表配置没问题
  • 运行失败:查看报错并解决

GitHub 同步到又拍云

没有又拍云的站长可以申请一下 又拍云联盟:免费 10G 存储空间 + 15G CDN 流量

此处省略了创建云存储的步骤,没有云存储的,可以参考 官方文档

  1. 又拍云获取 服务名称操作员操作员密码:头像 - 账户管理 - 添加操作员 - 操作员:自己记住的名称,密码:生成并复制,权限:全部打勾✔ - 创建自动化版图床保姆级搭建教程:B2 / 又拍云 + CF+GitHub

     

  2. 授权:管理 - 添加自己的云存储,将下面的变量添加到 GitHub Action(参考 GitHub同步到Backblaze 第 5 步)
    BUCKET: 就是授权的云存储名称
    OPERATOR: 上面的操作员名称
    OPERATOR_PASSWORD: 上面生成的密码
    
    YAML
  3. GitHub:参考 GitHub同步到Backblaze,创建一个 Action .yml 文件,内容如下:
    name: Sync Upyun Bucket
    
    on:
     push:
       branches:
         - main
    
    env:
       TZ: Asia/Shanghai # 设置当前环境时区
    
    jobs:
     deploy:
       runs-on: ubuntu-20.04
       steps:
         - uses: actions/checkout@master
         - run: rm -rf /github/workspace/.git/ && rm -rf /github/workspace/.github
         - uses: dongyubin/upyun-upx-action@main
           env:
             bucket: ${{ secrets.BUCKET }}
             operator: ${{ secrets.OPERATOR }}
             operator_password: ${{ secrets.OPERATOR_PASSWORD }}
             # 此处改为自己的仓库路径
             local_path: /home/runner/work/<仓库名称>/<仓库名称>
             # 此处改为又拍云的存储路径
             remote_path: /<又拍云存储路径>/
    
    YAML

验证

在本地用上传工具上传到 GitHub,查看 Action是否运行,运行成功后查看又拍云是否有文件

  • 运行成功、有文件:代表配置没问题
  • 运行失败:查看报错并解决

GitHub 同步到 UnRaid

UnRaid 提前安装好兰空图床,通过兰空图床服务来做图床

备份是通过 SSHrsync 命令进行的,Github Action 参考:Burnett01/rsync-deployments

# 一路回车,不需要输入密码,邮箱改为自己的
ssh-keygen -t rsa -C "your_email@example.com"
Sh

会生成 id_pub(私钥)、id_pub.pub(公钥) 两个文件

cat ~/.ssh/id_pub.pub >> ~/.ssh/authorized_keys
Sh

Github Action 文件内容如下:

name: Sync To UnRaid
on: push
jobs:
  deploy:
    runs-on: ubuntu-latest
    steps:
    - uses: actions/checkout@master
    - run: rm -rf /github/workspace/.git/ && rm -rf /github/workspace/.github
    - uses: burnett01/rsync-deployments@5.2.1
      with:
        switches: -avzhP --update
        path: ./
        remote_path: ${{ secrets.DEPLOY_PATH }}
        remote_host: ${{ secrets.DEPLOY_HOST }}
        remote_port: ${{ secrets.DEPLOY_PORT }}
        remote_user: ${{ secrets.DEPLOY_USER }}
        remote_key: ${{ secrets.DEPLOY_KEY }}
Sh

在 GitHub Action 添加下面几个变量:(参考 GitHub同步到Backblaze 第 5 步)

  • DEPLOY_PATH:服务器上的路径
  • DEPLOY_HOST:远程主机 IP / 域名
  • DEPLOY_PORT:远程端口,默认为:22
  • DEPLOY_USER:远程用户
  • DEPLOY_KEY:远程 SSH 秘钥(上面的私钥)

验证

在本地用上传工具上传到 GitHub,查看 Action是否运行,运行成功后查看 UnRaid是否有文件

  • 运行成功、有文件:代表配置没问题
  • 运行失败:查看报错并解决

原文链接:https://www.wangdu.site/course/1343.html

- THE END -

baiyakai

3月11日10:04

最后修改:2023年3月11日
0

非特殊说明,本博所有文章均为博主原创。

共有 0 条评论