diff --git a/CHANGELOG.md b/CHANGELOG.md
index 93b51220..8277743d 100644
--- a/CHANGELOG.md
+++ b/CHANGELOG.md
@@ -76,6 +76,7 @@ v1.6.0 - unreleased
- Enhancement: Move Mailu Docker network to a fixed subnet ([#727](https://github.com/Mailu/Mailu/issues/727))
- Enhancement: Added regex validation for alias username ([#764](https://github.com/Mailu/Mailu/issues/764))
- Enhancement: Update documentation
+- Enhancement: Include favicon package ([#801](https://github.com/Mailu/Mailu/issues/801), ([#802](https://github.com/Mailu/Mailu/issues/802))
- Upstream: Update Roundcube
- Upstream: Update Rainloop
- Bug: Rainloop fails with "domain not allowed" ([#93](https://github.com/Mailu/Mailu/issues/93))
diff --git a/core/admin/mailu/ui/templates/base.html b/core/admin/mailu/ui/templates/base.html
index 73fa7aa7..c27776e2 100644
--- a/core/admin/mailu/ui/templates/base.html
+++ b/core/admin/mailu/ui/templates/base.html
@@ -13,6 +13,13 @@
{% block head %}
{{super()}}
+
+
+
+
+
+
+
{% block scripts %}
{{super()}}
diff --git a/core/nginx/Dockerfile b/core/nginx/Dockerfile
index 8b1a2bae..6afa8301 100644
--- a/core/nginx/Dockerfile
+++ b/core/nginx/Dockerfile
@@ -10,6 +10,7 @@ RUN apk add --no-cache certbot nginx nginx-mod-mail openssl curl \
&& pip3 install idna requests watchdog
COPY conf /conf
+COPY static /static
COPY *.py /
EXPOSE 80/tcp 443/tcp 110/tcp 143/tcp 465/tcp 587/tcp 993/tcp 995/tcp 25/tcp 10025/tcp 10143/tcp
diff --git a/core/nginx/conf/nginx.conf b/core/nginx/conf/nginx.conf
index c90f7806..7107a351 100644
--- a/core/nginx/conf/nginx.conf
+++ b/core/nginx/conf/nginx.conf
@@ -38,6 +38,8 @@ http {
{% if KUBERNETES_INGRESS != 'true' %}
# Main HTTP server
server {
+ # Favicon stuff
+ root /static;
# Variables for proxifying
set $admin {{ HOST_ADMIN }};
set $antispam {{ HOST_ANTISPAM }};
@@ -90,9 +92,9 @@ http {
{% if WEB_WEBMAIL != '/' %}
location / {
{% if WEBROOT_REDIRECT %}
- return 301 {{ WEBROOT_REDIRECT }};
+ try_files $uri {{ WEBROOT_REDIRECT }};
{% else %}
- return 404;
+ try_files $uri =404;
{% endif %}
}
{% endif %}
diff --git a/core/nginx/static/android-chrome-192x192.png b/core/nginx/static/android-chrome-192x192.png
new file mode 100644
index 00000000..86231db9
Binary files /dev/null and b/core/nginx/static/android-chrome-192x192.png differ
diff --git a/core/nginx/static/android-chrome-512x512.png b/core/nginx/static/android-chrome-512x512.png
new file mode 100644
index 00000000..f029c9fd
Binary files /dev/null and b/core/nginx/static/android-chrome-512x512.png differ
diff --git a/core/nginx/static/apple-touch-icon.png b/core/nginx/static/apple-touch-icon.png
new file mode 100644
index 00000000..b4f92f33
Binary files /dev/null and b/core/nginx/static/apple-touch-icon.png differ
diff --git a/core/nginx/static/browserconfig.xml b/core/nginx/static/browserconfig.xml
new file mode 100644
index 00000000..5aecc916
--- /dev/null
+++ b/core/nginx/static/browserconfig.xml
@@ -0,0 +1,9 @@
+
+
+
+
+
+ #00aba9
+
+
+
diff --git a/core/nginx/static/favicon-16x16.png b/core/nginx/static/favicon-16x16.png
new file mode 100644
index 00000000..ff35d4b0
Binary files /dev/null and b/core/nginx/static/favicon-16x16.png differ
diff --git a/core/nginx/static/favicon-32x32.png b/core/nginx/static/favicon-32x32.png
new file mode 100644
index 00000000..2b6b749b
Binary files /dev/null and b/core/nginx/static/favicon-32x32.png differ
diff --git a/core/nginx/static/favicon.ico b/core/nginx/static/favicon.ico
new file mode 100644
index 00000000..f1f3fe03
Binary files /dev/null and b/core/nginx/static/favicon.ico differ
diff --git a/core/nginx/static/mstile-150x150.png b/core/nginx/static/mstile-150x150.png
new file mode 100644
index 00000000..04c609f7
Binary files /dev/null and b/core/nginx/static/mstile-150x150.png differ
diff --git a/core/nginx/static/safari-pinned-tab.svg b/core/nginx/static/safari-pinned-tab.svg
new file mode 100644
index 00000000..43cea812
--- /dev/null
+++ b/core/nginx/static/safari-pinned-tab.svg
@@ -0,0 +1,25 @@
+
+
+
diff --git a/core/nginx/static/site.webmanifest b/core/nginx/static/site.webmanifest
new file mode 100644
index 00000000..b20abb7c
--- /dev/null
+++ b/core/nginx/static/site.webmanifest
@@ -0,0 +1,19 @@
+{
+ "name": "",
+ "short_name": "",
+ "icons": [
+ {
+ "src": "/android-chrome-192x192.png",
+ "sizes": "192x192",
+ "type": "image/png"
+ },
+ {
+ "src": "/android-chrome-512x512.png",
+ "sizes": "512x512",
+ "type": "image/png"
+ }
+ ],
+ "theme_color": "#ffffff",
+ "background_color": "#ffffff",
+ "display": "standalone"
+}
diff --git a/docs/configuration.rst b/docs/configuration.rst
index 2f44b293..b8f2a90c 100644
--- a/docs/configuration.rst
+++ b/docs/configuration.rst
@@ -71,6 +71,14 @@ Web settings
The ``WEB_ADMIN`` contains the path to the main admin interface, while
``WEB_WEBMAIL`` contains the path to the Web email client.
+The ``WEBROOT_REDIRECT`` redirects all non-found queries to the set path.
+An empty ``WEBROOT_REDIRECT`` value disables redirecting and enables classic
+behavior of a 404 result when not found.
+All three options need a leading slash (``/``) to work.
+
+ .. note:: ``WEBROOT_REDIRECT`` has to point to a valid path on the webserver.
+ This means it cannot point to any services which are not enabled.
+ For example, don't point it to ``/webmail`` when ``WEBMAIL=none``
Both ``SITENAME`` and ``WEBSITE`` are customization options for the panel menu
in the admin interface, while ``SITENAME`` is a customization option for