Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
54 commits
Select commit Hold shift + click to select a range
d47164d
Fix Docker build failure
Rahulsharma0810 Sep 18, 2025
f407bef
Auto Update to Stable Version
Rahulsharma0810 Sep 18, 2025
61a49a7
Fix token authentication in manual release workflow
Rahulsharma0810 Sep 18, 2025
94d77d3
New release 1.111.0
Rahulsharma0810 Sep 18, 2025
ddfb5d0
Add manual trigger option to docker-images workflow
Rahulsharma0810 Sep 18, 2025
93048dc
Update n8n-latest.txt
Rahulsharma0810 Sep 18, 2025
882070e
Fix Debian Dockerfile: update base image and add --legacy-peer-deps
Rahulsharma0810 Sep 18, 2025
e4aed4f
Update Debian Dockerfile to use nodejs24 to match Alpine version
Rahulsharma0810 Sep 18, 2025
bc43501
Merge branch 'main' of https://github.com/Rahulsharma0810/docker-n8n-…
Rahulsharma0810 Sep 18, 2025
d140793
nikolaik/python-nodejs:python3.10-nodejs24-alpine
Rahulsharma0810 Sep 18, 2025
19c707d
Fix Docker Image
Rahulsharma0810 Sep 18, 2025
3077d61
New release 1.111.0
Rahulsharma0810 Sep 18, 2025
b9cfd93
Fix: Use Debian base image for Debian build (remove -alpine suffix)
Rahulsharma0810 Sep 18, 2025
9ad61af
Standardize both images to use python3.12-nodejs24-alpine
Rahulsharma0810 Sep 18, 2025
a48965c
Fix Docker Image
Rahulsharma0810 Sep 18, 2025
aeaa7ae
Fix Debian image build issues
Rahulsharma0810 Sep 18, 2025
30c8b80
New release 1.111.1
Rahulsharma0810 Sep 21, 2025
6a1ec03
Fix ENV key=value
Rahulsharma0810 Sep 21, 2025
2f3752a
Change Docker Hub Repo
Rahulsharma0810 Sep 21, 2025
dcc8b45
New release 1.112.3
Rahulsharma0810 Sep 23, 2025
8227fb9
New release 1.112.4
Rahulsharma0810 Sep 24, 2025
d4d9432
New release 1.112.5
Rahulsharma0810 Sep 25, 2025
319ede2
New release 1.112.6
Rahulsharma0810 Sep 27, 2025
288bc62
New release 1.113.3
Rahulsharma0810 Oct 3, 2025
ff3f6a4
New release 1.114.3
Rahulsharma0810 Oct 7, 2025
01da801
New release 1.114.4
Rahulsharma0810 Oct 8, 2025
f12828f
New release 1.115.2
Rahulsharma0810 Oct 14, 2025
de2febe
New release 1.115.3
Rahulsharma0810 Oct 15, 2025
f69d9e5
New release 1.116.2
Rahulsharma0810 Oct 22, 2025
caf612a
New release 1.117.2
Rahulsharma0810 Oct 28, 2025
151eaef
New release 1.117.3
Rahulsharma0810 Oct 29, 2025
63ae894
New release 1.118.2
Rahulsharma0810 Nov 6, 2025
4880d59
New release 1.119.1
Rahulsharma0810 Nov 12, 2025
c002aba
New release 1.119.2
Rahulsharma0810 Nov 15, 2025
6ba5d66
New release 1.120.3
Rahulsharma0810 Nov 19, 2025
0e77231
New release 1.120.4
Rahulsharma0810 Nov 20, 2025
6940c21
New release 1.122.1
Rahulsharma0810 Nov 26, 2025
a0746db
New release 1.121.3
Rahulsharma0810 Nov 27, 2025
a53cce1
New release 1.122.4
Rahulsharma0810 Dec 2, 2025
c7cf663
New release 1.122.5
Rahulsharma0810 Dec 5, 2025
67591fe
New release 1.123.4
Rahulsharma0810 Dec 9, 2025
efe8ef8
New release 1.123.5-exp.0
Rahulsharma0810 Dec 11, 2025
98aa9ca
New release 1.123.6
Rahulsharma0810 Dec 16, 2025
1fe7c64
New release 2.0.3
Rahulsharma0810 Dec 18, 2025
a7286ab
New release 2.1.2
Rahulsharma0810 Dec 23, 2025
0b2df85
New release 2.1.4
Rahulsharma0810 Dec 24, 2025
8572faa
docs: update readme to reflect python 3.12 usage
Rahulsharma0810 Dec 24, 2025
3738786
trigger: force rebuild of v2.1.4
Rahulsharma0810 Dec 24, 2025
818f5d9
fix: pin nodejs to v20 and sync version to 2.2.0
Rahulsharma0810 Dec 24, 2025
c9acaf2
New release 2.1.4
Rahulsharma0810 Dec 25, 2025
bee5360
New release 2.1.5
Rahulsharma0810 Jan 3, 2026
7085a9d
New release 2.2.3
Rahulsharma0810 Jan 6, 2026
c86a13e
New release 2.2.4
Rahulsharma0810 Jan 7, 2026
725a304
New release 2.2.5
Rahulsharma0810 Jan 9, 2026
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
71 changes: 53 additions & 18 deletions .github/workflows/auto-check-new-releases.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# .github/workflows/auto-check-new-releases.yml

###################
# ENV VARS:
# # - FULL_NAME
Expand All @@ -6,8 +8,18 @@
###################

name: Check for new releases
# Automatically check for new releases (new versions)
on:
workflow_dispatch:
inputs:
version:
description: "N8N version (leave empty to use latest)"
required: false
type: string
use_latest:
description: "Use latest N8N version"
required: false
default: true
type: boolean
schedule:
- cron: "0 0 */1 * *"

Expand All @@ -17,24 +29,47 @@ jobs:
steps:
- uses: actions/checkout@v2
with:
token: ${{ secrets.PAT }}
- name: Fetch release version
id: fetch-version
token: ${{ secrets.GITHUB_TOKEN }}

- name: Get latest stable N8N version from GitHub API
id: get-latest
run: |
# Fetch all releases and filter for stable versions only (not pre-release)
LATEST_VERSION=$(curl -s https://api.github.com/repos/n8n-io/n8n/releases | \
jq -r '.[] | select(.prerelease == false) | .tag_name' | \
head -1 | \
sed 's/^n8n@//')

if [ -z "$LATEST_VERSION" ]; then
echo "Error: Could not fetch latest stable version"
exit 1
fi

echo "latest_version=${LATEST_VERSION}" >> $GITHUB_OUTPUT
echo "Latest stable N8N version: ${LATEST_VERSION}"

- name: Determine version to use
id: determine-version
run: |
curl -sL https://raw.githubusercontent.com/n8n-io/n8n/master/package.json | jq -r ".version" > release-versions/n8n-latest.txt
echo ::set-output name=version::$(cat release-versions/n8n-latest.txt)

# - name: Check for modified files
# id: git-check
# run: echo ::set-output name=modified::$([ -z "`git status --porcelain`" ] && echo "false" || echo "true")
# - name: Commit latest release version
# if: steps.git-check.outputs.modified == 'true'
# run: |
# git config --global user.name '${{ secrets.FULL_NAME }}'
# git config --global user.email '${{ secrets.EMAIL }}'
# git commit -am "New release: $(cat release-versions/n8n-latest.txt)"
# git push
echo "Event name: ${{ github.event_name }}"
echo "Input use_latest: '${{ github.event.inputs.use_latest }}'"
echo "Input version: '${{ github.event.inputs.version }}'"

# For scheduled runs, inputs are not available, so default to latest
if [[ "${{ github.event_name }}" == "schedule" ]]; then
VERSION="${{ steps.get-latest.outputs.latest_version }}"
echo "Scheduled run - using latest version: ${VERSION}"
elif [[ "${{ github.event.inputs.use_latest }}" == "true" || -z "${{ github.event.inputs.version }}" ]]; then
VERSION="${{ steps.get-latest.outputs.latest_version }}"
echo "Manual run - using latest version: ${VERSION}"
else
VERSION="${{ github.event.inputs.version }}"
echo "Manual run - using specified version: ${VERSION}"
fi

echo "version=${VERSION}" >> $GITHUB_OUTPUT
echo "${VERSION}" > release-versions/n8n-latest.txt

- uses: stefanzweifel/git-auto-commit-action@v4
with:
commit_message: New auto release v${{steps.fetch-version.outputs.version}}
commit_message: "New release ${{ steps.determine-version.outputs.version }}"
38 changes: 38 additions & 0 deletions .github/workflows/docker-images-local-test.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
###########
# Local test workflow to reproduce build failures
# Skips Docker Hub login and push operations
###########

name: Docker Image CI - Local Test

on:
push:
paths:
- "release-versions/*"

jobs:
build:
runs-on: ubuntu-latest
steps:
- name: Get current repository
uses: actions/checkout@v1
- name: Get the version
id: vars
run: echo ::set-output name=tag::$(cat release-versions/n8n-latest.txt)
- name: Set up QEMU
uses: docker/setup-qemu-action@v1
- name: Set up Docker Buildx
uses: docker/setup-buildx-action@v1

- run: cp default-requirements.txt images/n8n/requirements.txt
- name: Build (default => alpine) - LOCAL TEST
uses: docker/build-push-action@v2
with:
context: ./images/n8n
build-args: |
N8N_VERSION=${{steps.vars.outputs.tag}}
platforms: linux/amd64
push: false # Skip push for local testing
tags: |
local-test/n8n-python:${{ steps.vars.outputs.tag }}
local-test/n8n-python:latest
11 changes: 7 additions & 4 deletions .github/workflows/docker-images.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
# .github/workflows/docker-images.yml

###########
# ENV VARS:
# - DOCKER_USERNAME
Expand All @@ -10,7 +12,8 @@ name: Docker Image CI
on:
push:
paths:
- 'release-versions/*'
- "release-versions/*"
workflow_dispatch:

jobs:
build:
Expand Down Expand Up @@ -51,7 +54,7 @@ jobs:
context: ./images/n8n-debian
build-args: |
N8N_VERSION=${{ steps.vars.outputs.tag }}
platforms: linux/amd64,linux/arm64,linux/arm/v7
platforms: linux/amd64,linux/arm64
push: true
tags: |
${{ secrets.DOCKER_USERNAME }}/n8n-python:${{ steps.vars.outputs.tag }}-debian
Expand All @@ -62,7 +65,7 @@ jobs:
with:
username: ${{ secrets.DOCKER_USERNAME }}
password: ${{ secrets.DOCKER_PASSWORD }}
repository: naskio/n8n-python
repository: sharmarahul0810/n8n-python
readme-filepath: README.md

- name: Create Release in GitHub
Expand All @@ -74,4 +77,4 @@ jobs:
with:
tag_name: v${{steps.vars.outputs.tag}}
release_name: Release ${{steps.vars.outputs.tag}}
body: n8n v${{steps.vars.outputs.tag}} (python3 included)
body: n8n v${{steps.vars.outputs.tag}} (python3 included)
40 changes: 0 additions & 40 deletions .github/workflows/manual-release.yml

This file was deleted.

5 changes: 4 additions & 1 deletion .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -178,4 +178,7 @@ Temporary Items
# Others
*.tmp.*
*.tmp
n8n_data/
n8n_data/

# act (GitHub Actions local runner) configuration
.secrets
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@

![n8n.io - Workflow Automation](https://raw.githubusercontent.com/n8n-io/n8n/master/assets/n8n-logo.png)

This [image](https://hub.docker.com/r/naskio/n8n-python) includes Python 3.10 by default. it can be used to run python
This [image](https://hub.docker.com/r/sharmarahul0810/n8n-python) includes Python 3.12 by default. it can be used to run python
scripts inside n8n using the [Execute Command](https://docs.n8n.io/nodes/n8n-nodes-base.executeCommand/) node or code
snippets using the custom node [Python Function](https://www.github.com/naskio/n8n-nodes-python).

> Run python 3.10 code on n8n.

[Docker Hub](https://hub.docker.com/r/naskio/n8n-python)
[Docker Hub](https://hub.docker.com/r/sharmarahul0810/n8n-python)

[GitHub repository](https://www.github.com/naskio/docker-n8n-python)

Expand Down Expand Up @@ -49,4 +49,4 @@ The official n8n documentation can be found under: [https://docs.n8n.io](https:/

Additional information and example workflows on the n8n.io website: [https://n8n.io](https://n8n.io)

Learn [how to run n8n in **Docker**](https://github.com/n8n-io/n8n/tree/master/docker/images/n8n/README.md)
Learn [how to run n8n in **Docker**](https://github.com/n8n-io/n8n/tree/master/docker/images/n8n/README.md)
8 changes: 4 additions & 4 deletions demo/docker-compose-local.yml
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
version: '3.8'
version: "3.8"

services:
n8n-python:
image: naskio/n8n-python:latest-debian # use this if intended to use heavy python packages
# image: naskio/n8n-python # alpine for light python packages
image: sharmarahul0810/n8n-python:latest-debian # use this if intended to use heavy python packages
# image: sharmarahul0810/n8n-python # alpine for light python packages
# command: /bin/sh -c "n8n start"
restart: always
container_name: n8n-python
Expand All @@ -16,4 +16,4 @@ services:
- ./n8n_data:/home/node/.n8n
- ./local-files:/data/files # by default workdir == /data
- ./python_scripts:/data/py_scripts
- ./requirements.txt:/data/requirements.txt
- ./requirements.txt:/data/requirements.txt
4 changes: 2 additions & 2 deletions demo/docker-compose.yml
Original file line number Diff line number Diff line change
Expand Up @@ -2,7 +2,7 @@ version: "3.8"

services:
n8n-python:
image: naskio/n8n-python
image: sharmarahul0810/n8n-python
# command: /bin/sh -c "sleep 5; n8n start" # Wait 5 seconds to start n8n to make sure that PostgreSQL is ready
restart: always
container_name: n8n-python
Expand Down Expand Up @@ -47,4 +47,4 @@ networks:
auto-reverse-proxy-global-network:
external: true
postgres_service-network:
external: true
external: true
14 changes: 10 additions & 4 deletions images/n8n-debian/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM nikolaik/python-nodejs:python3.10-nodejs24
FROM nikolaik/python-nodejs:python3.12-nodejs20

# changing user `pn` to `node`
RUN usermod --login node --move-home --home /home/node pn
Expand All @@ -23,10 +23,16 @@ USER root

RUN npm_config_user=root npm install -g full-icu n8n@${N8N_VERSION}

# Install n8n-nodes-python module
RUN cd /usr/lib/node_modules/n8n && npm install n8n-nodes-python
# Install n8n-nodes-python module with legacy peer deps to resolve dependency conflicts
RUN N8N_PATH=$(find /usr -name "n8n" -type d -path "*/node_modules/n8n" 2>/dev/null | head -1) && \
if [ -n "$N8N_PATH" ] && [ -d "$N8N_PATH" ]; then \
echo "Found n8n at: $N8N_PATH" && \
cd "$N8N_PATH" && npm install n8n-nodes-python --legacy-peer-deps; \
else \
echo "Error: n8n directory not found in node_modules" && exit 1; \
fi

ENV NODE_ICU_DATA /usr/lib/node_modules/full-icu
ENV NODE_ICU_DATA=/usr/lib/node_modules/full-icu

WORKDIR /data

Expand Down
14 changes: 10 additions & 4 deletions images/n8n/Dockerfile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
FROM nikolaik/python-nodejs:python3.10-nodejs24-alpine
FROM nikolaik/python-nodejs:python3.12-nodejs20-alpine

# changing user `pn` to `node`
RUN deluser pn && rm -r /home/pn # delete: user + group
Expand All @@ -21,8 +21,14 @@ RUN apk --update add --virtual build-dependencies build-base ca-certificates &&
apk del build-dependencies \
&& rm -rf /root /tmp/* /var/cache/apk/* && mkdir /root;

# Install n8n-nodes-python module
RUN cd /usr/local/lib/node_modules/n8n && npm install n8n-nodes-python
# Install n8n-nodes-python module with legacy peer deps to resolve dependency conflicts
RUN N8N_PATH=$(find /usr -name "n8n" -type d -path "*/node_modules/n8n" 2>/dev/null | head -1) && \
if [ -n "$N8N_PATH" ] && [ -d "$N8N_PATH" ]; then \
echo "Found n8n at: $N8N_PATH" && \
cd "$N8N_PATH" && npm install n8n-nodes-python --legacy-peer-deps; \
else \
echo "Error: n8n directory not found in node_modules" && exit 1; \
fi

# Install fonts
RUN apk --no-cache add --virtual fonts msttcorefonts-installer fontconfig && \
Expand All @@ -46,7 +52,7 @@ COPY requirements.txt /requirements/requirements.txt
RUN python -m pip install --upgrade pip setuptools wheel
RUN pip install -r /requirements/requirements.txt

ENV NODE_ICU_DATA /usr/local/lib/node_modules/full-icu
ENV NODE_ICU_DATA=/usr/local/lib/node_modules/full-icu

WORKDIR /data

Expand Down
2 changes: 1 addition & 1 deletion release-versions/n8n-latest.txt
Original file line number Diff line number Diff line change
@@ -1 +1 @@
1.110.0
2.2.5