version: "3.9" services: ts-network: image: tailscale/tailscale:latest container_name: ts-n8n environment: - TS_AUTHKEY=tskey-auth-kS1DGBXc3H11CNTRL-UuCbbRQBEBBvrQhXreS7BBVwmztVyNSz - "TS_EXTRA_ARGS=--advertise-tags=tag:container --reset" - TS_SERVE_CONFIG=/config/n8n.json - TS_STATE_DIR=/var/lib/tailscale - TS_USERSPACE=false - LANG=C.UTF-8 volumes: - /opt/docker-compose/third/n8n/state:/var/lib/tailscale - /opt/docker-compose/third/n8n/config:/config - /etc/localtime:/etc/localtime:ro devices: - /dev/net/tun:/dev/net/tun cap_add: - net_admin restart: unless-stopped networks: - ai_network n8n: image: n8nio/n8n:2.27.3 container_name: n8n restart: unless-stopped networks: - ai_network ports: - "5678:5678" environment: GENERIC_TIMEZONE: "Europe/Tallinn" N8N_PORT: "5678" N8N_PROTOCOL: "http" N8N_ENCRYPTION_KEY: "d0d68562bfdc68746dab3c4041cda61e96507be3908872ffed3c1a16cb8c47a0" N8N_SECURE_COOKIE: "false" N8N_RUNNERS_MODE: "external" N8N_RUNNERS_AUTH_TOKEN: "super_strong_random_token_change_this_2026" N8N_RUNNERS_BROKER_LISTEN_ADDRESS: "0.0.0.0" N8N_RUNNERS_TASK_TIMEOUT: "300" N8N_RUNNERS_JS_PACKAGES: "playwright" N8N_NATIVE_PYTHON_RUNNER: "true" volumes: - /data/docker/n8n:/home/node/.n8n - /data/docker/n8n-cache:/home/node/.cache - /backups/docker/n8n:/backups - /etc/localtime:/etc/localtime:ro n8n-runners: #image: n8nio/runners:latest image: n8n-runner-custom container_name: n8n-runners restart: unless-stopped #user: root environment: - N8N_RUNNERS_TASK_BROKER_URI=http://n8n:5679 - N8N_RUNNERS_AUTH_TOKEN=super_strong_random_token_change_this_2026 - N8N_RUNNERS_TASK_TIMEOUT=300 - NODE_FUNCTION_ALLOW_BUILTIN=* - NODE_FUNCTION_ALLOW_EXTERNAL=ws #extra_hosts: # - "n8n:100.67.158.94" depends_on: - n8n volumes: - /etc/localtime:/etc/localtime:ro #- ./n8n-task-runners.json:/etc/n8n-task-runners.json:ro #- ./python-venv:/opt/runners/task-runner-python/.venv #- ./n8n-runner-cache:/home/node/.cache/ms-playwright #- /data/docker/n8n-runner-javascript:/opt/runners/task-runner-javascript - /backups/docker/n8n-runners:/backups networks: - ai_network # ================== PLAYWRIGHT BROWSER SERVER (port 3003) ================== playwright: image: mcr.microsoft.com/playwright:v1.52.0-jammy container_name: playwright restart: unless-stopped user: root environment: - PLAYWRIGHT_BROWSERS_PATH=/ms-playwright volumes: - /data/docker/playwright-browsers:/ms-playwright - /etc/localtime:/etc/localtime:ro ports: - "3003:3003" command: > bash -c " echo 'Installing dependencies...' && npx -y playwright@1.52.0 install --with-deps chromium && echo 'Starting Playwright browser server...' && npx -y playwright@1.52.0 run-server \ --port 3003 \ --host 0.0.0.0 " networks: - ai_network # Kui soovid, et Tailscale ka seda näeks (soovitatav) #depends_on: # - ts-network networks: ai_network: external: true name: main_ai_network