xpeditis2.0/apps/backend/setup-minio-bucket.js
David d65cb721b5
Some checks are pending
CD Production (Hetzner k3s) / Promote Images (preprod → prod) (push) Waiting to run
CD Production (Hetzner k3s) / Deploy to k3s (xpeditis-prod) (push) Blocked by required conditions
CD Production (Hetzner k3s) / Smoke Tests (push) Blocked by required conditions
CD Production (Hetzner k3s) / Deployment Summary (push) Blocked by required conditions
CD Production (Hetzner k3s) / Notify Success (push) Blocked by required conditions
CD Production (Hetzner k3s) / Notify Failure (push) Blocked by required conditions
chore: sync full codebase from cicd branch
Aligns main with the complete application codebase (cicd branch).

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
2026-04-04 12:56:44 +02:00

92 lines
3.2 KiB
JavaScript
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/usr/bin/env node
/**
* Setup MinIO Bucket
*
* Creates the required bucket for document storage if it doesn't exist
*/
const { S3Client, CreateBucketCommand, HeadBucketCommand } = require('@aws-sdk/client-s3');
require('dotenv').config();
const BUCKET_NAME = 'xpeditis-documents';
// Configure S3 client for MinIO
const s3Client = new S3Client({
region: process.env.AWS_REGION || 'us-east-1',
endpoint: process.env.AWS_S3_ENDPOINT || 'http://localhost:9000',
credentials: {
accessKeyId: process.env.AWS_ACCESS_KEY_ID || 'minioadmin',
secretAccessKey: process.env.AWS_SECRET_ACCESS_KEY || 'minioadmin',
},
forcePathStyle: true, // Required for MinIO
});
async function setupBucket() {
console.log('\n🪣 MinIO Bucket Setup');
console.log('==========================================');
console.log(`Bucket name: ${BUCKET_NAME}`);
console.log(`Endpoint: ${process.env.AWS_S3_ENDPOINT || 'http://localhost:9000'}`);
console.log('');
try {
// Check if bucket exists
console.log('📋 Step 1: Checking if bucket exists...');
try {
await s3Client.send(new HeadBucketCommand({ Bucket: BUCKET_NAME }));
console.log(`✅ Bucket '${BUCKET_NAME}' already exists`);
console.log('');
console.log('✅ Setup complete! The bucket is ready to use.');
process.exit(0);
} catch (error) {
if (error.name === 'NotFound' || error.$metadata?.httpStatusCode === 404) {
console.log(` Bucket '${BUCKET_NAME}' does not exist`);
} else {
throw error;
}
}
// Create bucket
console.log('');
console.log('📋 Step 2: Creating bucket...');
await s3Client.send(new CreateBucketCommand({ Bucket: BUCKET_NAME }));
console.log(`✅ Bucket '${BUCKET_NAME}' created successfully!`);
// Verify creation
console.log('');
console.log('📋 Step 3: Verifying bucket...');
await s3Client.send(new HeadBucketCommand({ Bucket: BUCKET_NAME }));
console.log(`✅ Bucket '${BUCKET_NAME}' verified!`);
console.log('');
console.log('==========================================');
console.log('✅ Setup complete! The bucket is ready to use.');
console.log('');
console.log('You can now:');
console.log(' 1. Create CSV bookings via the frontend');
console.log(' 2. Upload documents to this bucket');
console.log(' 3. View files at: http://localhost:9001 (MinIO Console)');
console.log('');
process.exit(0);
} catch (error) {
console.error('');
console.error('❌ ERROR: Failed to setup bucket');
console.error('');
console.error('Error details:');
console.error(` Name: ${error.name}`);
console.error(` Message: ${error.message}`);
if (error.$metadata) {
console.error(` HTTP Status: ${error.$metadata.httpStatusCode}`);
}
console.error('');
console.error('Common solutions:');
console.error(' 1. Check if MinIO is running: docker ps | grep minio');
console.error(' 2. Verify credentials in .env file');
console.error(' 3. Ensure AWS_S3_ENDPOINT is set correctly');
console.error('');
process.exit(1);
}
}
setupBucket();