# How to build custom packages

**URL:** https://community.zammad.org/t/how-to-build-custom-packages/18873
**Category:** Development
**Created:** [October 2, 2025, 1:17pm UTC](https://community.zammad.org/t/how-to-build-custom-packages/18873 "2025-10-02T13:17:17Z")
**Posts on this page:** 7
**Page:** 1

<div class="post-metadata">

### Author: ![peterg](https://community.zammad.org/user_avatar/community.zammad.org/peterg/32/11244_2.png) [@peterg](https://community.zammad.org/u/peterg)
#### Post date: [October 2, 2025, 1:17pm UTC](https://community.zammad.org/t/how-to-build-custom-packages/18873/1 "2025-10-02T13:17:17Z")

</div>

Hello,

I’m trying to wrap my head around creating custom packages for Zammad, but so far I did not succeed 🫤

I’ve read the pinned post on Package Tutorial and I’m trying to follow that. But even the simplest Hello World example does not work. If I build that and install the package, I see the file in /public/assets/hello.txt. But when I try to go to that file I get a nginx 404 error. So, my thought was, maybe I need to precompile for the file to be available to nginx. But when I run  
`docker compose run --rm zammad-railsserver rake zammad:package:post_install` I get an error:

```auto
rake aborted!
ExecJS::RuntimeUnavailable: Could not find a JavaScript runtime. See https://github.com/rails/execjs for a list of available runtimes. (ExecJS::RuntimeUnavailable)

```

So what am I doing wrong here… I’m not a rails dev (enough experience in PHP, Python, JS, HTML etc..) so maybe I’m missing something.

My final goal is to create an extra tab in de sidebar (like the Git integration) to allow for linking/creating tickets in Linear issue tracking system.

Any help is greatly appreciated 🙏

And a tangent question: how much of the development of the package should be done again when the new 7 version with the vue frontend is released?

---

<div class="post-metadata">

### Author: ![peterg](https://community.zammad.org/user_avatar/community.zammad.org/peterg/32/11244_2.png) [@peterg](https://community.zammad.org/u/peterg)
#### Post date: [October 2, 2025, 1:33pm UTC](https://community.zammad.org/t/how-to-build-custom-packages/18873/2 "2025-10-02T13:33:51Z")

</div>

Ok, found out that nodejs is not installed in the docker image.. So rebuilding the docker image is the only solution for that?

Anyways, trying to get it to work on Ubuntu VPS without docker. Installed the Hello World package and that worked. So I think I will stick to the package installation. Seems better for using custom packages.

---

<div class="post-metadata">

### Author: ![skip](https://community.zammad.org/user_avatar/community.zammad.org/skip/32/8559_2.png) [@skip](https://community.zammad.org/u/skip)
#### Post date: [October 2, 2025, 1:44pm UTC](https://community.zammad.org/t/how-to-build-custom-packages/18873/3 "2025-10-02T13:44:01Z")

</div>

Hi,

this is how I built custom packages:

> [@\[GUIDE\] Change Zammad notification logo (phoenix) by building a Zammad package](https://community.zammad.org/t/guide-change-zammad-notification-logo-phoenix-by-building-a-zammad-package/15291):
>
> This guide explains how to change the Zammad logo and create a Zammad package on a GNU/Linux OS for Zammad 6.x.x. Part 1: Changing the Zammad Logo Prerequisites: git pnpm; Install it with:$ curl -fsSL https://get.pnpm.io/install.sh | sh - Steps to Change the Logo Clone the Zammad Repository: $ git clone https://github.com/zammad/zammad.git Navigate to the Logo Directory: $ cd zammad/public/assets/images/icons Replace the Logo: Substitute the existing logo.svg file with your logo…

I hope it helps

---

<div class="post-metadata">

### Author: ![rolfschmidt](https://community.zammad.org/user_avatar/community.zammad.org/rolfschmidt/32/3368_2.png) [@rolfschmidt](https://community.zammad.org/u/rolfschmidt)
#### Post date: [October 6, 2025, 12:22pm UTC](https://community.zammad.org/t/how-to-build-custom-packages/18873/4 "2025-10-06T12:22:53Z")

</div>

Currently, we don’t support packages on docker environments. If really want to go into package development, you should switch to a classic debian/ubuntu installation. There are some tutorials:

> [@Packages Tutorial](https://community.zammad.org/t/packages-tutorial/12079):
>
> Packages Tutorial Welcome to this tutorial. I will do my best to give you a basic introduction into custom development of zammad. Until there is a marketplace and/or a developer/packages documentation officially available by Zammad GmbH, this might help you to get some insights about how to handle packages in zammad. I will try to show you some basics and tips and tricks to keep your development compatible and easy to maintain. Be aware that all my small tutorials are using my GIT aliases. So …

---

<div class="post-metadata">

### Author: ![rolfschmidt](https://community.zammad.org/user_avatar/community.zammad.org/rolfschmidt/32/3368_2.png) [@rolfschmidt](https://community.zammad.org/u/rolfschmidt)
#### Post date: [October 6, 2025, 12:28pm UTC](https://community.zammad.org/t/how-to-build-custom-packages/18873/5 "2025-10-06T12:28:55Z")

</div>

> [@peterg](#):
>
> And a tangent question: how much of the development of the package should be done again when the new 7 version with the vue frontend is released?

Like 90%. Maybe you can keep some ruby libary code, but controller-wise it will switch to graphql and frontend-wise it’s 100% rewrite.

---

<div class="post-metadata">

### Author: ![peterg](https://community.zammad.org/user_avatar/community.zammad.org/peterg/32/11244_2.png) [@peterg](https://community.zammad.org/u/peterg)
#### Post date: [October 6, 2025, 1:50pm UTC](https://community.zammad.org/t/how-to-build-custom-packages/18873/6 "2025-10-06T13:50:54Z")

</div>

OK, thanks. Good to know!

---

<div class="post-metadata">

### Author: ![system](https://community.zammad.org/uploads/default/original/1X/5c5afaea2d23f811dbec33cd4edb02fa29d3262f.png) [@system](https://community.zammad.org/u/system)
#### Post date: [October 13, 2025, 1:50pm UTC](https://community.zammad.org/t/how-to-build-custom-packages/18873/7 "2025-10-13T13:50:59Z")

</div>

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