I recently hit an issue where my PeerTube instance stopped being able to upload videos to my Scaleway S3 bucket. All move-to-object-storage jobs were failing with this error:
NoSuchBucket: The specified bucket does not exist
The 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:, and captions:.
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 key videos: 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: 2GB
My 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, though videos: 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:, and captions:
After updating production.yaml and restarting PeerTube from the Cloudron dashboard, all my failed jobs completed successfully.
Hope this helps someone else!