-
Notifications
You must be signed in to change notification settings - Fork 1.1k
Open
Labels
bugSomething isn't workingSomething isn't working
Description
Description
Problem: Videos uploaded to Cap are not viewable, and the S3 bucket (Garage) remains empty despite successful upload UI feedback and no error logs.
When attempting to upload a video through Cap's web interface:
- The upload appears to complete successfully (no errors shown to user)
- No errors appear in Docker logs during upload
- The S3 bucket remains completely empty (verified via external S3 client)
- Attempting to view the uploaded video fails silently
Expected behavior: Videos should be uploaded to the Garage S3 bucket and be viewable through the Cap interface.
Actual behavior: Upload completes without errors, but no files are written to S3 storage.
Logs
When attempting to view an uploaded video:
cap-web | [ShareVideoPage] Starting transcription for video: re0msnz8094jdqf
cap-web | [ShareVideoPage] Updated transcription status: null
cap-web | timestamp=2025-12-17T20:39:58.554Z level=INFO fiber=#188 message="Using CAP_AWS_ACCESS_KEY and CAP_AWS_SECRET_KEY"
cap-web | [next-auth][warn][DEBUG_ENABLED]
cap-web | https://next-auth.js.org/warnings#debug_enabled
Full startup logs show successful initialization:
cap-web | 💿 Migrations run successfully!
cap-web | Created S3 bucket
No upload errors are logged during the video upload process.
Environment
- Cap version:
ghcr.io/capsoftware/cap-web:latest(SHA:74d56685cf9c3c856cceab23fef6a6bdef1370d201cbf0431d6c95504c971554) - S3 Provider: Garage v2.1.0 (self-hosted, S3-compatible storage)
- Database: MySQL 8.4
- Deployment: Docker Compose
Configuration
Docker Compose:
name: cap-production
services:
cap-web:
container_name: cap-web
image: ghcr.io/capsoftware/cap-web:latest@sha256:74d56685cf9c3c856cceab23fef6a6bdef1370d201cbf0431d6c95504c971554
restart: unless-stopped
networks:
- default
environment:
DATABASE_URL: 'mysql://cap_user:${DB_PASSWORD}@cap-db:3306/cap?ssl={"rejectUnauthorized":false}'
WEB_URL: https://cap.example.com
NEXTAUTH_URL: https://cap.example.com
DATABASE_ENCRYPTION_KEY: ${DATABASE_ENCRYPTION_KEY}
NEXTAUTH_SECRET: ${NEXTAUTH_SECRET}
# S3 Configuration (Garage)
CAP_AWS_ACCESS_KEY: ${S3_ACCESS_KEY}
CAP_AWS_SECRET_KEY: ${S3_SECRET_KEY}
CAP_AWS_BUCKET: cap
CAP_AWS_REGION: garage
CAP_AWS_BUCKET_URL: https://garage.example.com
S3_INTERNAL_ENDPOINT: https://garage.example.com
S3_PUBLIC_ENDPOINT: https://garage.example.com
S3_PATH_STYLE: true
CAP_VIDEOS_DEFAULT_PUBLIC: true
cap-db:
container_name: cap-db
image: mysql:8.4@sha256:5cdee9be17b6b7c804980be29d1bb0ba1536c7afaaed679fe0c1578ea0e3c233
restart: unless-stopped
environment:
MYSQL_DATABASE: cap
MYSQL_USER: cap_user
MYSQL_PASSWORD: ${DB_PASSWORD}
MYSQL_ROOT_PASSWORD: ${DB_ROOT_PASSWORD}
MYSQL_ROOT_HOST: "%"
command: ["--max_connections=1000"]
volumes:
- cap-mysql:/var/lib/mysql
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost"]
timeout: 5s
retries: 10
networks:
default:
name: cap_default
volumes:
cap-mysql:Verification Steps Performed
- S3 credentials are valid (tested with external S3 client - CyberDuck)
- Can successfully upload/download files to/from the Garage bucket using the same credentials
- Bucket "cap" exists and is accessible
- Cap reports "Created S3 bucket" on startup
- No files appear in the bucket after Cap upload
Questions
- Are there additional environment variables required for external S3 providers (non-AWS/MinIO)?
- Should there be upload-related logs that I'm not seeing? (Currently no logs during upload process)
- Is there a way to enable debug logging for S3 operations specifically?
- Does Cap require specific S3 API compatibility that Garage might not provide?
Thanks in advance!
Additional Notes
- The official documentation and docker-compose template primarily shows MinIO configuration
- Garage is S3-compatible and works with other S3 clients
- The silent failure (no error logs) makes debugging difficult
- Video metadata appears to be saved to the database (video ID is generated), but the actual video file is never uploaded to S3
Metadata
Metadata
Assignees
Labels
bugSomething isn't workingSomething isn't working