How to properly apply a local Persian font (RTL) in Zammad Docker Compose environment?

Infos:

  • Used Zammad version: 7.0.1-17c9d075.docker
  • Used Zammad installation type: docker compose
  • Operating system: windows 10
  • Browser + version: chrome, 14

Hi everyone,

I am currently testing Zammad in my local environment using the official Docker Compose setup before deploying it to production for our corporation.

Because our team works in Persian, we need to replace the default UI font with a highly legible local font (Vazirmatn or B-Yekan) to fix the presentation of right-to-left (RTL) text. We operate in an offline production network, so using an external CDN link is not an option; the font files must be hosted locally on the server.

I am using Docker Desktop and have run into a few technical roadblocks trying to achieve this. Here is what I have tried and where things failed:

1. Asset Precompilation Failure: I tried creating a custom CSS file inside app/assets/stylesheets/custom/custom.css and uploading the .woff2 font files to public/assets/fonts/. However, when running /opt/zammad/bin/rails assets:precompile inside the zammad-railsserver container, it fails with the following error: ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime.

Could someone please advise on the recommended way to introduce a custom font file and apply global CSS rules in the modern Zammad Docker architecture?

The docker containers do not come with any additionally binaries that would be required to rebuild the assets. This means you will have to adjust the container accordingly / build your own with fitting assets. This is why you receive the runtime erorr.

Generally the package installation is the much easier adjustable installation type. There’s no official method for docker as far as I’m aware. But honestly, I guess you’re not the only RTL language person using Zammad - I know there are other users, but am unsure if they really had to adjust Zammad to use it RTL. Maybe an upstream fix would be the better idea. Open Source mind, you know.