From 5845c408fdf9ce86c8894678b18d7e46ff13e7fb Mon Sep 17 00:00:00 2001 From: Sylphiann Date: Tue, 10 Mar 2026 15:46:13 +0700 Subject: [PATCH] [0.1] Add scripts --- Dockerfile | 11 +++++++ docker-compose.yml | 69 +++++++++++++++++++++++++++++++++++++++++++ n8n-task-runners.json | 56 +++++++++++++++++++++++++++++++++++ 3 files changed, 136 insertions(+) create mode 100644 Dockerfile create mode 100644 docker-compose.yml create mode 100644 n8n-task-runners.json diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..46ea183 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,11 @@ +FROM n8nio/runners:2.7.3 + +USER root + +RUN cd /opt/runners/task-runner-javascript && pnpm add moment uuid + +RUN cd /opt/runners/task-runner-python && uv pip install requests pillow + +COPY n8n-task-runners.json /etc/n8n-task-runners.json + +USER runner \ No newline at end of file diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..0564199 --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,69 @@ +services: + n8n-postgres: + image: postgres:latest + container_name: postgres + restart: always + networks: + - n8n-net + environment: + - POSTGRES_PASSWORD=mypassword + ports: + - "5432:5432" + volumes: + - postgres_data:/var/lib/postgresql + + n8n: + image: n8nio/n8n:2.7.3 + container_name: n8n + restart: always + networks: + - n8n-net + ports: + - "5678:5678" + environment: + - GENERIC_TIMEZONE=Asia/Jakarta + - TZ=Asia/Jakarta + - N8N_ENFORCE_SETTINGS_FILE_PERMISSIONS=true + - N8N_RUNNERS_ENABLED=true + - N8N_RUNNERS_MODE=external + - N8N_RUNNERS_BROKER_LISTEN_ADDRESS=0.0.0.0 + - N8N_RUNNERS_AUTH_TOKEN=n8n-secret + - N8N_NATIVE_PYTHON_RUNNER=true + - N8N_COMMUNITY_PACKAGES_ENABLED=true + - N8N_RUNNERS_EXTERNAL_ALLOW=pillow + volumes: + - n8n_data:/home/node/.n8n + depends_on: + - n8n-postgres + + task-runners: + build: . + container_name: n8n-runners + networks: + - n8n-net + environment: + - N8N_RUNNERS_TASK_BROKER_URI=http://n8n:5679 + - N8N_RUNNERS_AUTH_TOKEN=n8n-secret + depends_on: + - n8n + + stirling-pdf: + image: stirlingtools/stirling-pdf:latest-ultra-lite + container_name: stirling-pdf + restart: always + ports: + - "8080:8080" + networks: + - n8n-net + environment: + - DONT_LOG_SENSITIVE_INFO=true + +networks: + n8n-net: + driver: bridge + +volumes: + n8n_data: + external: true + postgres_data: + external: true diff --git a/n8n-task-runners.json b/n8n-task-runners.json new file mode 100644 index 0000000..41b03ff --- /dev/null +++ b/n8n-task-runners.json @@ -0,0 +1,56 @@ +{ +"task-runners": [ + { + "runner-type": "javascript", + "workdir": "/home/runner", + "command": "/usr/local/bin/node", + "args": [ + "--disallow-code-generation-from-strings", + "--disable-proto=delete", + "/opt/runners/task-runner-javascript/dist/start.js" + ], + "health-check-server-port": "5681", + "allowed-env": [ + "PATH", + "GENERIC_TIMEZONE", + "NODE_OPTIONS", + "N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT", + "N8N_RUNNERS_TASK_TIMEOUT", + "N8N_RUNNERS_MAX_CONCURRENCY", + "N8N_SENTRY_DSN", + "N8N_VERSION", + "ENVIRONMENT", + "DEPLOYMENT_NAME", + "HOME" + ], + "env-overrides": { + "NODE_FUNCTION_ALLOW_BUILTIN": "crypto", + "NODE_FUNCTION_ALLOW_EXTERNAL": "moment", + "N8N_RUNNERS_HEALTH_CHECK_SERVER_HOST": "0.0.0.0" + } + }, + { + "runner-type": "python", + "workdir": "/home/runner", + "command": "/opt/runners/task-runner-python/.venv/bin/python", + "args": ["-m", "src.main"], + "health-check-server-port": "5682", + "allowed-env": [ + "PATH", + "N8N_RUNNERS_LAUNCHER_LOG_LEVEL", + "N8N_RUNNERS_AUTO_SHUTDOWN_TIMEOUT", + "N8N_RUNNERS_TASK_TIMEOUT", + "N8N_RUNNERS_MAX_CONCURRENCY", + "N8N_SENTRY_DSN", + "N8N_VERSION", + "ENVIRONMENT", + "DEPLOYMENT_NAME" + ], + "env-overrides": { + "PYTHONPATH": "/opt/runners/task-runner-python", + "N8N_RUNNERS_STDLIB_ALLOW": "re,io,os,base64,json", + "N8N_RUNNERS_EXTERNAL_ALLOW": "requests,pillow,PIL" + } + } +] +}