I’m running Rocket.Chat version 8.0.1 in a Docker container and minIO also in a docker container for file uploads.
Files uploaded via Rocket.Chat (store: AmazonS3:Uploads) are automatically assigned an expiresAt timestamp and become unavailable after ~1 day, even though:
-
URL expiration is set to 0
-
File retention policies are disabled
Environment:
-
Rocket.Chat version: x.y.z
-
Deployment: Docker
-
Storage: AmazonS3 (MinIO backend)
-
MongoDB: 7.0
Observed Behavior:
-
Uploaded files work immediately.
-
After ~1 day, files stop being downloadable/previewable.
-
In MongoDB,
rocketchat_uploadsdocuments always haveexpiresAt = uploadedAt + ~1 day. -
expiresAtpersists for new uploads even after disabling URL expiry & retention policies.
What I’ve Checked / Tried:
-
FileUpload_S3_URLExpiryTimeSpan = 0in admin settings -
Disabled all retention policies
-
Verified Mongo indexes;
expiresAtindex is not TTL -
Only one Rocket.Chat + Mongo instance running
Questions:
-
Should Rocket.Chat continue setting
expiresAtwhen URL expiry and retention are disabled? -
How can uploads remain accessible indefinitely with AmazonS3/MinIO?
-
Are there server-side jobs or TTL configs outside Mongo that delete files based on
expiresAt? -
If this is a bug, which part of the code controls setting
expiresAtfor S3 uploads?