Reproduction steps
Instance Setup:
- Latest update on the official docker image
- External S3-compatible Object Storage
- FLUXER_S3_FORCE_PATH_STYLE=true
- COMPOSE_FILE=docker-compose.yml:external-object-store.compose.yml
FLUXER_S3_BUCKET_CDN, FLUXER_S3_BUCKET_UPLOADS, FLUXER_S3_BUCKET_REPORTS and FLUXER_S3_BUCKET_HARVESTS´ instead directly reference your bucket in the url used for FLUXER_S3_ENDPOINT`.
Reproduction:
- Login with any account
- Attempt to any message containing the following filetypes:
css,.pdf,.epub,.flatpakref,.txt, any office format files
- Observe that the message appears to upload the file and then fails:
- Try to send another message containing any common; Image, Video or Audio Format
- Observe that the Message sent successfully
- The files i attempted to upload arrived in the S3 under the fluxer-uploads/ prefix
- The files did not end up as attachments in the fluxer/attachments/ prefix
Expected behaviour
Files upload as attachments.
Actual behaviour
Some files do not properly upload as attachments.
Further testing shows that this behavior only occurs if a single bucket is set to host the files by directly being defined in the url used for
FLUXER_S3_ENDPOINT. (This will only work if FLUXER_S3_FORCE_PATH_STYLE=true otherwise the fileupload fails)
Setting different Buckets for FLUXER_S3_BUCKET_CDN, FLUXER_S3_BUCKET_UPLOADS, FLUXER_S3_BUCKET_REPORTS and `FLUXER_S3_BUCKET_HARVESTS´ fixes this behaviour.Build information
Web:
Canary Web 2026.1012.2059, Linux (x64), Firefox 157.0, Locale en-USDesktop:
Canary Desktop 2026.1009.45608, Web 2026.1011.165018, Linux 7.2.9-100.fc43.x86_64 (x64), Electron 44.4.1, Chrome 152.0.7977.78, Node 24.21.0, Locale en-US
Platform
Self-hosting
Evidence
Logs:
- Api Error:
{ "level":"error", "time":"2026-10-12T10:51:28.570Z", "service":"errors", "env":"production", "err":{ "type":"NoSuchBucket", "message":"The specified bucket does not exist.", "stack":"NoSuchBucket: The specified bucket does not exist. at S3RestXmlProtocol.handleError (/usr/src/app/fluxer_api/node_modules/.pnpm/@aws-sdk+core@3.978.0/node_modules/@aws-sdk/core/dist-cjs/submodules/protocols/index.js:2834:27) at process.processTicksAndRejections (node:internal/process/task_queues:104:5) at async S3RestXmlProtocol.deserializeResponse (/usr/src/app/fluxer_api/node_modules/.pnpm/@smithy+core@3.34.1/node_modules/@smithy/core/dist-cjs/submodules/protocols/index.js:365:13) at async /usr/src/app/fluxer_api/node_modules/.pnpm/@smithy+core@3.34.1/node_modules/@smithy/core/dist-cjs/submodules/schema/index.js:23:24 at async /usr/src/app/fluxer_api/node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.76/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/submodules/s3/index.js:365:20 at async /usr/src/app/fluxer_api/node_modules/.pnpm/@smithy+core@3.34.1/node_modules/@smithy/core/dist-cjs/submodules/retry/index.js:175:50 at async /usr/src/app/fluxer_api/node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.76/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/submodules/s3/index.js:62:28 at async /usr/src/app/fluxer_api/node_modules/.pnpm/@aws-sdk+middleware-sdk-s3@3.972.76/node_modules/@aws-sdk/middleware-sdk-s3/dist-cjs/submodules/s3/index.js:89:20 at async /usr/src/app/fluxer_api/node_modules/.pnpm/@aws-sdk+core@3.978.0/node_modules/@aws-sdk/core/dist-cjs/submodules/client/index.js:125:26 at async StorageService.copyObject (/usr/src/app/fluxer_api/src/api/infrastructure/StorageService.ts:492:4)", "$fault":"client", "$metadata" { "httpStatusCode":404, "requestId":"[REQUEST_ID]", "extendedRequestId":"[REQUEST_ID]", "attempts":1,"totalRetryDelay":0 }, "name":"NoSuchBucket", "Code":"NoSuchBucket", "RequestId":"[REQUEST_ID]", "BucketName":"fluxer-uploads" }, "status":500, "method":"POST", "path":"/channels/:channel_id/messages","requestId":"[REQUEST_ID]", "msg":"Unhandled error occurred" }