commit b79b15b0eed23fa31b6d993ce131385965d83a46 Author: Oliver Date: Wed Aug 6 14:46:35 2025 -0300 init diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..f526a40 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,42 @@ +FROM docker.n8n.io/n8nio/n8n:latest + +USER root + +RUN apk update && apk add --no-cache \ + hugo \ + chromium \ + nss \ + glib \ + freetype \ + freetype-dev \ + harfbuzz \ + ca-certificates \ + ttf-freefont \ + udev \ + ttf-liberation \ + font-noto-emoji \ + python3 \ + make \ + g++ \ + sqlite-dev \ + sqlite \ + py3-distutils-extra + +ENV PUPPETEER_SKIP_CHROMIUM_DOWNLOAD=true \ + PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser + +COPY docker-custom-entrypoint.sh /docker-custom-entrypoint.sh +RUN chmod +x /docker-custom-entrypoint.sh && \ + chown node:node /docker-custom-entrypoint.sh + +RUN mkdir -p /opt/n8n-custom-nodes && \ + cd /opt/n8n-custom-nodes && \ + npm install n8n-nodes-puppeteer \ + n8n-nodes-sqlite-memory && \ + npm rebuild sqlite3 && \ + chown -R node:node /opt/n8n-custom-nodes + +USER node + +ENTRYPOINT ["/docker-custom-entrypoint.sh"] + diff --git a/build b/build new file mode 100755 index 0000000..1bb3fa1 --- /dev/null +++ b/build @@ -0,0 +1,18 @@ +#!/bin/bash +VERSION=":latest" + +while getopts ":r" opt; do + case ${opt} in + r ) + VERSION=":release" + ;; + \? ) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + esac +done + +echo "Version $VERSION" +docker build --no-cache -t docker.odoo4projects.com/od8n/n8n$VERSION . + diff --git a/docker-custom-entrypoint.sh b/docker-custom-entrypoint.sh new file mode 100644 index 0000000..67539a4 --- /dev/null +++ b/docker-custom-entrypoint.sh @@ -0,0 +1,45 @@ +#!/bin/sh + +print_banner() { + echo "----------------------------------------" + echo "n8n Puppeteer Node - Environment Details" + echo "----------------------------------------" + echo "Node.js version: $(node -v)" + echo "n8n version: $(n8n --version)" + + # Get Chromium version specifically from the path we're using for Puppeteer + CHROME_VERSION=$("$PUPPETEER_EXECUTABLE_PATH" --version 2>/dev/null || echo "Chromium not found") + echo "Chromium version: $CHROME_VERSION" + + # Get Puppeteer version if installed + PUPPETEER_PATH="/opt/n8n-custom-nodes/node_modules/n8n-nodes-puppeteer" + if [ -f "$PUPPETEER_PATH/package.json" ]; then + PUPPETEER_VERSION=$(node -p "require('$PUPPETEER_PATH/package.json').version") + echo "n8n-nodes-puppeteer version: $PUPPETEER_VERSION" + + # Try to resolve puppeteer package from the n8n-nodes-puppeteer directory + CORE_PUPPETEER_VERSION=$(cd "$PUPPETEER_PATH" && node -e "try { const version = require('puppeteer/package.json').version; console.log(version); } catch(e) { console.log('not found'); }") + echo "Puppeteer core version: $CORE_PUPPETEER_VERSION" + else + echo "n8n-nodes-puppeteer: not installed" + fi + + echo "Puppeteer executable path: $PUPPETEER_EXECUTABLE_PATH" + echo "----------------------------------------" +} + +# Add custom nodes to the NODE_PATH +if [ -n "$N8N_CUSTOM_EXTENSIONS" ]; then + export N8N_CUSTOM_EXTENSIONS="/opt/n8n-custom-nodes:${N8N_CUSTOM_EXTENSIONS}" +else + export N8N_CUSTOM_EXTENSIONS="/opt/n8n-custom-nodes" +fi + +print_banner + +export NODE_FUNCTION_ALLOW_EXTERNAL=* +export NODE_PATH=/opt/n8n-custom-nodes/node_modules + +# Execute the original n8n entrypoint script +exec /docker-entrypoint.sh "$@" + diff --git a/push b/push new file mode 100755 index 0000000..1e8a134 --- /dev/null +++ b/push @@ -0,0 +1,22 @@ +#!/bin/bash + +VERSION=":latest" + +while getopts ":r" opt; do + case ${opt} in + r ) + VERSION=":release" + ;; + \? ) + echo "Invalid option: -$OPTARG" >&2 + exit 1 + ;; + esac +done + +echo "Version $VERSION" + +#docker login docker.odoo4projects.com + +docker push docker.odoo4projects.com/od8n/n8n$VERSION +