diff --git a/chart/files/mapcache.xml b/chart/files/mapcache.xml
index c84abb6d4fb052ff60a5f63916b571cf3af59522..c83453ecbf893c6a18cff0e8b83452b363a0a4e8 100644
--- a/chart/files/mapcache.xml
+++ b/chart/files/mapcache.xml
@@ -63,9 +63,29 @@
     <container>{{ .Values.config.objectStorage.cache.container }}</container>
     <key>{{ .Values.config.objectStorage.key | default "/{tileset}/{grid}/{dim}/{z}/{x}/{y}.{ext}" }}</key>
   </cache>
-  {{- else if eq .Values.config.objectStorage.cache.type "S3"}} # TODO
+  {{- else if eq .Values.config.objectStorage.cache.type "S3" }}
+  <cache name="cache" type="S3">
+    <url>{{ endpoint_url }}/{tileset}/{grid}/{z}/{x}/{y}/{ext}</url>
+    <!-- <headers>
+      <Host>foo.s3.amazonaws.com</Host>
+    </headers> -->
+    <id>{{ .Values.config.objectStorage.cache.access_key_id }}</id>
+    <secret>{{ .Values.config.objectStorage.cache.secret_access_key }}</secret>
+    {{- if .Values.config.objectStorage.cache.region }}
+    <region>{{ .Values.config.objectStorage.cache.region }}</region>
+    {{- end }}
+    <!-- <operation type="put">
+      <headers>
+        <x-amz-storage-class>REDUCED_REDUNDANCY</x-amz-storage-class>
+        <x-amz-acl>public-read</x-amz-acl>
+      </headers>
+    </operation> -->
+  </cache>
   {{- else }}
-  <!-- no storage configured -->
+  <!-- no storage configured, using temp one -->
+  <cache name="cache" type="sqlite3">
+    <dbfile>/tmp/cache.db</dbfile>
+  </cache>
   {{- end }}
 
   {{- define "mapcache-layerid" -}}{{ .collection_name }}{{ if .level_name }}__{{ .level_name }}{{ end }}{{ if .sub_layer_name }}__{{ .sub_layer_name }}{{ end }}{{- end }}