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

392次阅读
6条评论

共计 3909 个字符,预计需要花费 10 分钟才能阅读完成。

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

自动化版图床保姆级搭建教程: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
    
  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,加密模式:完全(严格)

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

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

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

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

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

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

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

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

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

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

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

验证

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

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

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}}
    
  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
    
  5. GitHub 新增 Action 变量:Settings - Action - New repository secret - Name:冒号前的内容,Secret:冒号后的内容 - Add secret
    B2_BUCKET: b2://< 桶名称 >/
    

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

验证

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

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

GitHub 同步到又拍云

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

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

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

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

  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 是否有文件

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

总结

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

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

正文完
 
斌仔
版权声明:本站原创文章,由 斌仔 2023-02-01发表,共计3909字。
转载说明:除特殊说明外本站文章皆由CC-4.0协议发布,转载请注明出处。
评论(6条评论)
验证码