| # Base image: Python 3.12 + Node.js 20 | |
| FROM nikolaik/python-nodejs:python3.12-nodejs20 | |
| # Environment Variables | |
| ENV VIRTUAL_ENV=/venv \ | |
| PATH="/venv/bin:$PATH" \ | |
| N8N_HOST=0.0.0.0 \ | |
| N8N_PORT=7860 \ | |
| N8N_RUNNERS_ENABLED=true \ | |
| WEBHOOK_URL=https://r1000-nai.hf.space \ | |
| GENERIC_TIMEZONE=Asia/Bangkok \ | |
| NODES_EXCLUDE="[]" | |
| # Install base packages + Docker CLI (correct method) | |
| RUN apt-get update && apt-get install -y --no-install-recommends \ | |
| bash sudo curl wget git w3m gnupg tzdata poppler-utils fontconfig \ | |
| unzip \ | |
| libglib2.0-0 \ | |
| libnss3 \ | |
| libfontconfig1 \ | |
| libxcomposite1 \ | |
| libxcursor1 \ | |
| libxdamage1 \ | |
| libxext6 \ | |
| libxfixes3 \ | |
| libxi6 \ | |
| libxrandr2 \ | |
| libxrender1 \ | |
| libxss1 \ | |
| libxtst6 \ | |
| libatk1.0-0 \ | |
| libatk-bridge2.0-0 \ | |
| libpangocairo-1.0-0 \ | |
| libgtk-3-0 \ | |
| libgbm-dev \ | |
| libasound2 \ | |
| libsecret-1-0 \ | |
| \ | |
| # Create Python virtual environment | |
| && python3 -m venv $VIRTUAL_ENV \ | |
| && $VIRTUAL_ENV/bin/pip install --no-cache-dir --upgrade pip \ | |
| \ | |
| # Install Playwright | |
| && $VIRTUAL_ENV/bin/pip install --no-cache-dir playwright \ | |
| && $VIRTUAL_ENV/bin/python -m playwright install \ | |
| \ | |
| # Install n8n | |
| && npm install -g n8n@beta \ | |
| \ | |
| # Clean up | |
| && apt-get clean \ | |
| && rm -rf /var/lib/apt/lists/* \ | |
| && npm cache clean --force | |
| WORKDIR /data | |
| EXPOSE 7860 | |
| VOLUME ["/data/.n8n"] | |
| CMD ["n8n"] |