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

斌仔
文章字数 1259 字 阅读时间 10 分钟
🤖 由 ChatGPT 生成的文章摘要
此内容根据文章生成,并经过人工审核,仅用于文章内容的解释与总结

微博图床倒下了,之前阿斌使用B2(Backblze)+CloudFlare弄了一个图床,弄好了,但是没写教程,趁着还没忘记,先写下来,方便自己以及大家参考使用。

自动化版图床搭建
自动化版图床搭建

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

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

一目了然流程图
一目了然流程图

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

准备资源

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

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

教程

Backblaze 设置

  1. 创建一个桶(Bucket),配置如下,点击创建即可。

    名称(Bucket Unique Name):任意英文
    Files in Bucket are:Public
    Default Encryptio:Disable
  2. 上传一张照片到桶里,点击照片即可查看图片信息,复制友好URL,格式如下:

    https://f004.backblazeb2.com/file/<桶名称>/<文件夹>/<文件名称>
    域名(后面会用到):f004.backblazeb2.com(这个地方可能不一样,按自己的设置即可)
  3. 桶设置(Bucket Settings)- Bucket Info:{"cache-control":"max-age=720000"}

CloudFlare 设置

  1. 添加站点,按步骤操作,去域名厂商修改DNS(阿里云:控制台 - 域名 - 域名列表 - 域名后的 管理 - DNS管理 - DNS修改 - 修改DNS服务器),生效时间24-48小时,设置完过一段时间去ClouFlare检验一下,通过则表示设置成功。

  2. 在域名的设置页面,点击左侧:SSL/TLS,加密模式:完全(严格)

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

  4. 点击左侧:规则,创建页面规则

    URL:https://.<自己的域名>/file/<桶名称>/*
    选取设置:缓存级别
    缓存级别:标准
    选取设置:边缘缓存 TTL
    输入边缘缓存 TTL:1 个月

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

  5. 规则 - 转换规则 - 创建规则

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

验证

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

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

GitHub同步到Backblaze

  1. 在 GitHub 打开 Actions 权限

    看图操作
    看图操作

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

  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 }}
  4. Backblaze 获取 B2_APPKEY_ID 和 B2_APPKEY:App Keys - Add a New Application Key - 名称:随意,权限:All - Create New Key

    B2_APPKEY: Backblaze里的applicationKey
    B2_APPKEY_ID: Backblaze里的keyID
  5. GitHub 新增 Action 变量: Settings - Action - New repository secret - Name:冒号前的内容,Secret:冒号后的内容 - Add secret

    B2_BUCKET: b2://<桶名称>/

验证

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

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

GitHub同步到又拍云

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

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

  1. 又拍云获取 服务名称操作员操作员密码:头像 - 账户管理 - 添加操作员 - 操作员:自己记住的名称,密码:生成并复制,权限:全部打勾✔ - 创建

  2. 授权:管理 - 添加自己的云存储,将下面的变量添加到GitHub Action(参考 GitHub同步到Backblaze5 步)

    BUCKET: 就是授权的云存储名称
    OPERATOR: 上面的操作员名称
    OPERATOR_PASSWORD: 上面生成的密码
  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: /<又拍云存储路径>/

验证

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

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

GitHub同步到UnRaid

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

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

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

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

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

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 }}

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

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

验证

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

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

总结

教程写完了,阿斌把所有的坑🕳都踩完了,已去坑,放心使用,如果不能运行,请再来一遍。

如果你觉得不错的话,给个免费的赞或者评论一下,这是对阿斌最大的支持。

非常感激每一位打赏的朋友!

支付宝扫码支持
微信扫码支持

扫一扫,请博主喝咖啡☕

文章作者: 斌仔
文章链接: https://www.wangdu.site/course/1343.html
版权声明: 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 文武科技柜

相关推荐

1 条评论

  1. 小熊说道:

    cf、github果然好东西呀

  2. 美樂地说道:

    感谢大佬的教程,这样可以实现在三个地方备份了

  3. 小N同学说道:

    这玩意速度应该不是很好,但是是免费的哈哈哈

  4. 羽熙说道:

    请问进行桶设置(Bucket Settings)- Bucket Info:{“cache-control”:”max-age=720000"}时候提示Invalid json object要怎么解决

  5. koobai说道:

    增加一个github同步到多吉云的教程吧~

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注