現在VPSでMisskeyを動かしているのですが、起動して画像をアップロードしようとしたところアップロードエラーが発生したのでその時の記録です。
エラー内容
画像をアップロードしようとすると以下のエラーが発生しました。

キャッシュクリアや再起動をかけても治りませんでした。
ログの確認
Dockerで動かしているため、以下のコマンドでログを確認します。
docker logs <misskey_container_name>
ログは以下のように出ました(一部を抜粋)
Error: EACCES: permission denied, copyfile '/tmp/tmp-127-1KiAiufYfuwN' -> '/misskey/files/61e61da7-02df-4c0b-b898-d0ecd5f27846'
at Module.copyFileSync (node:fs:3004:11)
at InternalStorageService.saveFromPath (file:///misskey/packages/backend/built/core/InternalStorageService.js:43:12)
at DriveService.save (file:///misskey/packages/backend/built/core/DriveService.js:188:53)
at async DriveService.addFile (file:///misskey/packages/backend/built/core/DriveService.js:516:20)
at async file:///misskey/packages/backend/built/server/api/endpoints/drive/files/create.js:116:35
at async ApiCallService.call (file:///misskey/packages/backend/built/server/api/ApiCallService.js:388:20) {
errno: -13,
code: 'EACCES',
syscall: 'copyfile',
path: '/tmp/tmp-127-1KiAiufYfuwN',
dest: '/misskey/files/61e61da7-02df-4c0b-b898-d0ecd5f27846'
}
上記ログからファイルを保存しようとしたときに、ファイルシステムのアクセス権限に問題があると考えられます。
結論から言うと今回はこれが原因でした。
解決策
以下のコマンドでコンテナに入ります。
docker exec -u root -it <misskey_container_name> /bin/bash
コンテナ内に入ったら権限を確認します。
ls -ld /misskey/files
上記コマンドからrootユーザーにのみしか権限が与えられていなかったのでmisskeyユーザーに権限を付与します。
chown -R misskey:misskey /misskey/files
chmod -R 755 /misskey/files
権限を付与したらコンテナを再起動させます。
docker restart <misskey_container_name>
これでアップロードが出来るようになったと思います。
コメント