先看效果:

oracle_photo_blog.gif

作为一个专业白嫖党,只使用 Oracle 的 4 个免费鸡怎么能满足呢,拥有 20GB 免费空间的对象存储当然也要利用起来,正好最近又重拾起了鸽了多年的博客,正好作为博客的图床。

前置条件

  1. 一个 Oracle Cloud 账号(需要信用卡认证,大陆已经很难申请了)
  2. 良好的科学环境

Oracle Object Storage 存储桶准备

  1. 进入 Oracle Cloud 对象存储管理界面,创建新的存储桶

    image.png

    默认配置即可,创建完之后编辑可见性,这里可以选择公开或者私有, 公开:所有文件允许读取 私有:可使用预先验证的请求实现部分文件公开(推荐这种方式)

    image.png

  2. 创建预先验证的请求

    image.png

    选择具有前缀的对象,前缀填写images,下文配置 picgo时需要匹配这个前缀,否则会有权限问题,访问类型默认只读即可,到期时间尽量一步到位多配几年。

    image.png

    将 URL 复制保存,这即时存储桶相应前缀目录访问的 BaseURL

    image.png

    上传一个图片试一下能否访问

    image.png

    可以看到由于存储桶的权限设置,使用 URL 路径访问是行不通的

    image.png

    需要替换为刚才创建的预见请求的 URL 前缀 https://objectstorage.ap-chuncheon-1.oraclecloud.com/p/xxx/n/{namespace}/b/blog/o/images/2022-05-23.png

  3. 存储桶 Endpoint 甲骨文的对象存储 endpoint 模式为https://{namespace}.compat.objectstorage.{region}.oraclecloud.com/

  • namespace: 存储桶信息名称空间字段

    image.png

  • region: 这个是你甲骨文账号的区域,通常在你的 Oci 的 console 地址里就有体现,如我的春川为ap-chuncheon-1

    image.png

  1. 申请 Oracle 账户 Ak 和 Sk右上角头像,进入“我的概要信息“,”客户密钥“选项”生成密钥“

    image.png

    同样保存已生成密钥,该密钥为账户的SecretAccessKey

    image.png

    AccessKeyID在列表页,同样复制保存

    image.png

安装配置 Picgo 和 s3 插件

准备工作完成,下面开始配置图床工具。这里有两种选择:

  1. 具有 GUI 界面:PicGo
  2. Cli 命令行操作:PicGo-Core 上面两种看个人喜好,我比较习惯命令行,所以选择第二种,配置方面都是一样的,区别为是否提供了GUI,

安装 Node 环境

自行按nodejs官网安装

安装 Picgo-Core

npm install picgo -g

或者使用 Yarn

yarn global add picgo

验证安装

picgo -h

出现以下结果表明安装成功 image.png

添加 S3 插件

s3 插件理论上支持所有兼容 S3API 的对象存储,具体参看插件主页

picgo add s3

安装成功之后配置文件含有以下信息 image.png

配置 s3 插件

{
  "picBed": {
    "uploader": "aws-s3",
    "current": "aws-s3",
    "aws-s3": {
      "accessKeyID": "{ak}",
      "secretAccessKey": "{sk}",
      "bucketName": "{bucket}",
      "region": "{region}",
      "uploadPath": "images/{year}/{month}/{md5}.{extName}",
      "endpoint": "https://{namespace}.compat.objectstorage.{region}.oraclecloud.com/",
      "acl": "public-read",
      "pathStyleAccess": true,
      "urlPrefix": "https://objectstorage.ap-chuncheon-1.oraclecloud.com/p/{publicKey}/n/{namespace}/b/blog/o",
      "disableBucketPrefixToURL": true
    }
  },
  "picgoPlugins": {
    "picgo-plugin-s3": true
  }
}

上面配置除了uploadPath字段,其他地方的占位符号"{}“应替换为相应值:

  • ak: 上文申请的甲骨文账号AccessKeyID
  • sk: 上文申请的甲骨文账号SecretAccessKey
  • bucket: 桶名称,我的这里就是blog
  • region: 上文获取的region区域,我这里是ap-chuncheon-1
  • uploadPath 的占位符不需要修改,且注意前缀 images 一定要匹配上文预先验证的请求处的前缀
  • namespace: 上文获取的 namespace
  • urlPrefix: 这个字段为预先验证的请求处申请的 URL 前缀
  • disableBucketPrefixToURL: 这个字段必须为true,否则上传链接自动添加桶前缀导致访问失败,具体可看这个Issue

验证配置

截图工具随意截图到剪贴板

picgo upload

上传剪贴板图片

image.png

访问图片链接成功

image.png

到此就实现图床最基本的功能了,搭配任意编辑器都可使用图床了,只是稍显麻烦,如果在编辑器中复制上传,成功后即刻显示图片体验会更好。下面我们使用 Obsidian 搭配对应插件实现上面功能。

安装配置 Obsidian

下载安装Obsidian

关闭安全模式搜索”Image auto upload Plugin“插件安装

image.png

插件配置

image.png

默认上传器选择PicGo-Core

结语

至此使用 Oracle 作为对象存储教程已经完成,但是还是有些缺陷,如图片访问效果不理想,因为甲骨文的对象存储不支持 cdn,导致不同区域访问效果不同。下一章我们使用 CloudFlare 加速我们的图片访问,以及特殊情况下制作 GIF 上传的方法。