I think I found the issue - to be validated!
My cloudron admin account had only two characters. By creating a second account, with more characters, I was able to access the admin settings. 
I think I found the issue - to be validated!
My cloudron admin account had only two characters. By creating a second account, with more characters, I was able to access the admin settings. 
Content-Security-Policy
sandbox allow-downloads allow-forms allow-modals allow-popups allow-scripts allow-same-origin allow-top-navigation-by-user-activation;
Follow up - with this I get the workflow to run, however, I introduced issues at other places in the app. For example, I can no longer use the "go to subexecution" button

I have an interesting case:
If I install Stirling-PDF on Cloudron - then go onto:
Settings > Account Settings
I get the issue shown in the screenshot above: "Error: 999 None".
The logs say:
INFO s.s.p.s.f.UserAuthenticationFilter - Invalidating session for disabled or non-existent user: (myusername)
Interstingly, seems to be related to the Cloudron I run this on. I tried on a fresh install, and didn't have any issues. I have another Cloudron that is about 6 months old, there the issue appears.
Any ideas what could be the root cause? For now, I will try updating the cloudrons.
Just confirming that it is not only me, and AFAIK it is likely related to a recent N8N update.

With the Waitnode configured as form:

Causes infinite wait loop when running

With the error:
Access to fetch at 'https://.../form-waiting/1921' from origin 'null' has been blocked by CORS policy: No 'Access-Control-Allow-Origin' header is present on the requested resource.
Any idea how to fix it other than playing in a backup of a previous version?

Follow up question to the N8N cloudron maintainers (maybe @nebulon ?) - any idea on how I could execute on this idea?
Answering my own question again:

Seems to do the trick. Sorry for tagging you nebulon - 
Maybe it helps someone else later...
Hi everyone,
n8n instances are targets for automated attacks and brute-force attempts. Now, I know that Cloudron offers the "proxyAuth": {} feature in the CloudronManifest.json for custom-packaged apps, which puts the Cloudron login screen in front of the app.
My question is:
Ideally, it would be amazing if we could protect the main UI/API via Cloudron Auth, accepting that I have to double-log-in, while explicitly keeping certain webhook paths /webhook/... open so that external services can still trigger workflows. We would still be vulnerable, but with this feature less likely the victim of an automated attack...
Thanks!
Hi all,
Need a quick hint:
# MacBook โ Cloudron box (works)
ssh -R 172.18.0.1:11434:localhost:11434 <user>@<server>
# On the Cloudron host (works)
curl localhost:11434 # โ โOllama is runningโ
# Inside my Cloudron app (times out)
cloudron exec --app <app> -- curl 172.18.0.1:11434
Goal: let the app reach Ollama on my Mac via that tunnel.
Host sees it, container doesnโt. Whatโs the right bind/IP/firewall tweak so the container can hit the tunnel?
Thanks!
Hi everyone,
I'm trying to set up authentication for a simple web application and I'm running into some confusion around OAuth/OIDC best practices with Cloudron.
My Setup:
My Intended Flow:
The Problem:
I understand that exposing a client_secret in JavaScript is a security anti-pattern. For single-page applications, the recommended approach is to use a "public client" with PKCE (Proof Key for Code Exchange) instead of client secrets.
However, when I look at Cloudron's OIDC app configuration, I don't see any option to:
My Questions:
I'm hoping there's a standard way to handle this that I'm missing. The alternative of putting authentication logic entirely in n8n (server-side) seems to complicate the frontend significantly.
Any guidance on the proper architecture pattern here would be greatly appreciated!
Additional Context:
Thanks in advance!

Hey, I have a private/custom app that I want to host on my Cloudron alongside some other apps. The app builds on a private repo in github and pushes into GHCR. The server itself is behind a firewall, so from the github pipeline I cannot reach the Cloudron server.
In the CI/CD pipeline, I publish the CloudronVersions.json to another server, and just wanted to install the app via a link. I get the error message in the screenshot. Any idea what that means? From the shell of the server I can curl the CloudronVersions.json file, so it likely is not a connectivity issue.
@girish - thanks for the feature though - just realised how young it is! 
Yeah, I know.
The thing that I was worried about were automated scrapes for N8N.
So the only thing that I presume would change that if some automated scraper comes passing by my IP asking: "Do you run N8N?" my server would answer: "Please log in with your cloudron details" instead of "Sure I am running this N8N version"
I think I found the issue:
I added this field to the CloudronManifest.json:
"memoryLimit": 4294967296,
and I migrated from a version that is "datebased" to a simple "version": "1.0.1"
I am at a new error state now: Invalid manifest: mediaLinks is empty in manifest .
@Teiluj said in N8N Security:
However, in the meantime, maybe you've seen this post about OIDC and n8n from @luckow ?
Haven't seen it, before!
Yeah, to the best of my knowledge this is identical. Is the private docker container registry an issue? I did install it via the CLI previously, and all I wanted to do now is to swap it to install via CloudronVersions.json
you have not set a value for medialinks ! Or one that is accessible. In CloudronManufest,json.
Yeah that was the second mistake. Before, I got the message "Invalid manifest: mediaLinks is empty in manifest" I had a cryptic message like: "Could not resolve CloudronVersions.json from url". In the end, my CloudronVersions was wrong, and the error message before was not helpful. However, the medialinks error message was 
For this one:
CloudronVersions.json needs to be publicly accessible also the Docker image
CloudronVersions.json is public, yes 
Docker image is private - but it works 
I have the ghcr with credentials registered on the cloudron. So no issue anymore.
In case you are interested in an error-message-improval-bug-hunt, I can send you a version of my "broken" CloudronVersions.json via PM - if not - I am happy now 