SystemUser Works for Debug Stock Image but not Non-Debug Image
There's a lot of issues using the SystemUser.
I'm trying to upgrade our self-hosted instance of Zitadel from 2.71.10 (self-compiled source code) to 2.71.17 (v2:latest as of writing). However, I'd like to use the stock image if possible.
I'm noticing that
ghcr.io/zitadel/zitadel:v2.71.17-debug works fine as expected. However, ghcr.io/zitadel/zitadel:v2.71.17 does not, giving the same errors other community members have reported relating to SystemUsers:
Notably: isSystemUser=false
Using the -debug flavour:
isSystemUser=true
This makes me think there is an issue with the system user keys we're using, but I'm not clear how this would differ between the debug and non-debug flavour. Working with the non-debug flavour is difficult because it does not have a shell I can use to look around.2 Replies
Hi @Billy, I'm an AI assistant for ZITADEL. While a team member reviews this question, I'll see if I can find relevant sources for your question.
Answer
I wasn't able to find a direct answer, here are some relevant sources:
1. Discord message from @sirchrispbacon on 2025-09-17 : This shows similar SystemUser authentication issues with the error "invalid signature (invalid signature: no possible keys matches) " and suggests ensuring the public key in ZITADEL matches the private key used to sign the JWT (1) .
2. -debug vs non -debug Zitadel images on ghcr : The -debug images include a shell and debugging tools while non-debug images are minimal and lack these tools, but this doesn't explain authentication differences (2) .
To learn more, see the sources I considered:
[1] Discord message from @sirchrispbacon on 2025-09-17
[2] -debug vs non -debug Zitadel images on ghcr
Feel free to tag @Ask Inkeep with additional questions.
Got it. Tagging @Rajat for additional help.
Following the steps here, I've made a manual request to my Zitadel instance using curl:
With the debug flavour, I get the correct happy response:
With the non-debug flavour, I get the following error:
I'm really not sure what I'm missing. As noted with the bot, the debug flavour should only include extra debugging tools (shell and busybox). I'm not sure why there is such a big behaviour difference.