Hi guys,
I’m new to n8n, recently found out that the execute node has been disabled, went through a few posts that mentioned i need to change my docker-compose.yml file and add a few lines
EXCLUDE_NODES=
Points to be noted,
- I didn’t originally have a .yml file in my self hosted n8n on hostinger
- I created the file myself with the help of n8n documentation
- added all the required fields
- restarted
- Still don’t see the execute node (appears as a ?)
can someone help with this
The Execute Code node (the old “Execute Command” shell node) was intentionally disabled by n8n in cloud and restricted in self-hosted environments as a security measure. The EXCLUDE_NODES env var approach can re-enable it, but there are a few things to check.
Why the node still shows as “?” after setting EXCLUDE_NODES=:
The EXCLUDE_NODES variable tells n8n which nodes to hide. Setting it to empty just means “exclude nothing” — it does NOT override the security lock on the Execute Command node itself.
For self-hosted Docker, you need to explicitly allow it with:
N8N_BLOCK_ENV_ACCESS_IN_NODE=false
And if you’re on a newer version, the node type changed. Look for “Execute Command” not “Execute Node” in the node search — the internal name is n8n-nodes-base.executeCommand.
Steps to verify it’s working:
- Make sure your
docker-compose.yml environment section has:- N8N_BLOCK_ENV_ACCESS_IN_NODE=false
- Restart the container completely (
docker compose down && docker compose up -d)
- In the n8n editor, search for “Execute Command” — it should appear without a “?” icon
- If it still shows “?”, check your n8n logs on startup for any node registration errors:
docker logs <container_name> | grep -i execute
Also double-check your docker-compose.yml is actually being picked up. Common issue: the file exists but Docker is using the container’s built-in config rather than mounting your compose file properly.
Hi @pelezs Welcome!
The env variable name seems wrong, it should be NODES_EXCLUDE , not EXCLUDE_NODES, your compose file should be like this:
environment:
and then re create the container with
docker compose down
docker compose up -d
fixing the names and then giving it a restart should solve this.