# How to add a custom logo in AWX top left

**URL:** <https://forum.ansible.com/t/how-to-add-a-custom-logo-in-awx-top-left/8817>\
**Category:** Get Help\
**Tags:** awx\
**Created:** [September 27, 2024, 1:50pm UTC](https://forum.ansible.com/t/how-to-add-a-custom-logo-in-awx-top-left/8817 "2024-09-27T13:50:44Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![RainerP](https://avatars.discourse-cdn.com/v4/letter/r/2acd7d/32.png) [@RainerP](https://forum.ansible.com/u/RainerP)\
**Post date:** [September 27, 2024, 1:50pm UTC](https://forum.ansible.com/t/how-to-add-a-custom-logo-in-awx-top-left/8817/1 "2024-09-27T13:50:44Z")

</div>

Hi,  
I am using AWX 24.6.0 and would like to use a custom logo on the top left of the Dashboard.  
I was happy this version supports to upload a custom logo, but this only works for the login screen.  
I noticed [Setting a custom logo doesn't replace AWX logo in top-left of UI · Issue #1316 · ansible/awx · GitHub](https://github.com/ansible/awx/issues/1316) but was hoping to find a solution here.

Many thanks  
Rainer

---

<div class="post-metadata">

**Author:** ![kurokobo](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/kurokobo/32/182_2.png) [@kurokobo](https://forum.ansible.com/u/kurokobo)\
**Post date:** [September 27, 2024, 1:58pm UTC](https://forum.ansible.com/t/how-to-add-a-custom-logo-in-awx-top-left/8817/2 "2024-09-27T13:58:44Z")

</div>

Hi,

This can be achieved by customizing the AWX CR to mount your images at the path where the default logos are placed.

See `Custom Logos` section in the Operator docs:

[https://ansible.readthedocs.io/projects/awx-operator/en/latest/user-guide/advanced-configuration/custom-volume-and-volume-mount-options.html?h=logo#custom-logos](https://ansible.readthedocs.io/projects/awx-operator/en/latest/user-guide/advanced-configuration/custom-volume-and-volume-mount-options.html?h=logo#custom-logos)

---

<div class="post-metadata">

**Author:** ![RainerP](https://avatars.discourse-cdn.com/v4/letter/r/2acd7d/32.png) [@RainerP](https://forum.ansible.com/u/RainerP)\
**Post date:** [September 30, 2024, 8:25am UTC](https://forum.ansible.com/t/how-to-add-a-custom-logo-in-awx-top-left/8817/3 "2024-09-30T08:25:56Z")

</div>

Hi,  
thank you very much.  
Unfortunately it doesn’t work for the me, my new \*.svg logo isn’t displayed. I fixed errors I noticed with `kubectl describe pod awx-webxxxx` and saw there are no errors in the log `kubectl logs awx-webxxxx`.  
Are there specific svg format requirements to get it work ? (also tried with \*.png without success).

Thanks  
Rainer

---

<div class="post-metadata">

**Author:** ![kurokobo](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/kurokobo/32/182_2.png) [@kurokobo](https://forum.ansible.com/u/kurokobo)\
**Post date:** [September 30, 2024, 9:09am UTC](https://forum.ansible.com/t/how-to-add-a-custom-logo-in-awx-top-left/8817/4 "2024-09-30T09:09:19Z")

</div>

Please provide how did you configure your AWX CR and result of `kubectl describe` command

---

<div class="post-metadata">

**Author:** ![RainerP](https://avatars.discourse-cdn.com/v4/letter/r/2acd7d/32.png) [@RainerP](https://forum.ansible.com/u/RainerP)\
**Post date:** [September 30, 2024, 11:16am UTC](https://forum.ansible.com/t/how-to-add-a-custom-logo-in-awx-top-left/8817/5 "2024-09-30T11:16:38Z")

</div>

I think I basicly did it like described:

```auto
kubectl create configmap iso-logo-header-configmap --from-file iso-logo-header.svg -n awx
kubectl create configmap iso-logo-login-configmap --from-file iso-logo-login.svg -n awx

```

added this to file awx.yaml

```auto
## add custom logos
  extra_volumes: |
    - name: logo-login
      configMap:
        defaultMode: 420
        items:
          - key: iso-logo-login.svg
            path: iso-logo-login.svg
        name: iso-logo-login-configmap
    - name: logo-header
      configMap:
        defaultMode: 420
        items:
          - key: iso-logo-header.svg
            path: iso-logo-header.svg
        name: iso-logo-header-configmap
  web_extra_volume_mounts: |
    - name: logo-login
      mountPath: /home/ansible/awx/awx-on-k3s/mount/iso-logo-login.svg
      subPath: iso-logo-login.svg
    - name: logo-header
      mountPath: /home/ansible/awx/awx-on-k3s/mount/iso-logo-header.svg
      subPath: iso-logo-header.svg

```

executed:  
` kubectl apply -f awx.yaml -n awx`  
[awx.awx.ansible.com/awx](http://awx.awx.ansible.com/awx) configured

logo files

```auto
ll /home/ansible/awx/awx-on-k3s/mount
total 40
-rw-r-----. 1 ansible ansible 14142 Sep 27 15:31 iso-logo-header.png
-rw-r-----. 1 ansible ansible 2051 Sep 27 18:11 iso-logo-header.svg
-rw-r-----. 1 ansible ansible 14142 Sep 27 15:31 iso-logo-login.png
-rw-r-----. 1 ansible ansible 2051 Sep 27 18:11 iso-logo-login.svg

```

```auto
kubectl describe pods awx-web-5dff48b9db-sfb7d -n awx

Name: awx-web-5dff48b9db-sfb7d
Namespace: awx
Priority: 0
Service Account: awx
Node: ipsnbg6vm48/10.55.127.85
Start Time: Mon, 30 Sep 2024 13:12:05 +0200
Labels: app.kubernetes.io/component=awx
                  app.kubernetes.io/managed-by=awx-operator
                  app.kubernetes.io/name=awx-web
                  app.kubernetes.io/operator-version=2.19.0
                  app.kubernetes.io/part-of=awx
                  app.kubernetes.io/version=24.6.0
                  pod-template-hash=5dff48b9db
Annotations: checksum-configmaps-config: 416f2808f9764fd68076cf21791805a14c756513
                  checksum-secret-bundle_cacert: da39a3ee5e6b4b0d3255bfef95601890afd80709
                  checksum-secret-ldap_cacert: da39a3ee5e6b4b0d3255bfef95601890afd80709
                  checksum-secret-receptor_ca: b4feee9cb6c2df87d6c9e28ee2d9752ef5f1a926
                  checksum-secret-receptor_work_signing: 5587d2b225e686a6a29b2810a7a6a260f65560e0
                  checksum-secret-route_tls: da39a3ee5e6b4b0d3255bfef95601890afd80709
                  checksum-secret-secret_key: 74ed28c0cff87d66b2b34a8ac215214246af4eb2
                  checksum-secrets-app_credentials: 9eff3e8abdbb683942720b674e2de7b12cbaa284
                  checksum-storage-persistent: adc83b19e793491b1c6ea0fd8b46cd9f32e592fc
                  kubectl.kubernetes.io/default-container: awx-web
Status: Running
IP: 10.42.0.14
IPs:
  IP: 10.42.0.14
Controlled By: ReplicaSet/awx-web-5dff48b9db
Init Containers:
  init-projects:
    Container ID: containerd://199af1b5f8bb9cc49332657c0057eefb67f2830eea7658012b183c7b3e981c16
    Image: quay.io/centos/centos:stream9
    Image ID: quay.io/centos/centos@sha256:ac0212d48e014fec37f496485b403453e9e92802e68ee276b749560ea26ddd08
    Port: <none>
    Host Port: <none>
    Command:
      /bin/sh
      -c
      chmod 775 /var/lib/awx/projects
      chgrp 1000 /var/lib/awx/projects

    State: Terminated
      Reason: Completed
      Exit Code: 0
      Started: Mon, 30 Sep 2024 13:12:05 +0200
      Finished: Mon, 30 Sep 2024 13:12:06 +0200
    Ready: True
    Restart Count: 0
    Environment:
      MY_POD_NAME: awx-web-5dff48b9db-sfb7d (v1:metadata.name)
    Mounts:
      /var/lib/awx/projects from awx-projects (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-g5bz7 (ro)
Containers:
  redis:
    Container ID: containerd://782ced11bff11670ed636269f440b24e9a6111b54c25544afc0dfe0b4636dec6
    Image: docker.io/redis:7
    Image ID: docker.io/library/redis@sha256:fb534a36ac2034a6374933467d971fbcbfa5d213805507f560d564851a720355
    Port: <none>
    Host Port: <none>
    Args:
      redis-server
      /etc/redis.conf
    State: Running
      Started: Mon, 30 Sep 2024 13:12:06 +0200
    Ready: True
    Restart Count: 0
    Environment: <none>
    Mounts:
      /data from awx-redis-data (rw)
      /etc/redis.conf from awx-redis-config (ro,path="redis.conf")
      /var/run/redis from awx-redis-socket (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-g5bz7 (ro)
  awx-web:
    Container ID: containerd://a5af898f246ffdb5b2271307842a3deeb818b7271d43b053384f312e2b63d04c
    Image: quay.io/ansible/awx:24.6.0
    Image ID: quay.io/ansible/awx@sha256:8221b859aede2a155038fa07af50078ba37b06b969b259f3dd1147a931e30fac
    Port: 8052/TCP
    Host Port: 0/TCP
    Args:
      /usr/bin/launch_awx_web.sh
    State: Running
      Started: Mon, 30 Sep 2024 13:12:07 +0200
    Ready: True
    Restart Count: 0
    Environment:
      AWX_COMPONENT: web
      SUPERVISOR_CONFIG_PATH: /etc/supervisord_web.conf
      MY_POD_NAMESPACE: awx (v1:metadata.namespace)
      MY_POD_IP: (v1:status.podIP)
      UWSGI_MOUNT_PATH: /
    Mounts:
      /etc/nginx/nginx.conf from awx-nginx-conf (ro,path="nginx.conf")
      /etc/receptor/tls/ca/mesh-CA.crt from awx-receptor-ca (ro,path="tls.crt")
      /etc/receptor/tls/ca/mesh-CA.key from awx-receptor-ca (ro,path="tls.key")
      /etc/receptor/work_public_key.pem from awx-receptor-work-signing (ro,path="work-public-key.pem")
      /etc/tower/SECRET_KEY from awx-secret-key (ro,path="SECRET_KEY")
      /etc/tower/conf.d/credentials.py from awx-application-credentials (ro,path="credentials.py")
      /etc/tower/conf.d/execution_environments.py from awx-application-credentials (ro,path="execution_environments.py")
      /etc/tower/conf.d/ldap.py from awx-application-credentials (ro,path="ldap.py")
      /etc/tower/settings.py from awx-settings (ro,path="settings.py")
      /etc/tower/uwsgi.ini from awx-uwsgi-config (ro,path="uwsgi.conf")
      /home/ansible/awx/awx-on-k3s/mount/iso-logo-header.svg from logo-header (rw,path="iso-logo-header.svg")
      /home/ansible/awx/awx-on-k3s/mount/iso-logo-login.svg from logo-login (rw,path="iso-logo-login.svg")
      /var/lib/awx/projects from awx-projects (rw)
      /var/run/awx-rsyslog from rsyslog-socket (rw)
      /var/run/redis from awx-redis-socket (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-g5bz7 (ro)
  awx-rsyslog:
    Container ID: containerd://9e10b00bcb4086e07b8f2789174741d078fc15c9e17124b7370b90a0a253b649
    Image: quay.io/ansible/awx:24.6.0
    Image ID: quay.io/ansible/awx@sha256:8221b859aede2a155038fa07af50078ba37b06b969b259f3dd1147a931e30fac
    Port: <none>
    Host Port: <none>
    Args:
      /usr/bin/launch_awx_rsyslog.sh
    State: Running
      Started: Mon, 30 Sep 2024 13:12:07 +0200
    Ready: True
    Restart Count: 0
    Environment:
      SUPERVISOR_CONFIG_PATH: /etc/supervisord_rsyslog.conf
    Mounts:
      /etc/tower/SECRET_KEY from awx-secret-key (ro,path="SECRET_KEY")
      /etc/tower/conf.d/credentials.py from awx-application-credentials (ro,path="credentials.py")
      /etc/tower/settings.py from awx-settings (ro,path="settings.py")
      /var/run/awx-rsyslog from rsyslog-socket (rw)
      /var/run/redis from awx-redis-socket (rw)
      /var/run/secrets/kubernetes.io/serviceaccount from kube-api-access-g5bz7 (ro)
Conditions:
  Type Status
  PodReadyToStartContainers True
  Initialized True
  Ready True
  ContainersReady True
  PodScheduled True
Volumes:
  awx-receptor-ca:
    Type: Secret (a volume populated by a Secret)
    SecretName: awx-receptor-ca
    Optional: false
  awx-receptor-work-signing:
    Type: Secret (a volume populated by a Secret)
    SecretName: awx-receptor-work-signing
    Optional: false
  awx-application-credentials:
    Type: Secret (a volume populated by a Secret)
    SecretName: awx-app-credentials
    Optional: false
  awx-secret-key:
    Type: Secret (a volume populated by a Secret)
    SecretName: awx-secret-key
    Optional: false
  awx-settings:
    Type: ConfigMap (a volume populated by a ConfigMap)
    Name: awx-awx-configmap
    Optional: false
  awx-nginx-conf:
    Type: ConfigMap (a volume populated by a ConfigMap)
    Name: awx-awx-configmap
    Optional: false
  awx-redis-config:
    Type: ConfigMap (a volume populated by a ConfigMap)
    Name: awx-awx-configmap
    Optional: false
  awx-uwsgi-config:
    Type: ConfigMap (a volume populated by a ConfigMap)
    Name: awx-awx-configmap
    Optional: false
  awx-redis-socket:
    Type: EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit: <unset>
  awx-redis-data:
    Type: EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit: <unset>
  rsyslog-socket:
    Type: EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit: <unset>
  receptor-socket:
    Type: EmptyDir (a temporary directory that shares a pod's lifetime)
    Medium:
    SizeLimit: <unset>
  awx-receptor-config:
    Type: ConfigMap (a volume populated by a ConfigMap)
    Name: awx-awx-configmap
    Optional: false
  awx-projects:
    Type: PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName: awx-projects-claim
    ReadOnly: false
  logo-login:
    Type: ConfigMap (a volume populated by a ConfigMap)
    Name: iso-logo-login-configmap
    Optional: false
  logo-header:
    Type: ConfigMap (a volume populated by a ConfigMap)
    Name: iso-logo-header-configmap
    Optional: false
  kube-api-access-g5bz7:
    Type: Projected (a volume that contains injected data from multiple sources)
    TokenExpirationSeconds: 3607
    ConfigMapName: kube-root-ca.crt
    ConfigMapOptional: <nil>
    DownwardAPI: true
QoS Class: BestEffort
Node-Selectors: <none>
Tolerations: node.kubernetes.io/not-ready:NoExecute op=Exists for 300s
                             node.kubernetes.io/unreachable:NoExecute op=Exists for 300s
Events:
  Type Reason Age From Message
  ---- ------ ---- ---- -------
  Normal Scheduled 51m default-scheduler Successfully assigned awx/awx-web-5dff48b9db-sfb7d to ipsnbg6vm48
  Normal Pulled 51m kubelet Container image "quay.io/centos/centos:stream9" already present on machine
  Normal Created 51m kubelet Created container init-projects
  Normal Started 51m kubelet Started container init-projects
  Normal Pulled 51m kubelet Container image "docker.io/redis:7" already present on machine
  Normal Created 51m kubelet Created container redis
  Normal Started 51m kubelet Started container redis
  Normal Pulled 51m kubelet Container image "quay.io/ansible/awx:24.6.0" already present on machine
  Normal Created 51m kubelet Created container awx-web
  Normal Started 51m kubelet Started container awx-web
  Normal Pulled 51m kubelet Container image "quay.io/ansible/awx:24.6.0" already present on machine
  Normal Created 51m kubelet Created container awx-rsyslog
  Normal Started 51m kubelet Started container awx-rsyslog

```

Thank you  
Rainer

---

<div class="post-metadata">

**Author:** ![kurokobo](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/kurokobo/32/182_2.png) [@kurokobo](https://forum.ansible.com/u/kurokobo)\
**Post date:** [September 30, 2024, 2:20pm UTC](https://forum.ansible.com/t/how-to-add-a-custom-logo-in-awx-top-left/8817/6 "2024-09-30T14:20:58Z")

</div>

@RainerP

> [@RainerP](#):
>
> ```auto
> web_extra_volume_mounts: |
> - name: logo-login
> mountPath: /home/ansible/awx/awx-on-k3s/mount/iso-logo-login.svg 👈
> subPath: iso-logo-login.svg
> - name: logo-header
> mountPath: /home/ansible/awx/awx-on-k3s/mount/iso-logo-header.svg 👈
> subPath: iso-logo-header.svg
> 
> ```

The `mountPath` is _the target path where your svg file is mounted as inside the container_, instead of the path of he source file on your host. These paths must be the same as documented:

```yaml
  web_extra_volume_mounts: |
    - name: logo-login
      mountPath: /var/lib/awx/public/static/media/logo-login.svg ✅
      subPath: logo-login.svg
    - name: logo-header
      mountPath: /var/lib/awx/public/static/media/logo-header.svg ✅
      subPath: logo-header.svg

```

---

<div class="post-metadata">

**Author:** ![RainerP](https://avatars.discourse-cdn.com/v4/letter/r/2acd7d/32.png) [@RainerP](https://forum.ansible.com/u/RainerP)\
**Post date:** [October 1, 2024, 12:57pm UTC](https://forum.ansible.com/t/how-to-add-a-custom-logo-in-awx-top-left/8817/7 "2024-10-01T12:57:51Z")

</div>

Thank you, this solved my issue.  
However the logos look some kind of different compared to before / outside of AWX (eg. white color is now grey). Any advise how to create svg files from png/screenshots ?

---

<div class="post-metadata">

**Author:** ![kurokobo](https://sea1.discourse-cdn.com/ansible/user_avatar/forum.ansible.com/kurokobo/32/182_2.png) [@kurokobo](https://forum.ansible.com/u/kurokobo)\
**Post date:** [October 1, 2024, 2:10pm UTC](https://forum.ansible.com/t/how-to-add-a-custom-logo-in-awx-top-left/8817/8 "2024-10-01T14:10:35Z")

</div>

> [@RainerP](#):
>
> Any advise how to create svg files from png/screenshots ?

I don’t know if this is a valid choice for you, but I usually use Photoshop 😃

---

<div class="post-metadata">

**Author:** ![system](https://us1.discourse-cdn.com/ansible/original/1X/1882d9a01da5d8996a862359b0913cc568a39b84.svg) [@system](https://forum.ansible.com/u/system)\
**Post date:** [November 23, 2024, 9:18am UTC](https://forum.ansible.com/t/how-to-add-a-custom-logo-in-awx-top-left/8817/10 "2024-11-23T09:18:38Z")

</div>

Closed on November 23, 2024, 9:18am UTC

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.
