diff --git a/README.md b/README.md
index ea8125cb..681deb37 100644
--- a/README.md
+++ b/README.md
@@ -114,9 +114,28 @@ Some env options are available for use this interface for **only one server**.
- `SHOW_CATALOG_NB_TAGS`: Show number of tags per images on catalog page. This will produce + nb images requests, not recommended on large registries. (default: `false`).
- `HISTORY_CUSTOM_LABELS`: Expose custom labels in history page, custom labels will be processed like maintainer label.
- `USE_CONTROL_CACHE_HEADER`: Use `Control-Cache` header and set to `no-store, no-cache`. This will avoid some issues on multi-arch images (see [#260](https://github.com/Joxit/docker-registry-ui/issues/260)). This option requires registry configuration: `Access-Control-Allow-Headers` with `Cache-Control`. (default: `false`).
+- `THEME`: Chose your default theme, could be `dark`, `light` or `auto`. (default: `auto`). Since 2.4.0
+- `THEME_*`: See table in [Theme options](#theme-options) section. Since 2.4.0
There are some examples with [docker-compose](https://docs.docker.com/compose/) and docker-registry-ui as proxy [here](https://github.com/Joxit/docker-registry-ui/tree/main/examples/ui-as-proxy/) or docker-registry-ui as standalone [here](https://github.com/Joxit/docker-registry-ui/tree/main/examples/ui-as-standalone/).
+### Theme options
+
+This featureswas added to version 2.4.0. See more about this in [#283](https://github.com/Joxit/docker-registry-ui/pull/283).
+
+| Environment variable | light theme value | dark theme value |
+| --- | --- | --- |
+| `THEME_PRIMARY_TEXT` | `#25313b` | `#8A9EBA` |
+| `THEME_NEUTRAL_TEXT` | `#777777` | `#36527A` |
+| `THEME_BACKGROUND` | `#ffffff` | `#22272e` |
+| `THEME_HOVER_BACKGROUND` | `#eeeeee` | `#30404D` |
+| `THEME_ACCENT_TEXT` | `#6680a1` | `#5684FF` |
+| `THEME_HEADER_TEXT` | `#ffffff` | `#ffffff` |
+| `THEME_HEADER_BACKGROUND` | `#25313b` | `#333A45` |
+| `THEME_FOOTER_TEXT` | `#ffffff` | `#ffffff` |
+| `THEME_FOOTER_NEUTRAL_TEXT` | `#999999` | `#999999` |
+| `THEME_FOOTER_BACKGROUND` | `#555555` | `#555555` |
+
## Using CORS
Your server should be configured to accept CORS.
diff --git a/bin/90-docker-registry-ui.sh b/bin/90-docker-registry-ui.sh
index 0f912062..155aff8c 100755
--- a/bin/90-docker-registry-ui.sh
+++ b/bin/90-docker-registry-ui.sh
@@ -12,6 +12,10 @@ sed -i "s~\${SHOW_CATALOG_NB_TAGS}~${SHOW_CATALOG_NB_TAGS}~" index.html
sed -i "s~\${HISTORY_CUSTOM_LABELS}~${HISTORY_CUSTOM_LABELS}~" index.html
sed -i "s~\${USE_CONTROL_CACHE_HEADER}~${USE_CONTROL_CACHE_HEADER}~" index.html
+grep -o 'THEME[A-Z_]*' index.html | while read e; do
+ sed -i "s~\${$e}~$(printenv $e)~" index.html
+done
+
if [ -z "${DELETE_IMAGES}" ] || [ "${DELETE_IMAGES}" = false ] ; then
sed -i "s/\${DELETE_IMAGES}/false/" index.html
else
diff --git a/dist/images/docker-logo.svg b/dist/images/docker-logo.svg
index c684065c..63dbf5d4 100644
--- a/dist/images/docker-logo.svg
+++ b/dist/images/docker-logo.svg
@@ -1 +1 @@
-
\ No newline at end of file
+
\ No newline at end of file
diff --git a/dist/index.html b/dist/index.html
index 5632c9c6..7c43c2fd 100644
--- a/dist/index.html
+++ b/dist/index.html
@@ -26,4 +26,15 @@
show-catalog-nb-tags="${SHOW_CATALOG_NB_TAGS}"
history-custom-labels="${HISTORY_CUSTOM_LABELS}"
use-control-cache-header="${USE_CONTROL_CACHE_HEADER}"
+ theme="${THEME}"
+ theme-primary-text="${THEME_PRIMARY_TEXT}"
+ theme-neutral-text="${THEME_NEUTRAL_TEXT}"
+ theme-background="${THEME_BACKGROUND}"
+ theme-hover-background="${THEME_HOVER_BACKGROUND}"
+ theme-accent-text="${THEME_ACCENT_TEXT}"
+ theme-header-text="${THEME_HEADER_TEXT}"
+ theme-header-background="${THEME_HEADER_BACKGROUND}"
+ theme-footer-text="${THEME_FOOTER_TEXT}"
+ theme-footer-neutra-text="${THEME_FOOTER_NEUTRAL_TEXT}"
+ theme-footer-background="${THEME_FOOTER_BACKGROUND}"
>