diff --git a/pount/apps/iiif/storage_backends.py b/pount/apps/iiif/storage_backends.py
index 1c2b67ce4023717807a97489015a0659d17c1282..3f45cafc0c172edbadd35922ff2661c4d952fd81 100644
--- a/pount/apps/iiif/storage_backends.py
+++ b/pount/apps/iiif/storage_backends.py
@@ -1,5 +1,15 @@
+from django.conf import settings
+
 from pount.apps.api.storage_backends import MediaStorage
 
 
 class IIIFFileStorage(MediaStorage):
-    location = "iiif"
+    location = str(settings.CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_PATH_PREFIX).rstrip("/")
+
+    def get_default_settings(self):
+        default_settings = super().get_default_settings()
+        default_settings["access_key"] = settings.CANTALOUPE_S3SOURCE_ACCESS_KEY_ID
+        default_settings["secret_key"] = settings.CANTALOUPE_S3SOURCE_SECRET_KEY
+        default_settings["bucket_name"] = settings.CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME
+        default_settings["endpoint_url"] = settings.CANTALOUPE_S3SOURCE_ENDPOINT
+        return default_settings
diff --git a/pount/apps/iiif/views.py b/pount/apps/iiif/views.py
index 8a21ecc0ced9f0997783dbcc907a768957f31c25..bc175f7a159baaf2d567f441619402402626fdbb 100644
--- a/pount/apps/iiif/views.py
+++ b/pount/apps/iiif/views.py
@@ -1,5 +1,3 @@
-from os import environ
-
 import urllib3
 from django.conf import settings
 from django.contrib.auth import get_user_model
@@ -56,7 +54,7 @@ ProxyView.get_request_headers = get_request_headers
 
 
 class IIIFProxyView(ProxyView):
-    upstream = environ.get("IIIF_UPSTREAM_URL", "http://localhost:8182/iiif/")
+    upstream = settings.CANTALOUPE_IIIF_UPSTREAM_URL
     add_x_forwarded = True
 
     def __init__(self, *args, **kwargs):
diff --git a/pount/settings/common.py b/pount/settings/common.py
index b707df131e8156f2d609bbc989f00feba9333565..c903d32de7a75ce52e8192085ab4d3fc21f87eb5 100644
--- a/pount/settings/common.py
+++ b/pount/settings/common.py
@@ -505,3 +505,14 @@ MONGODB_PASSWORD = environ.get("MONGODB_PASSWORD", "pount_dev")
 MONGODB_HOST = environ.get("MONGODB_HOST", "localhost")
 MONGODB_DATABASE = environ.get("MONGODB_DATABASE", "pount_dev")
 MONGODB_URI = f"mongodb://{MONGODB_USER}:{MONGODB_PASSWORD}@{MONGODB_HOST}/?retryWrites=true&w=majority&authSource={MONGODB_DATABASE}"
+
+
+##############
+# CANTALOUPE #
+##############
+CANTALOUPE_S3SOURCE_SECRET_KEY = environ.get("CANTALOUPE_S3SOURCE_SECRET_KEY", AWS_SECRET_ACCESS_KEY)
+CANTALOUPE_S3SOURCE_ACCESS_KEY_ID = environ.get("CANTALOUPE_S3SOURCE_ACCESS_KEY_ID", AWS_ACCESS_KEY_ID)
+CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME = environ.get("CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME", AWS_STORAGE_BUCKET_NAME)
+CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_PATH_PREFIX = environ.get("CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_PATH_PREFIX", "iiif/")
+CANTALOUPE_S3SOURCE_ENDPOINT = environ.get("CANTALOUPE_S3SOURCE_ENDPOINT", AWS_S3_ENDPOINT_URL)
+CANTALOUPE_IIIF_UPSTREAM_URL = environ.get("CANTALOUPE_IIIF_UPSTREAM_URL", "http://localhost:8182/iiif/")
diff --git a/pount/settings/dev.py b/pount/settings/dev.py
index b7433718f1ef5a1d659bb7a1f644f8141b4b5d94..e845c06ed54efeff64be50ce7657b29696d581ff 100644
--- a/pount/settings/dev.py
+++ b/pount/settings/dev.py
@@ -73,5 +73,9 @@ REST_FRAMEWORK["DEFAULT_AUTHENTICATION_CLASSES"] = [
     "rest_framework.authentication.SessionAuthentication",
 ]
 
+##############
+# CANTALOUPE #
+##############
+CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME = environ.get("CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME", AWS_STORAGE_BUCKET_NAME)
 
 icecream_install()
diff --git a/pount/settings/preprod.py b/pount/settings/preprod.py
index 27cf3f052afd44f095002110de67c1022c3990a9..a8500fcbb954a02cbe7deaa5a6f85b11deb9a26b 100644
--- a/pount/settings/preprod.py
+++ b/pount/settings/preprod.py
@@ -106,3 +106,9 @@ MONGODB_PASSWORD = "{{ mongodb_password }}"
 MONGODB_HOST = "{{ mongodb_host }}"
 MONGODB_DATABASE = "{{ mongodb_database }}"
 MONGODB_URI = f"mongodb://{MONGODB_USER}:{MONGODB_PASSWORD}@{MONGODB_HOST}/?retryWrites=true&w=majority&authSource={MONGODB_DATABASE}"
+
+##############
+# CANTALOUPE #
+##############
+CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME = environ.get("CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME", "pount-iiif-pprd")
+CANTALOUPE_IIIF_UPSTREAM_URL = environ.get("CANTALOUPE_IIIF_UPSTREAM_URL", "http://cantaloupe-pprd-1.srv.unistra.fr:8182/iiif/")
diff --git a/pount/settings/prod.py b/pount/settings/prod.py
index 86ca0a5bc8d1ac78e4f97091e207511f680f5446..c898c149f22404720ebb3a3db6c3af96cc66a8e1 100644
--- a/pount/settings/prod.py
+++ b/pount/settings/prod.py
@@ -106,3 +106,10 @@ MONGODB_PASSWORD = "{{ mongodb_password }}"
 MONGODB_HOST = "{{ mongodb_host }}"
 MONGODB_DATABASE = "{{ mongodb_database }}"
 MONGODB_URI = f"mongodb://{MONGODB_USER}:{MONGODB_PASSWORD}@{MONGODB_HOST}/?retryWrites=true&w=majority&authSource={MONGODB_DATABASE}"
+
+
+##############
+# CANTALOUPE #
+##############
+CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME = environ.get("CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME", "pount-iiif-prod")
+CANTALOUPE_IIIF_UPSTREAM_URL = environ.get("CANTALOUPE_IIIF_UPSTREAM_URL", "http://cantaloupe-prod-1.srv.unistra.fr:8182/iiif/")
diff --git a/pount/settings/test.py b/pount/settings/test.py
index 624fcb777ab39dc131aae62433a2025f355ef812..e266d4f634f8e1c1bba5c9be7ae9032b824cbd52 100644
--- a/pount/settings/test.py
+++ b/pount/settings/test.py
@@ -120,3 +120,9 @@ REST_FRAMEWORK["DEFAULT_AUTHENTICATION_CLASSES"] = [
     "rest_framework.authentication.TokenAuthentication",
     "rest_framework.authentication.SessionAuthentication",
 ]
+
+##############
+# CANTALOUPE #
+##############
+CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME = environ.get("CANTALOUPE_S3SOURCE_BASICLOOKUPSTRATEGY_BUCKET_NAME", "pount-iiif-test")
+CANTALOUPE_IIIF_UPSTREAM_URL = environ.get("CANTALOUPE_IIIF_UPSTREAM_URL", "http://cantaloupe-test-1.srv.unistra.fr:8182/iiif/")