n8n 进阶设置
以下假设 n8n 与 Runner 已通过 Compose 部署,工作目录仍为 /opt/n8n(可按实际路径修改)。
1. Webhook 使用自定义域名
在 docker-compose.yml 的 n8n 服务 environment 中增加(将域名换成你的):
yaml
WEBHOOK_URL=https://n8n.example.com/保存后重启 Compose(见各节「重启」命令)。
2. 调整 Runner 内建函数黑名单(type 未定义等)
在 Python Runner 中若出现 name 'type' is not defined,通常与 Runner 对 Python 内建函数的黑名单 N8N_RUNNERS_BUILTINS_DENY 有关:type() 可能被默认禁止。
编辑 n8n-task-runners.json
在保留其他键的前提下,显式设置 N8N_RUNNERS_BUILTINS_DENY。示例:在默认黑名单基础上去掉 type(值以你当前文件为准):
json
{
"N8N_RUNNERS_STDLIB_ALLOW": "*",
"N8N_RUNNERS_EXTERNAL_ALLOW": "DrissionPage,pillow",
"N8N_RUNNERS_BUILTINS_DENY": "eval,exec,compile,open,input,breakpoint,getattr,object,vars,setattr,delattr,hasattr,dir,memoryview,build_class,globals,locals"
}DANGER
将黑名单改为「允许全部内建」会显著提高 Code 节点风险;不建议在生产环境 使用。若必须放宽,请限制网络与执行环境,并定期审计工作流。
若文档约定用空字符串表示不禁止任何内建,可按 Runner 版本说明设为 ""(请勿与通配符语义混淆)。
重启容器
bash
docker compose down
docker compose up -d3. 挂载宿主机目录供工作流读写
创建目录并授权
bash
mkdir -p /opt/files
chown -R 1000:1000 /opt/files在 docker-compose.yml 中挂载
在 n8n 与 task-runners 两个服务的 volumes 中均增加(路径按需修改):
yaml
volumes:
- n8n_data:/home/node/.n8n
- /opt/files:/data/files- 左侧:宿主机目录
- 右侧:容器内路径,下文与
N8N_RESTRICT_FILE_ACCESS_TO一致
n8n 2.x 对文件访问有默认限制,若 Code 节点需访问该目录,在 n8n 服务 environment 中增加:
yaml
- N8N_RESTRICT_FILE_ACCESS_TO=/data/files重启
bash
cd /opt/n8n
docker compose down
docker compose up -d