[0.1] Add scripts

This commit is contained in:
2026-03-10 15:46:13 +07:00
commit 5845c408fd
3 changed files with 136 additions and 0 deletions

11
Dockerfile Normal file
View File

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

69
docker-compose.yml Normal file
View File

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

56
n8n-task-runners.json Normal file
View File

@@ -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"
}
}
]
}