diff --git a/lib/pleroma/upload.ex b/lib/pleroma/upload.ex
index 3061b2aed..a52b698bf 100644
--- a/lib/pleroma/upload.ex
+++ b/lib/pleroma/upload.ex
@@ -245,6 +245,29 @@ defmodule Pleroma.Upload do
             Pleroma.Web.base_url() <> "/media/"
         end
 
+      Pleroma.Uploaders.S3 ->
+        bucket = Config.get([Pleroma.Uploaders.S3, :bucket])
+
+        bucket_with_namespace =
+          cond do
+            truncated_namespace = Config.get([Pleroma.Uploaders.S3, :truncated_namespace]) ->
+              truncated_namespace
+
+            namespace = Config.get([Pleroma.Uploaders.S3, :bucket_namespace]) ->
+              namespace <> ":" <> bucket
+
+            true ->
+              bucket
+          end
+
+        cond do
+          !is_nil(public_endpoint) ->
+            Path.join([public_endpoint, bucket_with_namespace])
+
+          true ->
+            Path.join([upload_base_url, bucket_with_namespace])
+        end
+
       _ ->
         cond do
           !is_nil(public_endpoint) ->
diff --git a/lib/pleroma/uploaders/s3.ex b/lib/pleroma/uploaders/s3.ex
index 5a91410d7..29a1c2861 100644
--- a/lib/pleroma/uploaders/s3.ex
+++ b/lib/pleroma/uploaders/s3.ex
@@ -12,26 +12,10 @@ defmodule Pleroma.Uploaders.S3 do
   # links with less strict filenames
   @impl true
   def get_file(file) do
-    config = Config.get([__MODULE__])
-    bucket = Keyword.fetch!(config, :bucket)
-
-    bucket_with_namespace =
-      cond do
-        truncated_namespace = Keyword.get(config, :truncated_namespace) ->
-          truncated_namespace
-
-        namespace = Keyword.get(config, :bucket_namespace) ->
-          namespace <> ":" <> bucket
-
-        true ->
-          bucket
-      end
-
     {:ok,
      {:url,
       Path.join([
         Pleroma.Upload.base_url(),
-        bucket_with_namespace,
         strict_encode(URI.decode(file))
       ])}}
   end