必要なもの
- DigitalOcean のアカウント
- DigitalOcean Spaces の Bucket
- Misskey インスタンス
- s3cmd が使えるパソコン
Anonymous Userでもファイルをダウンロードできるようにする
BucketにPolicy適用
これが無いとアップロードしたファイルを見ることができない
下の内容をpolicy.json
として保存する
{
"Statement": [
{
"Sid": "Granting Read-Only Permission to an Anonymous User",
"Effect": "Allow",
"Principal": { "AWS": "*" },
"Action": "s3:GetObject",
"Resource": "arn:aws:s3:::<Bucket名>/*"
}
]
}
policy.json
BucketのPolicyとしてセット
$ s3cmd setpolicy policy.json s3://<Bucket名>/
確認
$ s3cmd info s3://mybucket
s3://mybucket/ (bucket):
Location: sgp1
Payer: BucketOwner
Expiration Rule: none
Policy: b'{\n "Statement": [\n {\n "Sid": "Granting Read-Only Permission to an Anonymous User",\n "Effect": "Allow",\n "Principal": { "AWS": "*" },\n "Action": "s3:GetObject",\n "Resource": "arn:aws:s3:::mybucket/*"\n }\n ]\n}\n'
CORS: b'<CORSConfiguration xmlns="http://s3.amazonaws.com/doc/2006-03-01/"><CORSRule><AllowedMethod>GET</AllowedMethod><AllowedMethod>HEAD</AllowedMethod><AllowedOrigin>*</AllowedOrigin><MaxAgeSeconds>0</MaxAgeSeconds></CORSRule></CORSConfiguration>'
ACL: 1234567: FULL_CONTROL
ローカルストレージからの移行
- ローカルのファイルをBucketにアップロード
- DB内のURLをBucketのものに置き換える
ファイルアップロード
Misskeyのホームディレクトリで
$ s3cmd put -r files s3://<Bucket名>
DB操作
$ pg_dump > misskey.sql
テキストエディタでmisskey.sql
を開けて、すべての//domain.tld/files
を BucketのURLに置き換える
すべて終わったら
$ sudo -u postgres psql
> DROP DATABASE misskey;
> CREATE DATABASE misskey OWNER = misskey;
> \q
$ sudo -u misskey -i
$ psql < misskey.sql
あとはMisskeyを起動させて、管理者ページからオブジェクトストレージの設定をすればおk