This directory contains practical examples demonstrating how to integrate with Garage S3.
examples/
├── README.md # This file
├── aws-cli/ # AWS CLI examples
│ ├── basic-usage.sh
│ ├── sync-directory.sh
│ └── website-hosting.sh
└── nodejs/ # Node.js SDK examples
├── simple-upload.js
├── express-middleware.js
├── multipart-upload.js
├── package.json
└── README.md
cd /opt/garage
docker compose exec garage-1 garage key list
export GARAGE_ENDPOINT="http://192.168.1.100:3900"
export GARAGE_REGION="garage"
export GARAGE_ACCESS_KEY="your-access-key-here"
export GARAGE_SECRET_KEY="your-secret-key-here"
aws-cli/ for shell script examplesnodejs/ for JavaScript examplesShell scripts demonstrating AWS CLI usage with Garage:
basic-usage.sh - Essential S3 operations (create, upload, download, list, delete)sync-directory.sh - Backup and restore workflowswebsite-hosting.sh - Static website deploymentRun:
cd aws-cli
./basic-usage.sh
JavaScript examples using AWS SDK v3:
simple-upload.js - Basic upload/download operationsexpress-middleware.js - File upload API with Express.jsmultipart-upload.js - Large file uploads with progress trackingSetup:
cd nodejs
npm install
node simple-upload.js
Garage uses path-style S3 addressing. Always configure:
AWS CLI (~/.aws/config):
[profile garage]
s3 =
addressing_style = path
Node.js:
const s3 = new S3Client({
forcePathStyle: true // Required!
});
Always specify the full endpoint URL with protocol:
export GARAGE_ENDPOINT="http://192.168.1.100:3900" # ✓ Correct
See individual example READMEs for detailed troubleshooting: