diff --git a/docker/gitea/custom/public/img/avatar_default.png b/docker/gitea/custom/public/img/avatar_default.png
new file mode 100644
index 0000000000..4ad6e2a34a
Binary files /dev/null and b/docker/gitea/custom/public/img/avatar_default.png differ
diff --git a/docker/gitea/custom/public/img/favicon.ico b/docker/gitea/custom/public/img/favicon.ico
new file mode 100644
index 0000000000..8a92dda1e9
Binary files /dev/null and b/docker/gitea/custom/public/img/favicon.ico differ
diff --git a/docker/gitea/custom/public/img/favicon.png b/docker/gitea/custom/public/img/favicon.png
new file mode 100644
index 0000000000..ab0acd5eaa
Binary files /dev/null and b/docker/gitea/custom/public/img/favicon.png differ
diff --git a/docker/gitea/custom/public/img/gitea-safari.svg b/docker/gitea/custom/public/img/gitea-safari.svg
new file mode 100644
index 0000000000..26a09f7731
--- /dev/null
+++ b/docker/gitea/custom/public/img/gitea-safari.svg
@@ -0,0 +1,30 @@
+<?xml version="1.0" standalone="no"?>
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 20010904//EN"
+ "http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
+<svg version="1.0" xmlns="http://www.w3.org/2000/svg"
+ width="700.000000pt" height="700.000000pt" viewBox="0 0 700.000000 700.000000"
+ preserveAspectRatio="xMidYMid meet">
+<metadata>
+Created by potrace 1.11, written by Peter Selinger 2001-2013
+</metadata>
+<g transform="translate(0.000000,700.000000) scale(0.100000,-0.100000)"
+fill="#000000" stroke="none">
+<path d="M3298 6995 c-2 -1 -41 -5 -88 -9 -100 -7 -225 -22 -295 -36 -27 -5
+-61 -12 -75 -14 -198 -36 -503 -126 -657 -193 -21 -9 -40 -17 -43 -18 -80 -23
+-429 -210 -575 -308 -69 -46 -297 -217 -305 -228 -3 -3 -25 -23 -50 -44 -85
+-70 -220 -205 -361 -361 -210 -232 -452 -626 -585 -952 -62 -151 -146 -411
+-169 -520 -2 -9 -8 -37 -14 -62 -11 -49 -13 -63 -35 -195 -34 -204 -40 -302
+-40 -570 0 -233 11 -378 39 -545 6 -32 24 -129 29 -155 22 -110 100 -390 125
+-450 5 -11 14 -36 21 -55 7 -19 16 -44 21 -55 5 -11 17 -43 28 -71 29 -77 129
+-279 178 -362 24 -41 43 -76 43 -78 0 -2 33 -55 73 -117 480 -736 1212 -1264
+2054 -1482 72 -19 142 -36 155 -39 13 -2 50 -9 83 -15 33 -6 71 -13 85 -16 14
+-3 52 -8 85 -11 33 -3 63 -8 66 -9 15 -10 227 -20 409 -20 188 0 341 8 430 21
+144 21 295 48 345 61 33 8 67 16 75 18 109 22 388 117 549 187 121 53 308 148
+353 179 14 11 29 19 33 19 24 0 383 257 495 355 118 103 293 278 365 365 21
+25 41 47 44 50 4 3 45 55 91 115 332 436 547 915 654 1456 14 70 28 155 32
+190 3 35 8 67 10 70 9 17 19 214 18 399 0 188 -6 331 -19 420 -3 19 -7 56 -10
+81 -3 25 -7 54 -9 65 -2 10 -11 60 -21 109 -98 525 -337 1052 -670 1480 -43
+55 -81 102 -84 105 -3 3 -35 38 -70 78 -185 211 -448 439 -681 592 -369 241
+-793 418 -1207 505 -99 20 -244 43 -393 60 -54 7 -526 16 -532 10z"/>
+</g>
+</svg>
diff --git a/docker/gitea/custom/public/img/opendev-192.png b/docker/gitea/custom/public/img/opendev-192.png
new file mode 100644
index 0000000000..6a1b4d47e7
Binary files /dev/null and b/docker/gitea/custom/public/img/opendev-192.png differ
diff --git a/docker/gitea/custom/public/img/opendev-512.png b/docker/gitea/custom/public/img/opendev-512.png
new file mode 100644
index 0000000000..e1ee060566
Binary files /dev/null and b/docker/gitea/custom/public/img/opendev-512.png differ
diff --git a/docker/gitea/custom/public/img/opendev-icon.svg b/docker/gitea/custom/public/img/opendev-icon.svg
new file mode 100644
index 0000000000..213491a130
--- /dev/null
+++ b/docker/gitea/custom/public/img/opendev-icon.svg
@@ -0,0 +1,49 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+   xmlns:dc="http://purl.org/dc/elements/1.1/"
+   xmlns:cc="http://creativecommons.org/ns#"
+   xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+   xmlns:svg="http://www.w3.org/2000/svg"
+   xmlns="http://www.w3.org/2000/svg"
+   id="svg2"
+   version="1.1"
+   xml:space="preserve"
+   width="177.285"
+   height="177.285"
+   viewBox="0 0 177.28501 177.28501"><metadata
+     id="metadata8"><rdf:RDF><cc:Work
+         rdf:about=""><dc:format>image/svg+xml</dc:format><dc:type
+           rdf:resource="http://purl.org/dc/dcmitype/StillImage" /><dc:title></dc:title></cc:Work></rdf:RDF></metadata><defs
+     id="defs6"><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath66"><path
+         d="m 533,244.125 h 72 V 316 h -72 z"
+         id="path68" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath82"><path
+         d="M 471.926,323 H 499 v 28 h -27.074 z"
+         id="path84" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath92"><path
+         d="m 502,323 h 27 v 37.035 h -27 z"
+         id="path94" /></clipPath><clipPath
+       clipPathUnits="userSpaceOnUse"
+       id="clipPath110"><path
+         d="m 645,324 h 21.719 v 26 H 645 Z"
+         id="path112" /></clipPath></defs><g
+     transform="matrix(2.5,0,0,2.5,-1334.6675,-610.3125)"
+     id="g62"><g
+       clip-path="url(#clipPath66)"
+       id="g64"><path
+         id="path70"
+         style="fill:#ee265e;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         d="m 604.781,279.582 c 0,-19.582 -15.875,-35.457 -35.457,-35.457 -19.582,0 -35.457,15.875 -35.457,35.457 0,19.582 15.875,35.457 35.457,35.457 19.582,0 35.457,-15.875 35.457,-35.457" /><path
+         id="path72"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         d="m 546.879,284.004 c 0,-3 2.441,-5.442 5.441,-5.442 3,0 5.442,2.442 5.442,5.442 0,3.004 -2.442,5.441 -5.442,5.441 -3,0 -5.441,-2.437 -5.441,-5.441 m 13.004,0 c 0,-4.168 -3.391,-7.563 -7.563,-7.563 -4.172,0 -7.562,3.395 -7.562,7.563 0,4.172 3.39,7.566 7.562,7.566 4.172,0 7.563,-3.394 7.563,-7.566" /><path
+         id="path74"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         d="m 583.555,289.449 h -5.442 c -3,0 -5.441,-2.441 -5.441,-5.445 0,-3 2.441,-5.442 5.441,-5.442 h 5.442 z m 1.062,-13.008 h -6.504 c -4.172,0 -7.562,3.395 -7.562,7.563 0,4.172 3.39,7.566 7.562,7.566 h 6.504 c 0.586,0 1.059,-0.476 1.059,-1.062 V 277.5 c 0,-0.586 -0.473,-1.059 -1.059,-1.059" /><path
+         id="path76"
+         style="fill:#ffffff;fill-opacity:1;fill-rule:nonzero;stroke:none"
+         d="m 590.906,285.203 c -0.664,0 -1.199,-0.539 -1.199,-1.199 0,-0.66 0.535,-1.195 1.199,-1.195 0.66,0 1.196,0.535 1.196,1.195 0,0.66 -0.536,1.199 -1.196,1.199 m 0,10.465 c 0.66,0 1.196,0.539 1.196,1.199 0,0.66 -0.536,1.199 -1.196,1.199 -0.664,0 -1.199,-0.539 -1.199,-1.199 0,-0.66 0.535,-1.199 1.199,-1.199 m -52.019,-15.242 c 0.222,-0.227 0.527,-0.352 0.843,-0.352 0.321,0 0.622,0.125 0.848,0.352 0.469,0.469 0.469,1.23 0,1.695 -0.453,0.453 -1.242,0.453 -1.695,0 -0.465,-0.465 -0.465,-1.226 0.004,-1.695 m 10.359,-7.742 c -0.453,0.453 -1.242,0.453 -1.695,0 -0.469,-0.469 -0.469,-1.227 0,-1.696 0.234,-0.234 0.539,-0.351 0.847,-0.351 0.309,0 0.614,0.117 0.848,0.351 0.465,0.469 0.465,1.227 0,1.696 m 45.566,-13.707 h -10.195 c -0.586,0 -1.062,0.476 -1.062,1.062 v 10.043 h -5.512 c -5.828,0 -10.828,3.609 -12.898,8.707 -0.676,-1.652 -1.68,-3.195 -3.02,-4.535 -2.887,-2.887 -6.797,-4.313 -10.836,-4.02 -0.148,-0.265 -0.32,-0.519 -0.543,-0.746 -1.293,-1.293 -3.398,-1.293 -4.695,0 -1.293,1.293 -1.293,3.399 0,4.696 0.629,0.625 1.461,0.972 2.347,0.972 0.887,0 1.719,-0.347 2.348,-0.972 0.52,-0.52 0.82,-1.176 0.922,-1.852 3.344,-0.176 6.566,1.031 8.957,3.422 4.602,4.601 4.602,12.09 0,16.691 -4.602,4.602 -12.086,4.602 -16.687,0 -2.137,-2.136 -3.34,-4.945 -3.438,-7.949 0.594,-0.141 1.137,-0.434 1.578,-0.875 1.293,-1.293 1.293,-3.398 0,-4.695 -1.254,-1.254 -3.441,-1.25 -4.691,0 -1.297,1.297 -1.297,3.402 -0.004,4.695 0.293,0.289 0.629,0.512 0.988,0.672 0.051,3.648 1.481,7.066 4.067,9.652 2.714,2.715 6.277,4.071 9.843,4.071 3.567,0 7.129,-1.356 9.844,-4.071 1.363,-1.363 2.379,-2.937 3.059,-4.621 2.093,5.043 7.066,8.602 12.859,8.602 h 9.73 c 0.446,1.308 1.676,2.262 3.133,2.262 1.828,0 3.317,-1.493 3.317,-3.321 0,-1.832 -1.489,-3.32 -3.317,-3.32 -1.457,0 -2.687,0.949 -3.133,2.258 h -9.73 c -6.508,0 -11.801,-5.293 -11.801,-11.801 0,-6.508 5.293,-11.801 11.801,-11.801 h 6.574 c 0.586,0 1.059,-0.473 1.059,-1.058 v -10.047 h 8.078 v 2.722 l -2.852,0.004 c -0.582,0 -1.058,0.477 -1.058,1.059 v 15.992 c -1.309,0.445 -2.258,1.672 -2.258,3.129 0,1.832 1.488,3.32 3.32,3.32 1.828,0 3.317,-1.488 3.317,-3.32 0,-1.457 -0.95,-2.684 -2.258,-3.129 v -14.93 l 2.847,-0.004 c 0.586,0 1.059,-0.476 1.059,-1.058 v -4.844 c 0,-0.586 -0.473,-1.062 -1.059,-1.062" /></g></g></svg>
\ No newline at end of file
diff --git a/docker/gitea/custom/public/img/opendev-lg.png b/docker/gitea/custom/public/img/opendev-lg.png
new file mode 100644
index 0000000000..78371edda3
Binary files /dev/null and b/docker/gitea/custom/public/img/opendev-lg.png differ
diff --git a/docker/gitea/custom/public/img/gitea-sm.png b/docker/gitea/custom/public/img/opendev-sm.png
similarity index 100%
rename from docker/gitea/custom/public/img/gitea-sm.png
rename to docker/gitea/custom/public/img/opendev-sm.png
diff --git a/docker/gitea/custom/templates/base/head_navbar.tmpl b/docker/gitea/custom/templates/base/head_navbar.tmpl
index b53cb96087..892c14d312 100644
--- a/docker/gitea/custom/templates/base/head_navbar.tmpl
+++ b/docker/gitea/custom/templates/base/head_navbar.tmpl
@@ -1,7 +1,7 @@
 <div class="ui container" id="navbar">
 	<div class="item brand" style="justify-content: space-between;">
 		<a href="{{AppSubUrl}}/">
-			<img class="ui mini image" src="{{AppSubUrl}}/img/gitea-sm.png">
+			<img class="ui mini image" src="{{AppSubUrl}}/img/opendev-sm.png">
 		</a>
 		<div class="ui basic icon button mobile-only" id="navbar-expand-toggle">
 			<i class="sidebar icon"></i>
diff --git a/docker/gitea/custom/templates/pwa/manifest_json.tmpl b/docker/gitea/custom/templates/pwa/manifest_json.tmpl
new file mode 100644
index 0000000000..3777ae596c
--- /dev/null
+++ b/docker/gitea/custom/templates/pwa/manifest_json.tmpl
@@ -0,0 +1,31 @@
+{
+    "short_name": "OpenDev",
+    "name": "OpenDev",
+    "icons": [
+      {
+        "src": "{{AppSubUrl}}/img/opendev-lg.png",
+        "type": "image/png",
+        "sizes": "880x880"
+      },
+      {
+        "src": "{{AppSubUrl}}/img/opendev-sm.png",
+        "type": "image/png",
+        "sizes": "120x120"
+      },
+      {
+        "src": "{{AppSubUrl}}/img/opendev-512.png",
+        "type": "image/png",
+        "sizes": "512x512"
+      },
+      {
+        "src": "{{AppSubUrl}}/img/opendev-192.png",
+        "type": "image/png",
+        "sizes": "192x192"
+      }
+    ],
+    "start_url": "{{AppSubUrl}}/",
+    "scope": "{{AppSubUrl}}/",
+    "background_color": "#FAFAFA",
+    "display": "standalone",
+    "theme_color": "{{ThemeColorMetaTag}}"
+  }
\ No newline at end of file