pleroma添加R2存储及媒体代理
·614 字·2 分钟
Pleroma
媒体代理
目录
感谢鱼,这篇 Akkoma / Pleroma 的媒体相关配置参考很多
设置上传文件夹
1. R2储存桶创建及设置
登录cloudflare,在R2中新建存储桶,设定桶名称
、选择地区
。
创建完毕,进入,
-
设置 - 公开访问 - 添加
自定义域
-
编辑CORS策略
[
{
"AllowedOrigins": [
"http://example.com"
],
"AllowedMethods": [
"GET"
]
}
]
2. R2 API令牌
返回R2 概述页面,点击管理 R2 API 令牌
创建API令牌,根据需求选择“对象读和写”,“仅用于特定存储桶”,点击按钮创建API令牌。
创建成功后,出现令牌值
; 访问密钥 ID
; 机密访问密钥
,此页面仅出现一次,务必保存好。
3. 设置upload
各项说明参考 普莱罗马文档 配置备忘单 - upload
打开 pleroma 的 Admin-FE ,在 Settting
- upload
中进行填写。
字段 | 填写内容 |
---|---|
Uploader | S3 |
Filters | Dedupe ; Exiftool.StripLocation ; AnalyzeMetadata ; AnonymizeFilename ; Exiftool.ReadDescription |
Link name | 开启 |
Base URL | https://Domains |
Access key | R2 API 访问密钥 ID |
Secret access key | R2 API 机密访问密钥 |
Host | XXXXXXXXXXXXXX.r2.cloudflarestorage.com |
Region | R2中选择的桶地区 |
Bucket | R2中设定的桶名称 |
Streaming enabled | 开启 |
填写完成,Submit
提交,重启服务后尝试手动上传图片试试。
4. 迁移本地文件至S3储存
以上成功后,使用命令将媒体文件迁移至S3储存,其中--delete
在迁移完成后删除本地文件
su pleroma -s $SHELL -lc "./bin/pleroma_ctl uploads migrate_local S3 --delete"
配置媒体代理
- 创建Worker
cloudflare - Worker和Pages 中 创建应用程序,选择 常见 Worker 示例
点击 快速编辑
粘贴一下
function decodeBase64 (str) {
try {
return atob(str)
} catch (e) {
console.log(e)
return null
}
}
export default {
async fetch(request, env) {
const url = new URL(request.url)
const pathList = url.pathname.split('/') || []
const mediaUrl = decodeBase64(pathList[3] || '')
if (!mediaUrl) {
return new Response('')
}
console.log(mediaUrl)
return fetch(mediaUrl, {
headers: request.headers
})
}
}
保存并部署。
-
在 触发器 中添加自定义域。
-
回到 Admin-FE ,打开 Media Proxy
字段 | 填写内容 |
---|---|
Mediaproxy.Enabled | 开启 |
Base URL | Worker中的自定义域 |
Invalidation.Enabled | Pleroma.Web.MediaProxy.Invalidation.Http |
Mediapreviewproxy.Enabled | 开启 |
提交后重启服务。