From b711af0431a459e1fb27af4d264540d4f01d602c Mon Sep 17 00:00:00 2001 From: Hakan Shehu Date: Sun, 15 Jun 2025 11:39:35 +0200 Subject: [PATCH] Add force path style config for s3 - fixes #62 (#65) --- apps/server/src/data/storage.ts | 1 + apps/server/src/lib/config/storage.ts | 2 ++ docker-compose.yaml | 1 + 3 files changed, 4 insertions(+) diff --git a/apps/server/src/data/storage.ts b/apps/server/src/data/storage.ts index 9b6dba27..ba431efd 100644 --- a/apps/server/src/data/storage.ts +++ b/apps/server/src/data/storage.ts @@ -9,4 +9,5 @@ export const s3Client = new S3Client({ accessKeyId: config.storage.accessKey, secretAccessKey: config.storage.secretKey, }, + forcePathStyle: config.storage.forcePathStyle, }); diff --git a/apps/server/src/lib/config/storage.ts b/apps/server/src/lib/config/storage.ts index fcc80588..1fcd2a4b 100644 --- a/apps/server/src/lib/config/storage.ts +++ b/apps/server/src/lib/config/storage.ts @@ -7,6 +7,7 @@ export const storageConfigSchema = z.object({ secretKey: z.string({ error: 'STORAGE_S3_SECRET_KEY is required' }), bucket: z.string({ error: 'STORAGE_S3_BUCKET is required' }), region: z.string({ error: 'STORAGE_S3_REGION is required' }), + forcePathStyle: z.boolean().optional(), }); export type StorageConfig = z.infer; @@ -19,5 +20,6 @@ export const readStorageConfigVariables = () => { secretKey: process.env.STORAGE_S3_SECRET_KEY, bucket: process.env.STORAGE_S3_BUCKET, region: process.env.STORAGE_S3_REGION, + forcePathStyle: process.env.STORAGE_S3_FORCE_PATH_STYLE === 'true', }; }; diff --git a/docker-compose.yaml b/docker-compose.yaml index 9d7528cb..82ec3f7d 100644 --- a/docker-compose.yaml +++ b/docker-compose.yaml @@ -150,6 +150,7 @@ services: STORAGE_S3_SECRET_KEY: 'your_minio_password' STORAGE_S3_BUCKET: 'colanode-avatars' STORAGE_S3_REGION: 'us-east-1' + STORAGE_S3_FORCE_PATH_STYLE: 'true' # ─────────────────────────────────────────────────────────────── # SMTP configuration