共计 3909 个字符,预计需要花费 10 分钟才能阅读完成。
微博图床倒下了,之前阿斌使用 B2(Backblze)+CloudFlare
弄了一个图床,弄好了,但是没写教程,趁着还没忘记,先写下来,方便自己以及大家参考使用。
那图床搭好了,GitHub 有啥用呢?
之前阿斌使用的 GitHub+jsDelivr(已被墙),所有照片都在 GitHub 上,阿斌就想有没有直接将 GitHub 同步到 B2,Github 不缺大佬,还真有!
下面就跟着阿斌一起来操作吧!真可谓一劳永逸!
准备资源
PS:已有账号的,忽略注册,直接登录即可
- 一个域名(可以修改 DNS,不作为主要域名)
- Backblaze:注册账号,不能访问,富强试试
- Cloudflare:注册账号
- GitHub:注册账号
教程
Backblaze 设置
- 创建一个桶(Bucket),配置如下,点击创建即可。
名称(Bucket Unique Name):任意英文 Files in Bucket are:Public Default Encryptio:Disable
- 上传一张照片到桶里,点击照片即可查看图片信息,复制
友好 URL
,格式如下:https://f004.backblazeb2.com/file/< 桶名称 >/< 文件夹 >/< 文件名称 > 域名(后面会用到):f004.backblazeb2.com
- 桶设置(Bucket Settings)- Bucket Info:
{“cache-control”:”max-age=720000"}
CloudFlare 设置
-
添加站点,按步骤操作,去域名厂商修改 DNS(阿里云:控制台 - 域名 - 域名列表 - 域名后的
管理
- DNS 管理 - DNS 修改 - 修改 DNS 服务器),生效时间 24-48 小时,设置完过一段时间去 ClouFlare 检验一下,通过则表示设置成功。 -
在域名的设置页面,点击左侧:
SSL/TLS
,加密模式:完全(严格)
-
点击左侧:
DNS
,添加一条CNAME
记录,名称:任意,内容:Backblaze 图片的域名
-
点击左侧:
规则
,创建页面规则URL:https://<CNAME 名称 >.< 自己的域名 >/file/< 桶名称 >/* 选取设置:缓存级别 缓存级别:标准 选取设置:边缘缓存 TTL 输入边缘缓存 TTL:1 个月
URL:https://<CNAME 名称 >.< 自己的域名 >/* 转发 URL:301- 永久重定向 输入目标 URL:https://f004.backblazeb2.com/file/< 桶名称 >/$1
-
规则 - 转换规则 - 创建规则
自定义筛选表达式 字段:主机名 运算符:等于 值:<CNAME 名称 >.< 自己的域名 > 重写到:Dynamic concat("/file/< 桶名称 >", http.request.uri.path) 保留
验证
替换后的地址仍能显示原图片代表配置成功了。
https://f004.backblazeb2.com/file/< 桶名称 >/< 文件夹 >/< 文件名称 >
替换后:https://<CNAME 名称 >.< 自己的域名 >/< 文件夹 >/< 文件名称 >
GitHub 同步到 Backblaze
- 在 GitHub 打开 Actions 权限
-
点击顶部导航:Action - New workflow - Configure(Simple workflow)
-
将
.yml
文件内容清空,替换为如下内容,保存。触发条件:每次push(提交)
文件自动执行,具体参数说明可参考此仓库:backblaze-b2-actionname: 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}}
- 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
- GitHub 新增 Action 变量:Settings - Action - New repository secret - Name:冒号前的内容,Secret:冒号后的内容 - Add secret
B2_BUCKET: b2://< 桶名称 >/
验证
在本地用 上传工具 上传到 GitHub,查看Action 是否运行
,运行成功后查看Backblaze 是否有文件
。
- 运行成功、有文件:代表配置没问题
- 运行失败:查看报错并解决
GitHub 同步到又拍云
没有又拍云的站长可以申请一下 又拍云联盟:免费 10G 存储空间 +15G CDN 流量
此处省略了创建云存储的步骤,没有云存储的,可以参考 官方文档
- 又拍云获取
服务名称
、操作员
、操作员密码
:头像 - 账户管理 - 添加操作员 - 操作员:自己记住的名称,密码:生成并复制
,权限:全部打勾✔
- 创建 -
授权:管理 - 添加自己的云存储,将下面的变量添加到 GitHub Action(参考
GitHub 同步到 Backblaze
第5
步)BUCKET: 就是授权的云存储名称 OPERATOR: 上面的操作员名称 OPERATOR_PASSWORD: 上面生成的密码
- 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 同步到 Backblaze
第 5
步)
- DEPLOY_PATH:服务器上的路径
- DEPLOY_HOST:远程主机 IP/ 域名
- DEPLOY_PORT:远程端口,默认为:22
- DEPLOY_USER:远程用户
- DEPLOY_KEY:远程 SSH 秘钥(上面的私钥)
验证
在本地用 上传工具 上传到 GitHub,查看Action 是否运行
,运行成功后查看UnRaid 是否有文件
。
- 运行成功、有文件:代表配置没问题
- 运行失败:查看报错并解决
总结
教程写完了,阿斌把所有的坑🕳都踩完了,已去坑,放心使用,如果不能运行,请再来一遍。
如果你觉得不错的话,给个免费的赞或者评论一下,这是对阿斌最大的支持。