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
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.