PeerTube S3 Object Storage broken after upgrade(s) - Fix
-
I recently hit an issue where my PeerTube instance stopped being able to upload videos to my Scaleway S3 bucket. All
move-to-object-storagejobs were failing with this error:NoSuchBucket: The specified bucket does not existThe confusing part was that the bucket definitely existed, and I could even connect to it successfully from the PeerTube web terminal using the AWS SDK directly.
The Problem
Recent versions of PeerTube (v6+) changed the object storage config format. New storage sections are now required:
user_exports:,original_video_files:, andcaptions:.The v6.0.0 changelog also mentions that Docker environment variables were renamed (e.g.,
PEERTUBE_OBJECT_STORAGE_VIDEOS_*→PEERTUBE_OBJECT_STORAGE_WEB_VIDEOS_*), which the Cloudron devs will have implemented. However, the YAML config keyvideos:still appears to work based on the AWS example in the docs and this Hetzner S3 guide from October 2025.See the official PeerTube Remote Storage documentation for the current config format.
My old config (broken in PeerTube v6+):
object_storage: enabled: true endpoint: 'https://s3.fr-par.scw.cloud' region: 'fr-par' videos: bucket_name: 'your-bucket-name' prefix: 'videos/' streaming_playlists: bucket_name: 'your-bucket-name' prefix: 'streaming-playlists/' credentials: access_key_id: 'YOUR_ACCESS_KEY' secret_access_key: 'YOUR_SECRET_KEY' max_upload_part: 2GBMy new config (working with PeerTube v6+):
object_storage: enabled: true endpoint: 'https://s3.fr-par.scw.cloud' region: 'fr-par' credentials: access_key_id: 'YOUR_ACCESS_KEY' secret_access_key: 'YOUR_SECRET_KEY' max_upload_part: 2GB web_videos: bucket_name: 'your-bucket-name' prefix: 'web-videos/' streaming_playlists: bucket_name: 'your-bucket-name' prefix: 'streaming-playlists/' user_exports: bucket_name: 'your-bucket-name' prefix: 'user-exports/' original_video_files: bucket_name: 'your-bucket-name' prefix: 'original-video-files/' captions: bucket_name: 'your-bucket-name' prefix: 'captions/'Key changes:
videos:→web_videos:(matches the Docker env var rename, thoughvideos:may still work)prefix: 'videos/'→prefix: 'web-videos/'(not strictly necessary, but matches the Backblaze example in the docs)- Added required sections:
user_exports:,original_video_files:, andcaptions:
After updating
production.yamland restarting PeerTube from the Cloudron dashboard, all my failed jobs completed successfully.Hope this helps someone else!