diff --git a/.github/workflows/epicmorg.advanced.python.yml b/.github/workflows/_disabled/epicmorg.advanced.python.yml.txt
similarity index 100%
rename from .github/workflows/epicmorg.advanced.python.yml
rename to .github/workflows/_disabled/epicmorg.advanced.python.yml.txt
diff --git a/.github/workflows/epicmorg.base.images.debian.11.yml b/.github/workflows/epicmorg.base.images.debian.11.yml
index 032866a9d..3ba9b90b9 100644
--- a/.github/workflows/epicmorg.base.images.debian.11.yml
+++ b/.github/workflows/epicmorg.base.images.debian.11.yml
@@ -41,10 +41,10 @@ jobs:
##################################################################################
- name: "Build and Deploy Debian 11 LTS jdk6 Image:"
- run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk6 && pwd && make build && make deploy
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk6 && pwd && make build && make deploy
- name: "Build and Deploy Debian 11 LTS jdk7 Image:"
- run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk7 && pwd && make build && make deploy
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk7 && pwd && make build && make deploy
##################################################################################
@@ -54,10 +54,10 @@ jobs:
##################################################################################
- name: "Build and Deploy Debian 11 LTS jdk8 Image:"
- run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk8 && pwd && make build && make deploy
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk8 && pwd && make build && make deploy
- name: "Build and Deploy Debian 11 LTS jdk11 Image:"
- run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk11 && pwd && make build && make deploy
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk11 && pwd && make build && make deploy
##################################################################################
@@ -67,13 +67,13 @@ jobs:
##################################################################################
- name: "Build and Deploy Debian 11 LTS jdk16 Image:"
- run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk16 && pwd && make build && make deploy
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk16 && pwd && make build && make deploy
- name: "Build and Deploy Debian 11 LTS jdk17 Image:"
- run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk17 && pwd && make build && make deploy
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk17 && pwd && make build && make deploy
- name: "Build and Deploy Debian 11 LTS jdk18 Image:"
- run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk18 && pwd && make build && make deploy
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk18 && pwd && make build && make deploy
##################################################################################
@@ -83,10 +83,10 @@ jobs:
##################################################################################
- name: "Build and Deploy Debian 11 LTS jdk19 Image:"
- run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk19 && pwd && make build && make deploy
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk19 && pwd && make build && make deploy
- name: "Build and Deploy Debian 11 LTS jdk20 Image:"
- run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk20 && pwd && make build && make deploy
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk20 && pwd && make build && make deploy
##################################################################################
@@ -96,12 +96,124 @@ jobs:
##################################################################################
- name: "Build and Deploy Debian 11 LTS jdk21 Image:"
- run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk21 && pwd && make build && make deploy
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk21 && pwd && make build && make deploy
- name: "Build and Deploy Debian 11 LTS jdk22 Image:"
- run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk22 && pwd && make build && make deploy
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk22 && pwd && make build && make deploy
##################################################################################
- name: Cleanup
run: make docker-clean
+
+##################################################################################
+
+ - name: "Build and Deploy Debian 11 NodeJS LTS Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS Current Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current && pwd && make build && make deploy
+
+##################################################################################
+
+ - name: "Build and Deploy Debian 11 NodeJS 0.12 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 4 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 5 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 6 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 7 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 8 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 9 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8 && pwd && make build && make deploy
+
+##################################################################################
+
+ - name: Cleanup
+ run: make docker-clean
+
+##################################################################################
+
+ - name: "Build and Deploy Debian 11 NodeJS 10 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 11 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 12 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 13 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 14 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 15 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15 && pwd && make build && make deploy
+
+##################################################################################
+
+ - name: Cleanup
+ run: make docker-clean
+
+##################################################################################
+
+ - name: "Build and Deploy Debian 11 NodeJS 16 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 17 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 18 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 19 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 20 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 21 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 NodeJS 22 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22 && pwd && make build && make deploy
+
+##################################################################################
+
+ - name: Cleanup
+ run: make docker-clean
+
+##################################################################################
+
+ - name: "Build and Deploy Debian 11 dotNet LTS Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/lts && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 dotNet STS Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/sts && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 dotNet 5 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet5 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 dotNet 6 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet6 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 dotNet 7 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet7 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 dotNet 8 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet8 && pwd && make build && make deploy
+
+ - name: "Build and Deploy Debian 11 dotNet 9 Image:"
+ run: cd linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet9 && pwd && make build && make deploy
diff --git a/Makefile b/Makefile
index 088830dbf..bf9682af5 100644
--- a/Makefile
+++ b/Makefile
@@ -110,6 +110,8 @@ advanced-redash-images:
advanced-sentry-images:
cd `pwd`/linux/advanced/sentry/latest && pwd && make sync && make patch && make build && make deploy
+####################################################################################################################
+
advanced-zabbix-images:
make advanced-zabbix-latest-images
make advanced-zabbix-30-images
@@ -253,6 +255,8 @@ advanced-zabbix-70-images:
cd `pwd`/linux/advanced/zabbix/7.0/web-mysql && pwd && make build && make deploy
cd `pwd`/linux/advanced/zabbix/7.0/web-pgsql && pwd && make build && make deploy
+####################################################################################################################
+
advanced-nextcloud-images:
cd `pwd`/linux/advanced/nextcloud/pure/14 && pwd && make build && make deploy
cd `pwd`/linux/advanced/nextcloud/pure/15 && pwd && make build && make deploy
@@ -289,6 +293,8 @@ advanced-nextcloud-patched-images:
cd `pwd`/linux/advanced/nextcloud/patched/28 && pwd && make build && make deploy
cd `pwd`/linux/advanced/nextcloud/patched/29 && pwd && make build && make deploy
+####################################################################################################################
+
ecosystem-images:
make bundle-base-images
make ecosystem-php-images
@@ -307,31 +313,7 @@ ecosystem-images:
make bundle-jira
make bundle-atlassian-latest
-advanced-pyhton-images:
- make advanced-pyhton-images-main
- make advanced-pyhton-images-develop
-
-advanced-pyhton-images-main:
- cd `pwd`/linux/advanced/python/main/2.7 && pwd && make build && make deploy
- cd `pwd`/linux/advanced/python/main/3.6 && pwd && make build && make deploy
- cd `pwd`/linux/advanced/python/main/3.7 && pwd && make build && make deploy
- cd `pwd`/linux/advanced/python/main/3.8 && pwd && make build && make deploy
- cd `pwd`/linux/advanced/python/main/3.9 && pwd && make build && make deploy
- cd `pwd`/linux/advanced/python/main/3.10 && pwd && make build && make deploy
- cd `pwd`/linux/advanced/python/main/3.11 && pwd && make build && make deploy
- cd `pwd`/linux/advanced/python/main/3.12 && pwd && make build && make deploy
- cd `pwd`/linux/advanced/python/main/3.13 && pwd && make build && make deploy
-
-advanced-pyhton-images-develop:
- cd `pwd`/linux/advanced/python/develop/2.7 && pwd && make build && make deploy
- cd `pwd`/linux/advanced/python/develop/3.6 && pwd && make build && make deploy
- cd `pwd`/linux/advanced/python/develop/3.7 && pwd && make build && make deploy
- cd `pwd`/linux/advanced/python/develop/3.8 && pwd && make build && make deploy
- cd `pwd`/linux/advanced/python/develop/3.9 && pwd && make build && make deploy
- cd `pwd`/linux/advanced/python/develop/3.10 && pwd && make build && make deploy
- cd `pwd`/linux/advanced/python/develop/3.11 && pwd && make build && make deploy
- cd `pwd`/linux/advanced/python/develop/3.12 && pwd && make build && make deploy
- cd `pwd`/linux/advanced/python/develop/3.13 && pwd && make build && make deploy
+####################################################################################################################
ecosystem-debian-images:
make ecosystem-debian-squeeze-images
@@ -344,6 +326,8 @@ ecosystem-debian-images:
make ecosystem-debian-trixie-images
make ecosystem-debian-sid-images
+####################################################################################################################
+
ecosystem-debian-squeeze-images:
cd `pwd`/linux/ecosystem/epicmorg/debian/06-squeeze/slim && pwd && make build && make deploy
cd `pwd`/linux/ecosystem/epicmorg/debian/06-squeeze/main && pwd && make build && make deploy
@@ -363,6 +347,8 @@ ecosystem-debian-squeeze-jdk-images:
cd `pwd`/linux/ecosystem/epicmorg/debian/06-squeeze/jdk21 && pwd && make build && make deploy
cd `pwd`/linux/ecosystem/epicmorg/debian/06-squeeze/jdk22 && pwd && make build && make deploy
+####################################################################################################################
+
ecosystem-debian-wheezy-images:
cd `pwd`/linux/ecosystem/epicmorg/debian/07-wheezy/slim && pwd && make build && make deploy
cd `pwd`/linux/ecosystem/epicmorg/debian/07-wheezy/main && pwd && make build && make deploy
@@ -382,6 +368,8 @@ ecosystem-debian-wheezy-jdk-images:
cd `pwd`/linux/ecosystem/epicmorg/debian/07-wheezy/jdk21 && pwd && make build && make deploy
cd `pwd`/linux/ecosystem/epicmorg/debian/07-wheezy/jdk22 && pwd && make build && make deploy
+####################################################################################################################
+
ecosystem-debian-jessie-images:
cd `pwd`/linux/ecosystem/epicmorg/debian/08-jessie/slim && pwd && make build && make deploy
cd `pwd`/linux/ecosystem/epicmorg/debian/08-jessie/main && pwd && make build && make deploy
@@ -401,6 +389,8 @@ ecosystem-debian-jessie-jdk-images:
cd `pwd`/linux/ecosystem/epicmorg/debian/08-jessie/jdk21 && pwd && make build && make deploy
cd `pwd`/linux/ecosystem/epicmorg/debian/08-jessie/jdk22 && pwd && make build && make deploy
+####################################################################################################################
+
ecosystem-debian-stretch-images:
cd `pwd`/linux/ecosystem/epicmorg/debian/09-stretch/slim && pwd && make build && make deploy
cd `pwd`/linux/ecosystem/epicmorg/debian/09-stretch/main && pwd && make build && make deploy
@@ -420,6 +410,8 @@ ecosystem-debian-stretch-jdk-images:
cd `pwd`/linux/ecosystem/epicmorg/debian/09-stretch/jdk21 && pwd && make build && make deploy
cd `pwd`/linux/ecosystem/epicmorg/debian/09-stretch/jdk22 && pwd && make build && make deploy
+####################################################################################################################
+
ecosystem-debian-buster-images:
cd `pwd`/linux/ecosystem/epicmorg/debian/10-buster/slim && pwd && make build && make deploy
cd `pwd`/linux/ecosystem/epicmorg/debian/10-buster/main && pwd && make build && make deploy
@@ -439,24 +431,64 @@ ecosystem-debian-buster-jdk-images:
cd `pwd`/linux/ecosystem/epicmorg/debian/10-buster/jdk21 && pwd && make build && make deploy
cd `pwd`/linux/ecosystem/epicmorg/debian/10-buster/jdk22 && pwd && make build && make deploy
+####################################################################################################################
+
ecosystem-debian-bullseye-images:
+ make ecosystem-debian-bullseye-base-images
+ make ecosystem-debian-bullseye-dotnet-images
+ make ecosystem-debian-bullseye-jdk-images
+ make ecosystem-debian-bullseye-nodejs-images
+
+ecosystem-debian-bullseye-base-images:
cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/slim && pwd && make build && make deploy
cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/main && pwd && make build && make deploy
cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/develop && pwd && make build && make deploy
- make ecosystem-debian-bullseye-jdk-images
+
+ecosystem-debian-bullseye-dotnet-images:
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/lts && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/sts && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet5 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet6 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet7 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet8 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet9 && pwd && make build && make deploy
ecosystem-debian-bullseye-jdk-images:
- cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk6 && pwd && make build && make deploy
- cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk7 && pwd && make build && make deploy
- cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk8 && pwd && make build && make deploy
- cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk11 && pwd && make build && make deploy
- cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk16 && pwd && make build && make deploy
- cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk17 && pwd && make build && make deploy
- cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk18 && pwd && make build && make deploy
- cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk19 && pwd && make build && make deploy
- cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk20 && pwd && make build && make deploy
- cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk21 && pwd && make build && make deploy
- cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk22 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk6 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk7 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk8 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk11 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk16 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk17 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk18 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk19 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk20 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk21 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk22 && pwd && make build && make deploy
+
+ecosystem-debian-bullseye-nodejs-images:
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node9 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22 && pwd && make build && make deploy
####################################################################################################################
@@ -521,6 +553,7 @@ ecosystem-debian-bookworm-nodejs-images:
ecosystem-debian-trixie-images:
make ecosystem-debian-trixie-base-images
+ make ecosystem-debian-trixie-dotnet-images
make ecosystem-debian-trixie-jdk-images
make ecosystem-debian-trixie-nodejs-images
@@ -529,6 +562,15 @@ ecosystem-debian-trixie-base-images:
cd `pwd`/linux/ecosystem/epicmorg/debian/13-trixie/main && pwd && make build && make deploy
cd `pwd`/linux/ecosystem/epicmorg/debian/13-trixie/develop && pwd && make build && make deploy
+ecosystem-debian-trixie-dotnet-images:
+ cd `pwd`/linux/ecosystem/epicmorg/debian/13-trixie/dotnet/lts && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/13-trixie/dotnet/sts && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/13-trixie/dotnet/dotnet5 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/13-trixie/dotnet/dotnet6 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/13-trixie/dotnet/dotnet7 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/13-trixie/dotnet/dotnet8 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/13-trixie/dotnet/dotnet9 && pwd && make build && make deploy
+
ecosystem-debian-trixie-jdk-images:
cd `pwd`/linux/ecosystem/epicmorg/debian/13-trixie/jdk/jdk6 && pwd && make build && make deploy
cd `pwd`/linux/ecosystem/epicmorg/debian/13-trixie/jdk/jdk7 && pwd && make build && make deploy
@@ -570,6 +612,7 @@ ecosystem-debian-trixie-nodejs-images:
ecosystem-debian-sid-images:
make ecosystem-debian-sid-base-images
+ make ecosystem-debian-sid-dotnet-images
make ecosystem-debian-sid-jdk-images
make ecosystem-debian-sid-nodejs-images
@@ -578,6 +621,15 @@ ecosystem-debian-sid-base-images:
cd `pwd`/linux/ecosystem/epicmorg/debian/sid/main && pwd && make build && make deploy
cd `pwd`/linux/ecosystem/epicmorg/debian/sid/develop && pwd && make build && make deploy
+ecosystem-debian-sid-dotnet-images:
+ cd `pwd`/linux/ecosystem/epicmorg/debian/sid/dotnet/lts && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/sid/dotnet/sts && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/sid/dotnet/dotnet5 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/sid/dotnet/dotnet6 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/sid/dotnet/dotnet7 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/sid/dotnet/dotnet8 && pwd && make build && make deploy
+ cd `pwd`/linux/ecosystem/epicmorg/debian/sid/dotnet/dotnet9 && pwd && make build && make deploy
+
ecosystem-debian-sid-jdk-images:
cd `pwd`/linux/ecosystem/epicmorg/debian/sid/jdk/jdk6 && pwd && make build && make deploy
cd `pwd`/linux/ecosystem/epicmorg/debian/sid/jdk/jdk7 && pwd && make build && make deploy
diff --git a/README.md b/README.md
index 368a704b1..d5d6195bf 100644
--- a/README.md
+++ b/README.md
@@ -17,7 +17,7 @@ For more information - look at `Support Document` to replace this tags and image
## CI Status
-| Debian | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.legacy.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.legacy.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.legacy.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.legacy.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.legacy.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.11.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.12.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.13.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.sid.yml) |
+| Debian | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.6.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.7.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.8.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.9.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.10.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.11.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.12.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.13.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.debian.sid.yml) |
| --- | --- | --- | --- | --- | --- | --- | --- | --- | --- |
| **codename** | squeeze | wheezy | jessie | stretch | buster | **bullseye** | **bookworm** | trixie | sid |
| **status** | deprecated | deprecated | deprecated | deprecated | deprecated | **LTS** | **Current** | testing | unstable |
@@ -36,7 +36,7 @@ A collection of docker images for production use. This repo contains 2 types of
|:-------------|:-------------|
| [](https://github.com/EpicMorg/docker/blob/master/.github/workflows/epicmorg.advanced.images.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.giltab.runners.yml)
| [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.advanced.nextcloud.images.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.web.yml)
-| [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.advanced.python.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.testrail.yml)
+| `-` | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.testrail.yml)
| [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.advanced.vscode.images.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.teamcity.agents.yml)
| [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.advanced.zabbix.images.yml) | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.ecosysctem.misc.images.yml)
| `-` | [](https://github.com/EpicMorg/docker/actions/workflows/epicmorg.base.images.current.atlassian.yml)
diff --git a/linux/advanced/python/develop/2.7/Dockerfile b/linux/discontinued/python/develop/2.7/Dockerfile
similarity index 100%
rename from linux/advanced/python/develop/2.7/Dockerfile
rename to linux/discontinued/python/develop/2.7/Dockerfile
diff --git a/linux/advanced/python/develop/2.7/Makefile b/linux/discontinued/python/develop/2.7/Makefile
similarity index 100%
rename from linux/advanced/python/develop/2.7/Makefile
rename to linux/discontinued/python/develop/2.7/Makefile
diff --git a/linux/advanced/python/develop/2.7/docker-compose.yml b/linux/discontinued/python/develop/2.7/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/develop/2.7/docker-compose.yml
rename to linux/discontinued/python/develop/2.7/docker-compose.yml
diff --git a/linux/advanced/python/develop/3.10/Dockerfile b/linux/discontinued/python/develop/3.10/Dockerfile
similarity index 100%
rename from linux/advanced/python/develop/3.10/Dockerfile
rename to linux/discontinued/python/develop/3.10/Dockerfile
diff --git a/linux/advanced/python/develop/3.10/Makefile b/linux/discontinued/python/develop/3.10/Makefile
similarity index 100%
rename from linux/advanced/python/develop/3.10/Makefile
rename to linux/discontinued/python/develop/3.10/Makefile
diff --git a/linux/advanced/python/develop/3.10/docker-compose.yml b/linux/discontinued/python/develop/3.10/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/develop/3.10/docker-compose.yml
rename to linux/discontinued/python/develop/3.10/docker-compose.yml
diff --git a/linux/advanced/python/develop/3.11/Dockerfile b/linux/discontinued/python/develop/3.11/Dockerfile
similarity index 100%
rename from linux/advanced/python/develop/3.11/Dockerfile
rename to linux/discontinued/python/develop/3.11/Dockerfile
diff --git a/linux/advanced/python/develop/3.11/Makefile b/linux/discontinued/python/develop/3.11/Makefile
similarity index 100%
rename from linux/advanced/python/develop/3.11/Makefile
rename to linux/discontinued/python/develop/3.11/Makefile
diff --git a/linux/advanced/python/develop/3.11/docker-compose.yml b/linux/discontinued/python/develop/3.11/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/develop/3.11/docker-compose.yml
rename to linux/discontinued/python/develop/3.11/docker-compose.yml
diff --git a/linux/advanced/python/develop/3.12/Dockerfile b/linux/discontinued/python/develop/3.12/Dockerfile
similarity index 100%
rename from linux/advanced/python/develop/3.12/Dockerfile
rename to linux/discontinued/python/develop/3.12/Dockerfile
diff --git a/linux/advanced/python/develop/3.12/Makefile b/linux/discontinued/python/develop/3.12/Makefile
similarity index 100%
rename from linux/advanced/python/develop/3.12/Makefile
rename to linux/discontinued/python/develop/3.12/Makefile
diff --git a/linux/advanced/python/develop/3.12/docker-compose.yml b/linux/discontinued/python/develop/3.12/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/develop/3.12/docker-compose.yml
rename to linux/discontinued/python/develop/3.12/docker-compose.yml
diff --git a/linux/advanced/python/develop/3.13/Dockerfile b/linux/discontinued/python/develop/3.13/Dockerfile
similarity index 100%
rename from linux/advanced/python/develop/3.13/Dockerfile
rename to linux/discontinued/python/develop/3.13/Dockerfile
diff --git a/linux/advanced/python/develop/3.13/Makefile b/linux/discontinued/python/develop/3.13/Makefile
similarity index 100%
rename from linux/advanced/python/develop/3.13/Makefile
rename to linux/discontinued/python/develop/3.13/Makefile
diff --git a/linux/advanced/python/develop/3.13/docker-compose.yml b/linux/discontinued/python/develop/3.13/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/develop/3.13/docker-compose.yml
rename to linux/discontinued/python/develop/3.13/docker-compose.yml
diff --git a/linux/advanced/python/develop/3.6/Dockerfile b/linux/discontinued/python/develop/3.6/Dockerfile
similarity index 100%
rename from linux/advanced/python/develop/3.6/Dockerfile
rename to linux/discontinued/python/develop/3.6/Dockerfile
diff --git a/linux/advanced/python/develop/3.6/Makefile b/linux/discontinued/python/develop/3.6/Makefile
similarity index 100%
rename from linux/advanced/python/develop/3.6/Makefile
rename to linux/discontinued/python/develop/3.6/Makefile
diff --git a/linux/advanced/python/develop/3.6/docker-compose.yml b/linux/discontinued/python/develop/3.6/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/develop/3.6/docker-compose.yml
rename to linux/discontinued/python/develop/3.6/docker-compose.yml
diff --git a/linux/advanced/python/develop/3.7/Dockerfile b/linux/discontinued/python/develop/3.7/Dockerfile
similarity index 100%
rename from linux/advanced/python/develop/3.7/Dockerfile
rename to linux/discontinued/python/develop/3.7/Dockerfile
diff --git a/linux/advanced/python/develop/3.7/Makefile b/linux/discontinued/python/develop/3.7/Makefile
similarity index 100%
rename from linux/advanced/python/develop/3.7/Makefile
rename to linux/discontinued/python/develop/3.7/Makefile
diff --git a/linux/advanced/python/develop/3.7/docker-compose.yml b/linux/discontinued/python/develop/3.7/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/develop/3.7/docker-compose.yml
rename to linux/discontinued/python/develop/3.7/docker-compose.yml
diff --git a/linux/advanced/python/develop/3.8/Dockerfile b/linux/discontinued/python/develop/3.8/Dockerfile
similarity index 100%
rename from linux/advanced/python/develop/3.8/Dockerfile
rename to linux/discontinued/python/develop/3.8/Dockerfile
diff --git a/linux/advanced/python/develop/3.8/Makefile b/linux/discontinued/python/develop/3.8/Makefile
similarity index 100%
rename from linux/advanced/python/develop/3.8/Makefile
rename to linux/discontinued/python/develop/3.8/Makefile
diff --git a/linux/advanced/python/develop/3.8/docker-compose.yml b/linux/discontinued/python/develop/3.8/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/develop/3.8/docker-compose.yml
rename to linux/discontinued/python/develop/3.8/docker-compose.yml
diff --git a/linux/advanced/python/develop/3.9/Dockerfile b/linux/discontinued/python/develop/3.9/Dockerfile
similarity index 100%
rename from linux/advanced/python/develop/3.9/Dockerfile
rename to linux/discontinued/python/develop/3.9/Dockerfile
diff --git a/linux/advanced/python/develop/3.9/Makefile b/linux/discontinued/python/develop/3.9/Makefile
similarity index 100%
rename from linux/advanced/python/develop/3.9/Makefile
rename to linux/discontinued/python/develop/3.9/Makefile
diff --git a/linux/advanced/python/develop/3.9/docker-compose.yml b/linux/discontinued/python/develop/3.9/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/develop/3.9/docker-compose.yml
rename to linux/discontinued/python/develop/3.9/docker-compose.yml
diff --git a/linux/advanced/python/main/2.7/.env b/linux/discontinued/python/main/2.7/.env
similarity index 100%
rename from linux/advanced/python/main/2.7/.env
rename to linux/discontinued/python/main/2.7/.env
diff --git a/linux/advanced/python/main/2.7/Dockerfile b/linux/discontinued/python/main/2.7/Dockerfile
similarity index 100%
rename from linux/advanced/python/main/2.7/Dockerfile
rename to linux/discontinued/python/main/2.7/Dockerfile
diff --git a/linux/advanced/python/main/2.7/Makefile b/linux/discontinued/python/main/2.7/Makefile
similarity index 100%
rename from linux/advanced/python/main/2.7/Makefile
rename to linux/discontinued/python/main/2.7/Makefile
diff --git a/linux/advanced/python/main/2.7/docker-compose.yml b/linux/discontinued/python/main/2.7/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/main/2.7/docker-compose.yml
rename to linux/discontinued/python/main/2.7/docker-compose.yml
diff --git a/linux/advanced/python/main/2.7/etc/apt/apt.conf.d/96-apt-retries b/linux/discontinued/python/main/2.7/etc/apt/apt.conf.d/96-apt-retries
similarity index 100%
rename from linux/advanced/python/main/2.7/etc/apt/apt.conf.d/96-apt-retries
rename to linux/discontinued/python/main/2.7/etc/apt/apt.conf.d/96-apt-retries
diff --git a/linux/advanced/python/main/2.7/etc/apt/apt.conf.d/97-allow-cert-exp b/linux/discontinued/python/main/2.7/etc/apt/apt.conf.d/97-allow-cert-exp
similarity index 100%
rename from linux/advanced/python/main/2.7/etc/apt/apt.conf.d/97-allow-cert-exp
rename to linux/discontinued/python/main/2.7/etc/apt/apt.conf.d/97-allow-cert-exp
diff --git a/linux/advanced/python/main/2.7/etc/apt/apt.conf.d/98-allow-unauthenticated b/linux/discontinued/python/main/2.7/etc/apt/apt.conf.d/98-allow-unauthenticated
similarity index 100%
rename from linux/advanced/python/main/2.7/etc/apt/apt.conf.d/98-allow-unauthenticated
rename to linux/discontinued/python/main/2.7/etc/apt/apt.conf.d/98-allow-unauthenticated
diff --git a/linux/advanced/python/main/2.7/etc/apt/apt.conf.d/99-no-check-valid-until b/linux/discontinued/python/main/2.7/etc/apt/apt.conf.d/99-no-check-valid-until
similarity index 100%
rename from linux/advanced/python/main/2.7/etc/apt/apt.conf.d/99-no-check-valid-until
rename to linux/discontinued/python/main/2.7/etc/apt/apt.conf.d/99-no-check-valid-until
diff --git a/linux/advanced/python/main/2.7/etc/apt/sources.list b/linux/discontinued/python/main/2.7/etc/apt/sources.list
similarity index 100%
rename from linux/advanced/python/main/2.7/etc/apt/sources.list
rename to linux/discontinued/python/main/2.7/etc/apt/sources.list
diff --git a/linux/advanced/python/main/2.7/etc/apt/sources.list.d/github_git-lfs.list b/linux/discontinued/python/main/2.7/etc/apt/sources.list.d/github_git-lfs.list
similarity index 100%
rename from linux/advanced/python/main/2.7/etc/apt/sources.list.d/github_git-lfs.list
rename to linux/discontinued/python/main/2.7/etc/apt/sources.list.d/github_git-lfs.list
diff --git a/linux/advanced/python/main/2.7/etc/apt/sources.list.d/launchpad_git-mainline.list b/linux/discontinued/python/main/2.7/etc/apt/sources.list.d/launchpad_git-mainline.list
similarity index 100%
rename from linux/advanced/python/main/2.7/etc/apt/sources.list.d/launchpad_git-mainline.list
rename to linux/discontinued/python/main/2.7/etc/apt/sources.list.d/launchpad_git-mainline.list
diff --git a/linux/advanced/python/main/2.7/etc/apt/sources.list.d/launchpad_git-stable.list b/linux/discontinued/python/main/2.7/etc/apt/sources.list.d/launchpad_git-stable.list
similarity index 100%
rename from linux/advanced/python/main/2.7/etc/apt/sources.list.d/launchpad_git-stable.list
rename to linux/discontinued/python/main/2.7/etc/apt/sources.list.d/launchpad_git-stable.list
diff --git a/linux/advanced/python/main/2.7/etc/locale.gen b/linux/discontinued/python/main/2.7/etc/locale.gen
similarity index 100%
rename from linux/advanced/python/main/2.7/etc/locale.gen
rename to linux/discontinued/python/main/2.7/etc/locale.gen
diff --git a/linux/advanced/python/main/2.7/etc/locale.gen.full b/linux/discontinued/python/main/2.7/etc/locale.gen.full
similarity index 100%
rename from linux/advanced/python/main/2.7/etc/locale.gen.full
rename to linux/discontinued/python/main/2.7/etc/locale.gen.full
diff --git a/linux/advanced/python/main/3.10/.env b/linux/discontinued/python/main/3.10/.env
similarity index 100%
rename from linux/advanced/python/main/3.10/.env
rename to linux/discontinued/python/main/3.10/.env
diff --git a/linux/advanced/python/main/3.10/Dockerfile b/linux/discontinued/python/main/3.10/Dockerfile
similarity index 100%
rename from linux/advanced/python/main/3.10/Dockerfile
rename to linux/discontinued/python/main/3.10/Dockerfile
diff --git a/linux/advanced/python/main/3.10/Makefile b/linux/discontinued/python/main/3.10/Makefile
similarity index 100%
rename from linux/advanced/python/main/3.10/Makefile
rename to linux/discontinued/python/main/3.10/Makefile
diff --git a/linux/advanced/python/main/3.10/docker-compose.yml b/linux/discontinued/python/main/3.10/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/main/3.10/docker-compose.yml
rename to linux/discontinued/python/main/3.10/docker-compose.yml
diff --git a/linux/advanced/python/main/3.10/etc/apt/apt.conf.d/96-apt-retries b/linux/discontinued/python/main/3.10/etc/apt/apt.conf.d/96-apt-retries
similarity index 100%
rename from linux/advanced/python/main/3.10/etc/apt/apt.conf.d/96-apt-retries
rename to linux/discontinued/python/main/3.10/etc/apt/apt.conf.d/96-apt-retries
diff --git a/linux/advanced/python/main/3.10/etc/apt/apt.conf.d/97-allow-cert-exp b/linux/discontinued/python/main/3.10/etc/apt/apt.conf.d/97-allow-cert-exp
similarity index 100%
rename from linux/advanced/python/main/3.10/etc/apt/apt.conf.d/97-allow-cert-exp
rename to linux/discontinued/python/main/3.10/etc/apt/apt.conf.d/97-allow-cert-exp
diff --git a/linux/advanced/python/main/3.10/etc/apt/apt.conf.d/98-allow-unauthenticated b/linux/discontinued/python/main/3.10/etc/apt/apt.conf.d/98-allow-unauthenticated
similarity index 100%
rename from linux/advanced/python/main/3.10/etc/apt/apt.conf.d/98-allow-unauthenticated
rename to linux/discontinued/python/main/3.10/etc/apt/apt.conf.d/98-allow-unauthenticated
diff --git a/linux/advanced/python/main/3.10/etc/apt/apt.conf.d/99-no-check-valid-until b/linux/discontinued/python/main/3.10/etc/apt/apt.conf.d/99-no-check-valid-until
similarity index 100%
rename from linux/advanced/python/main/3.10/etc/apt/apt.conf.d/99-no-check-valid-until
rename to linux/discontinued/python/main/3.10/etc/apt/apt.conf.d/99-no-check-valid-until
diff --git a/linux/advanced/python/main/3.10/etc/apt/sources.list b/linux/discontinued/python/main/3.10/etc/apt/sources.list
similarity index 100%
rename from linux/advanced/python/main/3.10/etc/apt/sources.list
rename to linux/discontinued/python/main/3.10/etc/apt/sources.list
diff --git a/linux/advanced/python/main/3.10/etc/apt/sources.list.d/github_git-lfs.list b/linux/discontinued/python/main/3.10/etc/apt/sources.list.d/github_git-lfs.list
similarity index 100%
rename from linux/advanced/python/main/3.10/etc/apt/sources.list.d/github_git-lfs.list
rename to linux/discontinued/python/main/3.10/etc/apt/sources.list.d/github_git-lfs.list
diff --git a/linux/advanced/python/main/3.10/etc/apt/sources.list.d/launchpad_git-mainline.list b/linux/discontinued/python/main/3.10/etc/apt/sources.list.d/launchpad_git-mainline.list
similarity index 100%
rename from linux/advanced/python/main/3.10/etc/apt/sources.list.d/launchpad_git-mainline.list
rename to linux/discontinued/python/main/3.10/etc/apt/sources.list.d/launchpad_git-mainline.list
diff --git a/linux/advanced/python/main/3.10/etc/apt/sources.list.d/launchpad_git-stable.list b/linux/discontinued/python/main/3.10/etc/apt/sources.list.d/launchpad_git-stable.list
similarity index 100%
rename from linux/advanced/python/main/3.10/etc/apt/sources.list.d/launchpad_git-stable.list
rename to linux/discontinued/python/main/3.10/etc/apt/sources.list.d/launchpad_git-stable.list
diff --git a/linux/advanced/python/main/3.10/etc/locale.gen b/linux/discontinued/python/main/3.10/etc/locale.gen
similarity index 100%
rename from linux/advanced/python/main/3.10/etc/locale.gen
rename to linux/discontinued/python/main/3.10/etc/locale.gen
diff --git a/linux/advanced/python/main/3.10/etc/locale.gen.full b/linux/discontinued/python/main/3.10/etc/locale.gen.full
similarity index 100%
rename from linux/advanced/python/main/3.10/etc/locale.gen.full
rename to linux/discontinued/python/main/3.10/etc/locale.gen.full
diff --git a/linux/advanced/python/main/3.11/.env b/linux/discontinued/python/main/3.11/.env
similarity index 100%
rename from linux/advanced/python/main/3.11/.env
rename to linux/discontinued/python/main/3.11/.env
diff --git a/linux/advanced/python/main/3.11/Dockerfile b/linux/discontinued/python/main/3.11/Dockerfile
similarity index 100%
rename from linux/advanced/python/main/3.11/Dockerfile
rename to linux/discontinued/python/main/3.11/Dockerfile
diff --git a/linux/advanced/python/main/3.11/Makefile b/linux/discontinued/python/main/3.11/Makefile
similarity index 100%
rename from linux/advanced/python/main/3.11/Makefile
rename to linux/discontinued/python/main/3.11/Makefile
diff --git a/linux/advanced/python/main/3.11/docker-compose.yml b/linux/discontinued/python/main/3.11/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/main/3.11/docker-compose.yml
rename to linux/discontinued/python/main/3.11/docker-compose.yml
diff --git a/linux/advanced/python/main/3.11/etc/apt/apt.conf.d/96-apt-retries b/linux/discontinued/python/main/3.11/etc/apt/apt.conf.d/96-apt-retries
similarity index 100%
rename from linux/advanced/python/main/3.11/etc/apt/apt.conf.d/96-apt-retries
rename to linux/discontinued/python/main/3.11/etc/apt/apt.conf.d/96-apt-retries
diff --git a/linux/advanced/python/main/3.11/etc/apt/apt.conf.d/97-allow-cert-exp b/linux/discontinued/python/main/3.11/etc/apt/apt.conf.d/97-allow-cert-exp
similarity index 100%
rename from linux/advanced/python/main/3.11/etc/apt/apt.conf.d/97-allow-cert-exp
rename to linux/discontinued/python/main/3.11/etc/apt/apt.conf.d/97-allow-cert-exp
diff --git a/linux/advanced/python/main/3.11/etc/apt/apt.conf.d/98-allow-unauthenticated b/linux/discontinued/python/main/3.11/etc/apt/apt.conf.d/98-allow-unauthenticated
similarity index 100%
rename from linux/advanced/python/main/3.11/etc/apt/apt.conf.d/98-allow-unauthenticated
rename to linux/discontinued/python/main/3.11/etc/apt/apt.conf.d/98-allow-unauthenticated
diff --git a/linux/advanced/python/main/3.11/etc/apt/apt.conf.d/99-no-check-valid-until b/linux/discontinued/python/main/3.11/etc/apt/apt.conf.d/99-no-check-valid-until
similarity index 100%
rename from linux/advanced/python/main/3.11/etc/apt/apt.conf.d/99-no-check-valid-until
rename to linux/discontinued/python/main/3.11/etc/apt/apt.conf.d/99-no-check-valid-until
diff --git a/linux/advanced/python/main/3.11/etc/apt/sources.list b/linux/discontinued/python/main/3.11/etc/apt/sources.list
similarity index 100%
rename from linux/advanced/python/main/3.11/etc/apt/sources.list
rename to linux/discontinued/python/main/3.11/etc/apt/sources.list
diff --git a/linux/advanced/python/main/3.11/etc/apt/sources.list.d/github_git-lfs.list b/linux/discontinued/python/main/3.11/etc/apt/sources.list.d/github_git-lfs.list
similarity index 100%
rename from linux/advanced/python/main/3.11/etc/apt/sources.list.d/github_git-lfs.list
rename to linux/discontinued/python/main/3.11/etc/apt/sources.list.d/github_git-lfs.list
diff --git a/linux/advanced/python/main/3.11/etc/apt/sources.list.d/launchpad_git-mainline.list b/linux/discontinued/python/main/3.11/etc/apt/sources.list.d/launchpad_git-mainline.list
similarity index 100%
rename from linux/advanced/python/main/3.11/etc/apt/sources.list.d/launchpad_git-mainline.list
rename to linux/discontinued/python/main/3.11/etc/apt/sources.list.d/launchpad_git-mainline.list
diff --git a/linux/advanced/python/main/3.11/etc/apt/sources.list.d/launchpad_git-stable.list b/linux/discontinued/python/main/3.11/etc/apt/sources.list.d/launchpad_git-stable.list
similarity index 100%
rename from linux/advanced/python/main/3.11/etc/apt/sources.list.d/launchpad_git-stable.list
rename to linux/discontinued/python/main/3.11/etc/apt/sources.list.d/launchpad_git-stable.list
diff --git a/linux/advanced/python/main/3.11/etc/locale.gen b/linux/discontinued/python/main/3.11/etc/locale.gen
similarity index 100%
rename from linux/advanced/python/main/3.11/etc/locale.gen
rename to linux/discontinued/python/main/3.11/etc/locale.gen
diff --git a/linux/advanced/python/main/3.11/etc/locale.gen.full b/linux/discontinued/python/main/3.11/etc/locale.gen.full
similarity index 100%
rename from linux/advanced/python/main/3.11/etc/locale.gen.full
rename to linux/discontinued/python/main/3.11/etc/locale.gen.full
diff --git a/linux/advanced/python/main/3.12/.env b/linux/discontinued/python/main/3.12/.env
similarity index 100%
rename from linux/advanced/python/main/3.12/.env
rename to linux/discontinued/python/main/3.12/.env
diff --git a/linux/advanced/python/main/3.12/Dockerfile b/linux/discontinued/python/main/3.12/Dockerfile
similarity index 100%
rename from linux/advanced/python/main/3.12/Dockerfile
rename to linux/discontinued/python/main/3.12/Dockerfile
diff --git a/linux/advanced/python/main/3.12/Makefile b/linux/discontinued/python/main/3.12/Makefile
similarity index 100%
rename from linux/advanced/python/main/3.12/Makefile
rename to linux/discontinued/python/main/3.12/Makefile
diff --git a/linux/advanced/python/main/3.12/docker-compose.yml b/linux/discontinued/python/main/3.12/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/main/3.12/docker-compose.yml
rename to linux/discontinued/python/main/3.12/docker-compose.yml
diff --git a/linux/advanced/python/main/3.12/etc/apt/apt.conf.d/96-apt-retries b/linux/discontinued/python/main/3.12/etc/apt/apt.conf.d/96-apt-retries
similarity index 100%
rename from linux/advanced/python/main/3.12/etc/apt/apt.conf.d/96-apt-retries
rename to linux/discontinued/python/main/3.12/etc/apt/apt.conf.d/96-apt-retries
diff --git a/linux/advanced/python/main/3.12/etc/apt/apt.conf.d/97-allow-cert-exp b/linux/discontinued/python/main/3.12/etc/apt/apt.conf.d/97-allow-cert-exp
similarity index 100%
rename from linux/advanced/python/main/3.12/etc/apt/apt.conf.d/97-allow-cert-exp
rename to linux/discontinued/python/main/3.12/etc/apt/apt.conf.d/97-allow-cert-exp
diff --git a/linux/advanced/python/main/3.12/etc/apt/apt.conf.d/98-allow-unauthenticated b/linux/discontinued/python/main/3.12/etc/apt/apt.conf.d/98-allow-unauthenticated
similarity index 100%
rename from linux/advanced/python/main/3.12/etc/apt/apt.conf.d/98-allow-unauthenticated
rename to linux/discontinued/python/main/3.12/etc/apt/apt.conf.d/98-allow-unauthenticated
diff --git a/linux/advanced/python/main/3.12/etc/apt/apt.conf.d/99-no-check-valid-until b/linux/discontinued/python/main/3.12/etc/apt/apt.conf.d/99-no-check-valid-until
similarity index 100%
rename from linux/advanced/python/main/3.12/etc/apt/apt.conf.d/99-no-check-valid-until
rename to linux/discontinued/python/main/3.12/etc/apt/apt.conf.d/99-no-check-valid-until
diff --git a/linux/advanced/python/main/3.12/etc/apt/sources.list b/linux/discontinued/python/main/3.12/etc/apt/sources.list
similarity index 100%
rename from linux/advanced/python/main/3.12/etc/apt/sources.list
rename to linux/discontinued/python/main/3.12/etc/apt/sources.list
diff --git a/linux/advanced/python/main/3.12/etc/apt/sources.list.d/github_git-lfs.list b/linux/discontinued/python/main/3.12/etc/apt/sources.list.d/github_git-lfs.list
similarity index 100%
rename from linux/advanced/python/main/3.12/etc/apt/sources.list.d/github_git-lfs.list
rename to linux/discontinued/python/main/3.12/etc/apt/sources.list.d/github_git-lfs.list
diff --git a/linux/advanced/python/main/3.12/etc/apt/sources.list.d/launchpad_git-mainline.list b/linux/discontinued/python/main/3.12/etc/apt/sources.list.d/launchpad_git-mainline.list
similarity index 100%
rename from linux/advanced/python/main/3.12/etc/apt/sources.list.d/launchpad_git-mainline.list
rename to linux/discontinued/python/main/3.12/etc/apt/sources.list.d/launchpad_git-mainline.list
diff --git a/linux/advanced/python/main/3.12/etc/apt/sources.list.d/launchpad_git-stable.list b/linux/discontinued/python/main/3.12/etc/apt/sources.list.d/launchpad_git-stable.list
similarity index 100%
rename from linux/advanced/python/main/3.12/etc/apt/sources.list.d/launchpad_git-stable.list
rename to linux/discontinued/python/main/3.12/etc/apt/sources.list.d/launchpad_git-stable.list
diff --git a/linux/advanced/python/main/3.12/etc/apt/trusted.gpg.d/deb-multimedia-keyring.gpg b/linux/discontinued/python/main/3.12/etc/apt/trusted.gpg.d/deb-multimedia-keyring.gpg
similarity index 100%
rename from linux/advanced/python/main/3.12/etc/apt/trusted.gpg.d/deb-multimedia-keyring.gpg
rename to linux/discontinued/python/main/3.12/etc/apt/trusted.gpg.d/deb-multimedia-keyring.gpg
diff --git a/linux/advanced/python/main/3.12/etc/apt/trusted.gpg.d/githubcli-archive-keyring.gpg b/linux/discontinued/python/main/3.12/etc/apt/trusted.gpg.d/githubcli-archive-keyring.gpg
similarity index 100%
rename from linux/advanced/python/main/3.12/etc/apt/trusted.gpg.d/githubcli-archive-keyring.gpg
rename to linux/discontinued/python/main/3.12/etc/apt/trusted.gpg.d/githubcli-archive-keyring.gpg
diff --git a/linux/advanced/python/main/3.12/etc/locale.gen b/linux/discontinued/python/main/3.12/etc/locale.gen
similarity index 100%
rename from linux/advanced/python/main/3.12/etc/locale.gen
rename to linux/discontinued/python/main/3.12/etc/locale.gen
diff --git a/linux/advanced/python/main/3.12/etc/locale.gen.full b/linux/discontinued/python/main/3.12/etc/locale.gen.full
similarity index 100%
rename from linux/advanced/python/main/3.12/etc/locale.gen.full
rename to linux/discontinued/python/main/3.12/etc/locale.gen.full
diff --git a/linux/advanced/python/main/3.13/.env b/linux/discontinued/python/main/3.13/.env
similarity index 100%
rename from linux/advanced/python/main/3.13/.env
rename to linux/discontinued/python/main/3.13/.env
diff --git a/linux/advanced/python/main/3.13/Dockerfile b/linux/discontinued/python/main/3.13/Dockerfile
similarity index 100%
rename from linux/advanced/python/main/3.13/Dockerfile
rename to linux/discontinued/python/main/3.13/Dockerfile
diff --git a/linux/advanced/python/main/3.13/Makefile b/linux/discontinued/python/main/3.13/Makefile
similarity index 100%
rename from linux/advanced/python/main/3.13/Makefile
rename to linux/discontinued/python/main/3.13/Makefile
diff --git a/linux/advanced/python/main/3.13/docker-compose.yml b/linux/discontinued/python/main/3.13/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/main/3.13/docker-compose.yml
rename to linux/discontinued/python/main/3.13/docker-compose.yml
diff --git a/linux/advanced/python/main/3.13/etc/apt/apt.conf.d/96-apt-retries b/linux/discontinued/python/main/3.13/etc/apt/apt.conf.d/96-apt-retries
similarity index 100%
rename from linux/advanced/python/main/3.13/etc/apt/apt.conf.d/96-apt-retries
rename to linux/discontinued/python/main/3.13/etc/apt/apt.conf.d/96-apt-retries
diff --git a/linux/advanced/python/main/3.13/etc/apt/apt.conf.d/97-allow-cert-exp b/linux/discontinued/python/main/3.13/etc/apt/apt.conf.d/97-allow-cert-exp
similarity index 100%
rename from linux/advanced/python/main/3.13/etc/apt/apt.conf.d/97-allow-cert-exp
rename to linux/discontinued/python/main/3.13/etc/apt/apt.conf.d/97-allow-cert-exp
diff --git a/linux/advanced/python/main/3.13/etc/apt/apt.conf.d/98-allow-unauthenticated b/linux/discontinued/python/main/3.13/etc/apt/apt.conf.d/98-allow-unauthenticated
similarity index 100%
rename from linux/advanced/python/main/3.13/etc/apt/apt.conf.d/98-allow-unauthenticated
rename to linux/discontinued/python/main/3.13/etc/apt/apt.conf.d/98-allow-unauthenticated
diff --git a/linux/advanced/python/main/3.13/etc/apt/apt.conf.d/99-no-check-valid-until b/linux/discontinued/python/main/3.13/etc/apt/apt.conf.d/99-no-check-valid-until
similarity index 100%
rename from linux/advanced/python/main/3.13/etc/apt/apt.conf.d/99-no-check-valid-until
rename to linux/discontinued/python/main/3.13/etc/apt/apt.conf.d/99-no-check-valid-until
diff --git a/linux/advanced/python/main/3.13/etc/apt/sources.list b/linux/discontinued/python/main/3.13/etc/apt/sources.list
similarity index 100%
rename from linux/advanced/python/main/3.13/etc/apt/sources.list
rename to linux/discontinued/python/main/3.13/etc/apt/sources.list
diff --git a/linux/advanced/python/main/3.13/etc/apt/sources.list.d/github_git-lfs.list b/linux/discontinued/python/main/3.13/etc/apt/sources.list.d/github_git-lfs.list
similarity index 100%
rename from linux/advanced/python/main/3.13/etc/apt/sources.list.d/github_git-lfs.list
rename to linux/discontinued/python/main/3.13/etc/apt/sources.list.d/github_git-lfs.list
diff --git a/linux/advanced/python/main/3.13/etc/apt/sources.list.d/launchpad_git-mainline.list b/linux/discontinued/python/main/3.13/etc/apt/sources.list.d/launchpad_git-mainline.list
similarity index 100%
rename from linux/advanced/python/main/3.13/etc/apt/sources.list.d/launchpad_git-mainline.list
rename to linux/discontinued/python/main/3.13/etc/apt/sources.list.d/launchpad_git-mainline.list
diff --git a/linux/advanced/python/main/3.13/etc/apt/sources.list.d/launchpad_git-stable.list b/linux/discontinued/python/main/3.13/etc/apt/sources.list.d/launchpad_git-stable.list
similarity index 100%
rename from linux/advanced/python/main/3.13/etc/apt/sources.list.d/launchpad_git-stable.list
rename to linux/discontinued/python/main/3.13/etc/apt/sources.list.d/launchpad_git-stable.list
diff --git a/linux/advanced/python/main/3.13/etc/locale.gen b/linux/discontinued/python/main/3.13/etc/locale.gen
similarity index 100%
rename from linux/advanced/python/main/3.13/etc/locale.gen
rename to linux/discontinued/python/main/3.13/etc/locale.gen
diff --git a/linux/advanced/python/main/3.13/etc/locale.gen.full b/linux/discontinued/python/main/3.13/etc/locale.gen.full
similarity index 100%
rename from linux/advanced/python/main/3.13/etc/locale.gen.full
rename to linux/discontinued/python/main/3.13/etc/locale.gen.full
diff --git a/linux/advanced/python/main/3.6/.env b/linux/discontinued/python/main/3.6/.env
similarity index 100%
rename from linux/advanced/python/main/3.6/.env
rename to linux/discontinued/python/main/3.6/.env
diff --git a/linux/advanced/python/main/3.6/Dockerfile b/linux/discontinued/python/main/3.6/Dockerfile
similarity index 100%
rename from linux/advanced/python/main/3.6/Dockerfile
rename to linux/discontinued/python/main/3.6/Dockerfile
diff --git a/linux/advanced/python/main/3.6/Makefile b/linux/discontinued/python/main/3.6/Makefile
similarity index 100%
rename from linux/advanced/python/main/3.6/Makefile
rename to linux/discontinued/python/main/3.6/Makefile
diff --git a/linux/advanced/python/main/3.6/docker-compose.yml b/linux/discontinued/python/main/3.6/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/main/3.6/docker-compose.yml
rename to linux/discontinued/python/main/3.6/docker-compose.yml
diff --git a/linux/advanced/python/main/3.6/etc/apt/apt.conf.d/96-apt-retries b/linux/discontinued/python/main/3.6/etc/apt/apt.conf.d/96-apt-retries
similarity index 100%
rename from linux/advanced/python/main/3.6/etc/apt/apt.conf.d/96-apt-retries
rename to linux/discontinued/python/main/3.6/etc/apt/apt.conf.d/96-apt-retries
diff --git a/linux/advanced/python/main/3.6/etc/apt/apt.conf.d/97-allow-cert-exp b/linux/discontinued/python/main/3.6/etc/apt/apt.conf.d/97-allow-cert-exp
similarity index 100%
rename from linux/advanced/python/main/3.6/etc/apt/apt.conf.d/97-allow-cert-exp
rename to linux/discontinued/python/main/3.6/etc/apt/apt.conf.d/97-allow-cert-exp
diff --git a/linux/advanced/python/main/3.6/etc/apt/apt.conf.d/98-allow-unauthenticated b/linux/discontinued/python/main/3.6/etc/apt/apt.conf.d/98-allow-unauthenticated
similarity index 100%
rename from linux/advanced/python/main/3.6/etc/apt/apt.conf.d/98-allow-unauthenticated
rename to linux/discontinued/python/main/3.6/etc/apt/apt.conf.d/98-allow-unauthenticated
diff --git a/linux/advanced/python/main/3.6/etc/apt/apt.conf.d/99-no-check-valid-until b/linux/discontinued/python/main/3.6/etc/apt/apt.conf.d/99-no-check-valid-until
similarity index 100%
rename from linux/advanced/python/main/3.6/etc/apt/apt.conf.d/99-no-check-valid-until
rename to linux/discontinued/python/main/3.6/etc/apt/apt.conf.d/99-no-check-valid-until
diff --git a/linux/advanced/python/main/3.6/etc/apt/sources.list b/linux/discontinued/python/main/3.6/etc/apt/sources.list
similarity index 100%
rename from linux/advanced/python/main/3.6/etc/apt/sources.list
rename to linux/discontinued/python/main/3.6/etc/apt/sources.list
diff --git a/linux/advanced/python/main/3.6/etc/apt/sources.list.d/github_git-lfs.list b/linux/discontinued/python/main/3.6/etc/apt/sources.list.d/github_git-lfs.list
similarity index 100%
rename from linux/advanced/python/main/3.6/etc/apt/sources.list.d/github_git-lfs.list
rename to linux/discontinued/python/main/3.6/etc/apt/sources.list.d/github_git-lfs.list
diff --git a/linux/advanced/python/main/3.6/etc/apt/sources.list.d/launchpad_git-mainline.list b/linux/discontinued/python/main/3.6/etc/apt/sources.list.d/launchpad_git-mainline.list
similarity index 100%
rename from linux/advanced/python/main/3.6/etc/apt/sources.list.d/launchpad_git-mainline.list
rename to linux/discontinued/python/main/3.6/etc/apt/sources.list.d/launchpad_git-mainline.list
diff --git a/linux/advanced/python/main/3.6/etc/apt/sources.list.d/launchpad_git-stable.list b/linux/discontinued/python/main/3.6/etc/apt/sources.list.d/launchpad_git-stable.list
similarity index 100%
rename from linux/advanced/python/main/3.6/etc/apt/sources.list.d/launchpad_git-stable.list
rename to linux/discontinued/python/main/3.6/etc/apt/sources.list.d/launchpad_git-stable.list
diff --git a/linux/advanced/python/main/3.6/etc/locale.gen b/linux/discontinued/python/main/3.6/etc/locale.gen
similarity index 100%
rename from linux/advanced/python/main/3.6/etc/locale.gen
rename to linux/discontinued/python/main/3.6/etc/locale.gen
diff --git a/linux/advanced/python/main/3.6/etc/locale.gen.full b/linux/discontinued/python/main/3.6/etc/locale.gen.full
similarity index 100%
rename from linux/advanced/python/main/3.6/etc/locale.gen.full
rename to linux/discontinued/python/main/3.6/etc/locale.gen.full
diff --git a/linux/advanced/python/main/3.7/.env b/linux/discontinued/python/main/3.7/.env
similarity index 100%
rename from linux/advanced/python/main/3.7/.env
rename to linux/discontinued/python/main/3.7/.env
diff --git a/linux/advanced/python/main/3.7/Dockerfile b/linux/discontinued/python/main/3.7/Dockerfile
similarity index 100%
rename from linux/advanced/python/main/3.7/Dockerfile
rename to linux/discontinued/python/main/3.7/Dockerfile
diff --git a/linux/advanced/python/main/3.7/Makefile b/linux/discontinued/python/main/3.7/Makefile
similarity index 100%
rename from linux/advanced/python/main/3.7/Makefile
rename to linux/discontinued/python/main/3.7/Makefile
diff --git a/linux/advanced/python/main/3.7/docker-compose.yml b/linux/discontinued/python/main/3.7/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/main/3.7/docker-compose.yml
rename to linux/discontinued/python/main/3.7/docker-compose.yml
diff --git a/linux/advanced/python/main/3.7/etc/apt/apt.conf.d/96-apt-retries b/linux/discontinued/python/main/3.7/etc/apt/apt.conf.d/96-apt-retries
similarity index 100%
rename from linux/advanced/python/main/3.7/etc/apt/apt.conf.d/96-apt-retries
rename to linux/discontinued/python/main/3.7/etc/apt/apt.conf.d/96-apt-retries
diff --git a/linux/advanced/python/main/3.7/etc/apt/apt.conf.d/97-allow-cert-exp b/linux/discontinued/python/main/3.7/etc/apt/apt.conf.d/97-allow-cert-exp
similarity index 100%
rename from linux/advanced/python/main/3.7/etc/apt/apt.conf.d/97-allow-cert-exp
rename to linux/discontinued/python/main/3.7/etc/apt/apt.conf.d/97-allow-cert-exp
diff --git a/linux/advanced/python/main/3.7/etc/apt/apt.conf.d/98-allow-unauthenticated b/linux/discontinued/python/main/3.7/etc/apt/apt.conf.d/98-allow-unauthenticated
similarity index 100%
rename from linux/advanced/python/main/3.7/etc/apt/apt.conf.d/98-allow-unauthenticated
rename to linux/discontinued/python/main/3.7/etc/apt/apt.conf.d/98-allow-unauthenticated
diff --git a/linux/advanced/python/main/3.7/etc/apt/apt.conf.d/99-no-check-valid-until b/linux/discontinued/python/main/3.7/etc/apt/apt.conf.d/99-no-check-valid-until
similarity index 100%
rename from linux/advanced/python/main/3.7/etc/apt/apt.conf.d/99-no-check-valid-until
rename to linux/discontinued/python/main/3.7/etc/apt/apt.conf.d/99-no-check-valid-until
diff --git a/linux/advanced/python/main/3.7/etc/apt/sources.list b/linux/discontinued/python/main/3.7/etc/apt/sources.list
similarity index 100%
rename from linux/advanced/python/main/3.7/etc/apt/sources.list
rename to linux/discontinued/python/main/3.7/etc/apt/sources.list
diff --git a/linux/advanced/python/main/3.7/etc/apt/sources.list.d/github_git-lfs.list b/linux/discontinued/python/main/3.7/etc/apt/sources.list.d/github_git-lfs.list
similarity index 100%
rename from linux/advanced/python/main/3.7/etc/apt/sources.list.d/github_git-lfs.list
rename to linux/discontinued/python/main/3.7/etc/apt/sources.list.d/github_git-lfs.list
diff --git a/linux/advanced/python/main/3.7/etc/apt/sources.list.d/launchpad_git-mainline.list b/linux/discontinued/python/main/3.7/etc/apt/sources.list.d/launchpad_git-mainline.list
similarity index 100%
rename from linux/advanced/python/main/3.7/etc/apt/sources.list.d/launchpad_git-mainline.list
rename to linux/discontinued/python/main/3.7/etc/apt/sources.list.d/launchpad_git-mainline.list
diff --git a/linux/advanced/python/main/3.7/etc/apt/sources.list.d/launchpad_git-stable.list b/linux/discontinued/python/main/3.7/etc/apt/sources.list.d/launchpad_git-stable.list
similarity index 100%
rename from linux/advanced/python/main/3.7/etc/apt/sources.list.d/launchpad_git-stable.list
rename to linux/discontinued/python/main/3.7/etc/apt/sources.list.d/launchpad_git-stable.list
diff --git a/linux/advanced/python/main/3.7/etc/locale.gen b/linux/discontinued/python/main/3.7/etc/locale.gen
similarity index 100%
rename from linux/advanced/python/main/3.7/etc/locale.gen
rename to linux/discontinued/python/main/3.7/etc/locale.gen
diff --git a/linux/advanced/python/main/3.7/etc/locale.gen.full b/linux/discontinued/python/main/3.7/etc/locale.gen.full
similarity index 100%
rename from linux/advanced/python/main/3.7/etc/locale.gen.full
rename to linux/discontinued/python/main/3.7/etc/locale.gen.full
diff --git a/linux/advanced/python/main/3.8/.env b/linux/discontinued/python/main/3.8/.env
similarity index 100%
rename from linux/advanced/python/main/3.8/.env
rename to linux/discontinued/python/main/3.8/.env
diff --git a/linux/advanced/python/main/3.8/Dockerfile b/linux/discontinued/python/main/3.8/Dockerfile
similarity index 100%
rename from linux/advanced/python/main/3.8/Dockerfile
rename to linux/discontinued/python/main/3.8/Dockerfile
diff --git a/linux/advanced/python/main/3.8/Makefile b/linux/discontinued/python/main/3.8/Makefile
similarity index 100%
rename from linux/advanced/python/main/3.8/Makefile
rename to linux/discontinued/python/main/3.8/Makefile
diff --git a/linux/advanced/python/main/3.8/docker-compose.yml b/linux/discontinued/python/main/3.8/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/main/3.8/docker-compose.yml
rename to linux/discontinued/python/main/3.8/docker-compose.yml
diff --git a/linux/advanced/python/main/3.8/etc/apt/apt.conf.d/96-apt-retries b/linux/discontinued/python/main/3.8/etc/apt/apt.conf.d/96-apt-retries
similarity index 100%
rename from linux/advanced/python/main/3.8/etc/apt/apt.conf.d/96-apt-retries
rename to linux/discontinued/python/main/3.8/etc/apt/apt.conf.d/96-apt-retries
diff --git a/linux/advanced/python/main/3.8/etc/apt/apt.conf.d/97-allow-cert-exp b/linux/discontinued/python/main/3.8/etc/apt/apt.conf.d/97-allow-cert-exp
similarity index 100%
rename from linux/advanced/python/main/3.8/etc/apt/apt.conf.d/97-allow-cert-exp
rename to linux/discontinued/python/main/3.8/etc/apt/apt.conf.d/97-allow-cert-exp
diff --git a/linux/advanced/python/main/3.8/etc/apt/apt.conf.d/98-allow-unauthenticated b/linux/discontinued/python/main/3.8/etc/apt/apt.conf.d/98-allow-unauthenticated
similarity index 100%
rename from linux/advanced/python/main/3.8/etc/apt/apt.conf.d/98-allow-unauthenticated
rename to linux/discontinued/python/main/3.8/etc/apt/apt.conf.d/98-allow-unauthenticated
diff --git a/linux/advanced/python/main/3.8/etc/apt/apt.conf.d/99-no-check-valid-until b/linux/discontinued/python/main/3.8/etc/apt/apt.conf.d/99-no-check-valid-until
similarity index 100%
rename from linux/advanced/python/main/3.8/etc/apt/apt.conf.d/99-no-check-valid-until
rename to linux/discontinued/python/main/3.8/etc/apt/apt.conf.d/99-no-check-valid-until
diff --git a/linux/advanced/python/main/3.8/etc/apt/sources.list b/linux/discontinued/python/main/3.8/etc/apt/sources.list
similarity index 100%
rename from linux/advanced/python/main/3.8/etc/apt/sources.list
rename to linux/discontinued/python/main/3.8/etc/apt/sources.list
diff --git a/linux/advanced/python/main/3.8/etc/apt/sources.list.d/github_git-lfs.list b/linux/discontinued/python/main/3.8/etc/apt/sources.list.d/github_git-lfs.list
similarity index 100%
rename from linux/advanced/python/main/3.8/etc/apt/sources.list.d/github_git-lfs.list
rename to linux/discontinued/python/main/3.8/etc/apt/sources.list.d/github_git-lfs.list
diff --git a/linux/advanced/python/main/3.8/etc/apt/sources.list.d/launchpad_git-mainline.list b/linux/discontinued/python/main/3.8/etc/apt/sources.list.d/launchpad_git-mainline.list
similarity index 100%
rename from linux/advanced/python/main/3.8/etc/apt/sources.list.d/launchpad_git-mainline.list
rename to linux/discontinued/python/main/3.8/etc/apt/sources.list.d/launchpad_git-mainline.list
diff --git a/linux/advanced/python/main/3.8/etc/apt/sources.list.d/launchpad_git-stable.list b/linux/discontinued/python/main/3.8/etc/apt/sources.list.d/launchpad_git-stable.list
similarity index 100%
rename from linux/advanced/python/main/3.8/etc/apt/sources.list.d/launchpad_git-stable.list
rename to linux/discontinued/python/main/3.8/etc/apt/sources.list.d/launchpad_git-stable.list
diff --git a/linux/advanced/python/main/3.8/etc/locale.gen b/linux/discontinued/python/main/3.8/etc/locale.gen
similarity index 100%
rename from linux/advanced/python/main/3.8/etc/locale.gen
rename to linux/discontinued/python/main/3.8/etc/locale.gen
diff --git a/linux/advanced/python/main/3.8/etc/locale.gen.full b/linux/discontinued/python/main/3.8/etc/locale.gen.full
similarity index 100%
rename from linux/advanced/python/main/3.8/etc/locale.gen.full
rename to linux/discontinued/python/main/3.8/etc/locale.gen.full
diff --git a/linux/advanced/python/main/3.9/.env b/linux/discontinued/python/main/3.9/.env
similarity index 100%
rename from linux/advanced/python/main/3.9/.env
rename to linux/discontinued/python/main/3.9/.env
diff --git a/linux/advanced/python/main/3.9/Dockerfile b/linux/discontinued/python/main/3.9/Dockerfile
similarity index 100%
rename from linux/advanced/python/main/3.9/Dockerfile
rename to linux/discontinued/python/main/3.9/Dockerfile
diff --git a/linux/advanced/python/main/3.9/Makefile b/linux/discontinued/python/main/3.9/Makefile
similarity index 100%
rename from linux/advanced/python/main/3.9/Makefile
rename to linux/discontinued/python/main/3.9/Makefile
diff --git a/linux/advanced/python/main/3.9/docker-compose.yml b/linux/discontinued/python/main/3.9/docker-compose.yml
similarity index 100%
rename from linux/advanced/python/main/3.9/docker-compose.yml
rename to linux/discontinued/python/main/3.9/docker-compose.yml
diff --git a/linux/advanced/python/main/3.9/etc/apt/apt.conf.d/96-apt-retries b/linux/discontinued/python/main/3.9/etc/apt/apt.conf.d/96-apt-retries
similarity index 100%
rename from linux/advanced/python/main/3.9/etc/apt/apt.conf.d/96-apt-retries
rename to linux/discontinued/python/main/3.9/etc/apt/apt.conf.d/96-apt-retries
diff --git a/linux/advanced/python/main/3.9/etc/apt/apt.conf.d/97-allow-cert-exp b/linux/discontinued/python/main/3.9/etc/apt/apt.conf.d/97-allow-cert-exp
similarity index 100%
rename from linux/advanced/python/main/3.9/etc/apt/apt.conf.d/97-allow-cert-exp
rename to linux/discontinued/python/main/3.9/etc/apt/apt.conf.d/97-allow-cert-exp
diff --git a/linux/advanced/python/main/3.9/etc/apt/apt.conf.d/98-allow-unauthenticated b/linux/discontinued/python/main/3.9/etc/apt/apt.conf.d/98-allow-unauthenticated
similarity index 100%
rename from linux/advanced/python/main/3.9/etc/apt/apt.conf.d/98-allow-unauthenticated
rename to linux/discontinued/python/main/3.9/etc/apt/apt.conf.d/98-allow-unauthenticated
diff --git a/linux/advanced/python/main/3.9/etc/apt/apt.conf.d/99-no-check-valid-until b/linux/discontinued/python/main/3.9/etc/apt/apt.conf.d/99-no-check-valid-until
similarity index 100%
rename from linux/advanced/python/main/3.9/etc/apt/apt.conf.d/99-no-check-valid-until
rename to linux/discontinued/python/main/3.9/etc/apt/apt.conf.d/99-no-check-valid-until
diff --git a/linux/advanced/python/main/3.9/etc/apt/sources.list b/linux/discontinued/python/main/3.9/etc/apt/sources.list
similarity index 100%
rename from linux/advanced/python/main/3.9/etc/apt/sources.list
rename to linux/discontinued/python/main/3.9/etc/apt/sources.list
diff --git a/linux/advanced/python/main/3.9/etc/apt/sources.list.d/github_git-lfs.list b/linux/discontinued/python/main/3.9/etc/apt/sources.list.d/github_git-lfs.list
similarity index 100%
rename from linux/advanced/python/main/3.9/etc/apt/sources.list.d/github_git-lfs.list
rename to linux/discontinued/python/main/3.9/etc/apt/sources.list.d/github_git-lfs.list
diff --git a/linux/advanced/python/main/3.9/etc/apt/sources.list.d/launchpad_git-mainline.list b/linux/discontinued/python/main/3.9/etc/apt/sources.list.d/launchpad_git-mainline.list
similarity index 100%
rename from linux/advanced/python/main/3.9/etc/apt/sources.list.d/launchpad_git-mainline.list
rename to linux/discontinued/python/main/3.9/etc/apt/sources.list.d/launchpad_git-mainline.list
diff --git a/linux/advanced/python/main/3.9/etc/apt/sources.list.d/launchpad_git-stable.list b/linux/discontinued/python/main/3.9/etc/apt/sources.list.d/launchpad_git-stable.list
similarity index 100%
rename from linux/advanced/python/main/3.9/etc/apt/sources.list.d/launchpad_git-stable.list
rename to linux/discontinued/python/main/3.9/etc/apt/sources.list.d/launchpad_git-stable.list
diff --git a/linux/advanced/python/main/3.9/etc/locale.gen b/linux/discontinued/python/main/3.9/etc/locale.gen
similarity index 100%
rename from linux/advanced/python/main/3.9/etc/locale.gen
rename to linux/discontinued/python/main/3.9/etc/locale.gen
diff --git a/linux/advanced/python/main/3.9/etc/locale.gen.full b/linux/discontinued/python/main/3.9/etc/locale.gen.full
similarity index 100%
rename from linux/advanced/python/main/3.9/etc/locale.gen.full
rename to linux/discontinued/python/main/3.9/etc/locale.gen.full
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet5/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet5/Dockerfile
new file mode 100644
index 000000000..3173ec5e0
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet5/Dockerfile
@@ -0,0 +1,54 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+ARG DEBIAN_FRONTEND=noninteractive
+
+ENV DOTNET_CHANNEL=5.0
+ENV DOTNET_ROOT=${EMG_LOCAL_BASE_DIR}/dotnet/${DOTNET_CHANNEL}
+ARG DOTNET_TOOLS_DIR=${DOTNET_ROOT}/tools
+ARG DOTNET_INSTALL_DIR=${DOTNET_ROOT}
+ARG DOTNET_INSTALL_SCRIPT_URL=https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
+
+ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
+ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
+
+##################################################################
+# installing dotnet
+##################################################################
+ADD ${DOTNET_INSTALL_SCRIPT_URL} /tmp
+RUN mkdir -p ${DOTNET_ROOT} && \
+ chmod +x /tmp/dotnet-install.sh && \
+ /tmp/dotnet-install.sh --verbose --no-path --install-dir ${DOTNET_ROOT} --channel ${DOTNET_CHANNEL} --version latest
+
+##################################################################
+# Setup $PATH
+##################################################################
+ENV PATH=$PATH:${DOTNET_ROOT}:${DOTNET_TOOLS_DIR}
+
+##################################################################
+# Setup certs
+##################################################################
+RUN dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM && \
+ update-ca-certificates --fresh && \
+ dotnet dev-certs https --trust
+
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo $(dotnet --info) && \
+ echo $(dotnet --list-sdks) && \
+ echo $(dotnet --list-runtimes) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+ apt-get clean -y && \
+ apt-get autoclean -y && \
+ rm -rfv /var/lib/apt/lists/* && \
+ rm -rfv /tmp/* && \
+ rm -rfv /var/cache/apt/archives/*.deb
+
+RUN updatedb
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet5/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet5/Dockerfile.develop
new file mode 100644
index 000000000..512d25efb
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet5/Dockerfile.develop
@@ -0,0 +1,53 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+ARG DEBIAN_FRONTEND=noninteractive
+
+ENV DOTNET_CHANNEL=5.0
+ENV DOTNET_ROOT=${EMG_LOCAL_BASE_DIR}/dotnet/${DOTNET_CHANNEL}
+ARG DOTNET_TOOLS_DIR=${DOTNET_ROOT}/tools
+ARG DOTNET_INSTALL_DIR=${DOTNET_ROOT}
+ARG DOTNET_INSTALL_SCRIPT_URL=https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
+
+ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
+ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
+
+##################################################################
+# installing dotnet
+##################################################################
+ADD ${DOTNET_INSTALL_SCRIPT_URL} /tmp
+RUN mkdir -p ${DOTNET_ROOT} && \
+ chmod +x /tmp/dotnet-install.sh && \
+ /tmp/dotnet-install.sh --verbose --no-path --install-dir ${DOTNET_ROOT} --channel ${DOTNET_CHANNEL} --version latest
+
+##################################################################
+# Setup $PATH
+##################################################################
+ENV PATH=$PATH:${DOTNET_ROOT}:${DOTNET_TOOLS_DIR}
+
+##################################################################
+# Setup certs
+##################################################################
+RUN dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM && \
+ update-ca-certificates --fresh && \
+ dotnet dev-certs https --trust
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo $(dotnet --info) && \
+ echo $(dotnet --list-sdks) && \
+ echo $(dotnet --list-runtimes) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+ apt-get clean -y && \
+ apt-get autoclean -y && \
+ rm -rfv /var/lib/apt/lists/* && \
+ rm -rfv /tmp/* && \
+ rm -rfv /var/cache/apt/archives/*.deb
+
+RUN updatedb
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk11/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet5/Makefile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk11/Makefile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet5/Makefile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet5/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet5/docker-compose.yml
new file mode 100644
index 000000000..a9ee52205
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet5/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-dotnet5"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-dotnet5"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet6/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet6/Dockerfile
new file mode 100644
index 000000000..afa3d0367
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet6/Dockerfile
@@ -0,0 +1,54 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+ARG DEBIAN_FRONTEND=noninteractive
+
+ENV DOTNET_CHANNEL=6.0
+ENV DOTNET_ROOT=${EMG_LOCAL_BASE_DIR}/dotnet/${DOTNET_CHANNEL}
+ARG DOTNET_TOOLS_DIR=${DOTNET_ROOT}/tools
+ARG DOTNET_INSTALL_DIR=${DOTNET_ROOT}
+ARG DOTNET_INSTALL_SCRIPT_URL=https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
+
+ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
+ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
+
+##################################################################
+# installing dotnet
+##################################################################
+ADD ${DOTNET_INSTALL_SCRIPT_URL} /tmp
+RUN mkdir -p ${DOTNET_ROOT} && \
+ chmod +x /tmp/dotnet-install.sh && \
+ /tmp/dotnet-install.sh --verbose --no-path --install-dir ${DOTNET_ROOT} --channel ${DOTNET_CHANNEL} --version latest
+
+##################################################################
+# Setup $PATH
+##################################################################
+ENV PATH=$PATH:${DOTNET_ROOT}:${DOTNET_TOOLS_DIR}
+
+##################################################################
+# Setup certs
+##################################################################
+RUN dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM && \
+ update-ca-certificates --fresh && \
+ dotnet dev-certs https --trust
+
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo $(dotnet --info) && \
+ echo $(dotnet --list-sdks) && \
+ echo $(dotnet --list-runtimes) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+ apt-get clean -y && \
+ apt-get autoclean -y && \
+ rm -rfv /var/lib/apt/lists/* && \
+ rm -rfv /tmp/* && \
+ rm -rfv /var/cache/apt/archives/*.deb
+
+RUN updatedb
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet6/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet6/Dockerfile.develop
new file mode 100644
index 000000000..109df3aeb
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet6/Dockerfile.develop
@@ -0,0 +1,53 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+ARG DEBIAN_FRONTEND=noninteractive
+
+ENV DOTNET_CHANNEL=6.0
+ENV DOTNET_ROOT=${EMG_LOCAL_BASE_DIR}/dotnet/${DOTNET_CHANNEL}
+ARG DOTNET_TOOLS_DIR=${DOTNET_ROOT}/tools
+ARG DOTNET_INSTALL_DIR=${DOTNET_ROOT}
+ARG DOTNET_INSTALL_SCRIPT_URL=https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
+
+ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
+ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
+
+##################################################################
+# installing dotnet
+##################################################################
+ADD ${DOTNET_INSTALL_SCRIPT_URL} /tmp
+RUN mkdir -p ${DOTNET_ROOT} && \
+ chmod +x /tmp/dotnet-install.sh && \
+ /tmp/dotnet-install.sh --verbose --no-path --install-dir ${DOTNET_ROOT} --channel ${DOTNET_CHANNEL} --version latest
+
+##################################################################
+# Setup $PATH
+##################################################################
+ENV PATH=$PATH:${DOTNET_ROOT}:${DOTNET_TOOLS_DIR}
+
+##################################################################
+# Setup certs
+##################################################################
+RUN dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM && \
+ update-ca-certificates --fresh && \
+ dotnet dev-certs https --trust
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo $(dotnet --info) && \
+ echo $(dotnet --list-sdks) && \
+ echo $(dotnet --list-runtimes) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+ apt-get clean -y && \
+ apt-get autoclean -y && \
+ rm -rfv /var/lib/apt/lists/* && \
+ rm -rfv /tmp/* && \
+ rm -rfv /var/cache/apt/archives/*.deb
+
+RUN updatedb
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk16/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet6/Makefile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk16/Makefile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet6/Makefile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet6/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet6/docker-compose.yml
new file mode 100644
index 000000000..8b7917942
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet6/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-dotnet6"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-dotnet6"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet7/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet7/Dockerfile
new file mode 100644
index 000000000..237a6e78f
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet7/Dockerfile
@@ -0,0 +1,54 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+ARG DEBIAN_FRONTEND=noninteractive
+
+ENV DOTNET_CHANNEL=7.0
+ENV DOTNET_ROOT=${EMG_LOCAL_BASE_DIR}/dotnet/${DOTNET_CHANNEL}
+ARG DOTNET_TOOLS_DIR=${DOTNET_ROOT}/tools
+ARG DOTNET_INSTALL_DIR=${DOTNET_ROOT}
+ARG DOTNET_INSTALL_SCRIPT_URL=https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
+
+ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
+ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
+
+##################################################################
+# installing dotnet
+##################################################################
+ADD ${DOTNET_INSTALL_SCRIPT_URL} /tmp
+RUN mkdir -p ${DOTNET_ROOT} && \
+ chmod +x /tmp/dotnet-install.sh && \
+ /tmp/dotnet-install.sh --verbose --no-path --install-dir ${DOTNET_ROOT} --channel ${DOTNET_CHANNEL} --version latest
+
+##################################################################
+# Setup $PATH
+##################################################################
+ENV PATH=$PATH:${DOTNET_ROOT}:${DOTNET_TOOLS_DIR}
+
+##################################################################
+# Setup certs
+##################################################################
+RUN dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM && \
+ update-ca-certificates --fresh && \
+ dotnet dev-certs https --trust
+
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo $(dotnet --info) && \
+ echo $(dotnet --list-sdks) && \
+ echo $(dotnet --list-runtimes) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+ apt-get clean -y && \
+ apt-get autoclean -y && \
+ rm -rfv /var/lib/apt/lists/* && \
+ rm -rfv /tmp/* && \
+ rm -rfv /var/cache/apt/archives/*.deb
+
+RUN updatedb
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet7/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet7/Dockerfile.develop
new file mode 100644
index 000000000..a467c4429
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet7/Dockerfile.develop
@@ -0,0 +1,53 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+ARG DEBIAN_FRONTEND=noninteractive
+
+ENV DOTNET_CHANNEL=7.0
+ENV DOTNET_ROOT=${EMG_LOCAL_BASE_DIR}/dotnet/${DOTNET_CHANNEL}
+ARG DOTNET_TOOLS_DIR=${DOTNET_ROOT}/tools
+ARG DOTNET_INSTALL_DIR=${DOTNET_ROOT}
+ARG DOTNET_INSTALL_SCRIPT_URL=https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
+
+ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
+ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
+
+##################################################################
+# installing dotnet
+##################################################################
+ADD ${DOTNET_INSTALL_SCRIPT_URL} /tmp
+RUN mkdir -p ${DOTNET_ROOT} && \
+ chmod +x /tmp/dotnet-install.sh && \
+ /tmp/dotnet-install.sh --verbose --no-path --install-dir ${DOTNET_ROOT} --channel ${DOTNET_CHANNEL} --version latest
+
+##################################################################
+# Setup $PATH
+##################################################################
+ENV PATH=$PATH:${DOTNET_ROOT}:${DOTNET_TOOLS_DIR}
+
+##################################################################
+# Setup certs
+##################################################################
+RUN dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM && \
+ update-ca-certificates --fresh && \
+ dotnet dev-certs https --trust
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo $(dotnet --info) && \
+ echo $(dotnet --list-sdks) && \
+ echo $(dotnet --list-runtimes) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+ apt-get clean -y && \
+ apt-get autoclean -y && \
+ rm -rfv /var/lib/apt/lists/* && \
+ rm -rfv /tmp/* && \
+ rm -rfv /var/cache/apt/archives/*.deb
+
+RUN updatedb
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk17/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet7/Makefile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk17/Makefile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet7/Makefile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet7/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet7/docker-compose.yml
new file mode 100644
index 000000000..583fe5225
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet7/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-dotnet7"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-dotnet7"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet8/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet8/Dockerfile
new file mode 100644
index 000000000..1f7d9c1c1
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet8/Dockerfile
@@ -0,0 +1,54 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+ARG DEBIAN_FRONTEND=noninteractive
+
+ENV DOTNET_CHANNEL=8.0
+ENV DOTNET_ROOT=${EMG_LOCAL_BASE_DIR}/dotnet/${DOTNET_CHANNEL}
+ARG DOTNET_TOOLS_DIR=${DOTNET_ROOT}/tools
+ARG DOTNET_INSTALL_DIR=${DOTNET_ROOT}
+ARG DOTNET_INSTALL_SCRIPT_URL=https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
+
+ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
+ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
+
+##################################################################
+# installing dotnet
+##################################################################
+ADD ${DOTNET_INSTALL_SCRIPT_URL} /tmp
+RUN mkdir -p ${DOTNET_ROOT} && \
+ chmod +x /tmp/dotnet-install.sh && \
+ /tmp/dotnet-install.sh --verbose --no-path --install-dir ${DOTNET_ROOT} --channel ${DOTNET_CHANNEL} --version latest
+
+##################################################################
+# Setup $PATH
+##################################################################
+ENV PATH=$PATH:${DOTNET_ROOT}:${DOTNET_TOOLS_DIR}
+
+##################################################################
+# Setup certs
+##################################################################
+RUN dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM && \
+ update-ca-certificates --fresh && \
+ dotnet dev-certs https --trust
+
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo $(dotnet --info) && \
+ echo $(dotnet --list-sdks) && \
+ echo $(dotnet --list-runtimes) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+ apt-get clean -y && \
+ apt-get autoclean -y && \
+ rm -rfv /var/lib/apt/lists/* && \
+ rm -rfv /tmp/* && \
+ rm -rfv /var/cache/apt/archives/*.deb
+
+RUN updatedb
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet8/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet8/Dockerfile.develop
new file mode 100644
index 000000000..0e183727e
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet8/Dockerfile.develop
@@ -0,0 +1,53 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+ARG DEBIAN_FRONTEND=noninteractive
+
+ENV DOTNET_CHANNEL=8.0
+ENV DOTNET_ROOT=${EMG_LOCAL_BASE_DIR}/dotnet/${DOTNET_CHANNEL}
+ARG DOTNET_TOOLS_DIR=${DOTNET_ROOT}/tools
+ARG DOTNET_INSTALL_DIR=${DOTNET_ROOT}
+ARG DOTNET_INSTALL_SCRIPT_URL=https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
+
+ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
+ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
+
+##################################################################
+# installing dotnet
+##################################################################
+ADD ${DOTNET_INSTALL_SCRIPT_URL} /tmp
+RUN mkdir -p ${DOTNET_ROOT} && \
+ chmod +x /tmp/dotnet-install.sh && \
+ /tmp/dotnet-install.sh --verbose --no-path --install-dir ${DOTNET_ROOT} --channel ${DOTNET_CHANNEL} --version latest
+
+##################################################################
+# Setup $PATH
+##################################################################
+ENV PATH=$PATH:${DOTNET_ROOT}:${DOTNET_TOOLS_DIR}
+
+##################################################################
+# Setup certs
+##################################################################
+RUN dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM && \
+ update-ca-certificates --fresh && \
+ dotnet dev-certs https --trust
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo $(dotnet --info) && \
+ echo $(dotnet --list-sdks) && \
+ echo $(dotnet --list-runtimes) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+ apt-get clean -y && \
+ apt-get autoclean -y && \
+ rm -rfv /var/lib/apt/lists/* && \
+ rm -rfv /tmp/* && \
+ rm -rfv /var/cache/apt/archives/*.deb
+
+RUN updatedb
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk18/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet8/Makefile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk18/Makefile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet8/Makefile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet8/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet8/docker-compose.yml
new file mode 100644
index 000000000..38544bf4c
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet8/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-dotnet8"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-dotnet8"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet9/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet9/Dockerfile
new file mode 100644
index 000000000..62546004d
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet9/Dockerfile
@@ -0,0 +1,54 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+ARG DEBIAN_FRONTEND=noninteractive
+
+ENV DOTNET_CHANNEL=9.0
+ENV DOTNET_ROOT=${EMG_LOCAL_BASE_DIR}/dotnet/${DOTNET_CHANNEL}
+ARG DOTNET_TOOLS_DIR=${DOTNET_ROOT}/tools
+ARG DOTNET_INSTALL_DIR=${DOTNET_ROOT}
+ARG DOTNET_INSTALL_SCRIPT_URL=https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
+
+ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
+ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
+
+##################################################################
+# installing dotnet
+##################################################################
+ADD ${DOTNET_INSTALL_SCRIPT_URL} /tmp
+RUN mkdir -p ${DOTNET_ROOT} && \
+ chmod +x /tmp/dotnet-install.sh && \
+ /tmp/dotnet-install.sh --verbose --no-path --install-dir ${DOTNET_ROOT} --channel ${DOTNET_CHANNEL} --version latest
+
+##################################################################
+# Setup $PATH
+##################################################################
+ENV PATH=$PATH:${DOTNET_ROOT}:${DOTNET_TOOLS_DIR}
+
+##################################################################
+# Setup certs
+##################################################################
+RUN dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM && \
+ update-ca-certificates --fresh && \
+ dotnet dev-certs https --trust
+
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo $(dotnet --info) && \
+ echo $(dotnet --list-sdks) && \
+ echo $(dotnet --list-runtimes) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+ apt-get clean -y && \
+ apt-get autoclean -y && \
+ rm -rfv /var/lib/apt/lists/* && \
+ rm -rfv /tmp/* && \
+ rm -rfv /var/cache/apt/archives/*.deb
+
+RUN updatedb
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet9/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet9/Dockerfile.develop
new file mode 100644
index 000000000..865d0693f
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet9/Dockerfile.develop
@@ -0,0 +1,53 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+ARG DEBIAN_FRONTEND=noninteractive
+
+ENV DOTNET_CHANNEL=9.0
+ENV DOTNET_ROOT=${EMG_LOCAL_BASE_DIR}/dotnet/${DOTNET_CHANNEL}
+ARG DOTNET_TOOLS_DIR=${DOTNET_ROOT}/tools
+ARG DOTNET_INSTALL_DIR=${DOTNET_ROOT}
+ARG DOTNET_INSTALL_SCRIPT_URL=https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
+
+ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
+ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
+
+##################################################################
+# installing dotnet
+##################################################################
+ADD ${DOTNET_INSTALL_SCRIPT_URL} /tmp
+RUN mkdir -p ${DOTNET_ROOT} && \
+ chmod +x /tmp/dotnet-install.sh && \
+ /tmp/dotnet-install.sh --verbose --no-path --install-dir ${DOTNET_ROOT} --channel ${DOTNET_CHANNEL} --version latest
+
+##################################################################
+# Setup $PATH
+##################################################################
+ENV PATH=$PATH:${DOTNET_ROOT}:${DOTNET_TOOLS_DIR}
+
+##################################################################
+# Setup certs
+##################################################################
+RUN dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM && \
+ update-ca-certificates --fresh && \
+ dotnet dev-certs https --trust
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo $(dotnet --info) && \
+ echo $(dotnet --list-sdks) && \
+ echo $(dotnet --list-runtimes) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+ apt-get clean -y && \
+ apt-get autoclean -y && \
+ rm -rfv /var/lib/apt/lists/* && \
+ rm -rfv /tmp/* && \
+ rm -rfv /var/cache/apt/archives/*.deb
+
+RUN updatedb
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk19/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet9/Makefile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk19/Makefile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet9/Makefile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet9/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet9/docker-compose.yml
new file mode 100644
index 000000000..1600392c5
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/dotnet9/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-dotnet9"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-dotnet9"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/lts/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/lts/Dockerfile
new file mode 100644
index 000000000..fbb695310
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/lts/Dockerfile
@@ -0,0 +1,54 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+ARG DEBIAN_FRONTEND=noninteractive
+
+ENV DOTNET_CHANNEL=LTS
+ENV DOTNET_ROOT=${EMG_LOCAL_BASE_DIR}/dotnet/${DOTNET_CHANNEL}
+ARG DOTNET_TOOLS_DIR=${DOTNET_ROOT}/tools
+ARG DOTNET_INSTALL_DIR=${DOTNET_ROOT}
+ARG DOTNET_INSTALL_SCRIPT_URL=https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
+
+ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
+ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
+
+##################################################################
+# installing dotnet
+##################################################################
+ADD ${DOTNET_INSTALL_SCRIPT_URL} /tmp
+RUN mkdir -p ${DOTNET_ROOT} && \
+ chmod +x /tmp/dotnet-install.sh && \
+ /tmp/dotnet-install.sh --verbose --no-path --install-dir ${DOTNET_ROOT} --channel ${DOTNET_CHANNEL} --version latest
+
+##################################################################
+# Setup $PATH
+##################################################################
+ENV PATH=$PATH:${DOTNET_ROOT}:${DOTNET_TOOLS_DIR}
+
+##################################################################
+# Setup certs
+##################################################################
+RUN dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM && \
+ update-ca-certificates --fresh && \
+ dotnet dev-certs https --trust
+
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo $(dotnet --info) && \
+ echo $(dotnet --list-sdks) && \
+ echo $(dotnet --list-runtimes) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+ apt-get clean -y && \
+ apt-get autoclean -y && \
+ rm -rfv /var/lib/apt/lists/* && \
+ rm -rfv /tmp/* && \
+ rm -rfv /var/cache/apt/archives/*.deb
+
+RUN updatedb
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/lts/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/lts/Dockerfile.develop
new file mode 100644
index 000000000..201b64413
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/lts/Dockerfile.develop
@@ -0,0 +1,53 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+ARG DEBIAN_FRONTEND=noninteractive
+
+ENV DOTNET_CHANNEL=LTS
+ENV DOTNET_ROOT=${EMG_LOCAL_BASE_DIR}/dotnet/${DOTNET_CHANNEL}
+ARG DOTNET_TOOLS_DIR=${DOTNET_ROOT}/tools
+ARG DOTNET_INSTALL_DIR=${DOTNET_ROOT}
+ARG DOTNET_INSTALL_SCRIPT_URL=https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
+
+ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
+ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
+
+##################################################################
+# installing dotnet
+##################################################################
+ADD ${DOTNET_INSTALL_SCRIPT_URL} /tmp
+RUN mkdir -p ${DOTNET_ROOT} && \
+ chmod +x /tmp/dotnet-install.sh && \
+ /tmp/dotnet-install.sh --verbose --no-path --install-dir ${DOTNET_ROOT} --channel ${DOTNET_CHANNEL} --version latest
+
+##################################################################
+# Setup $PATH
+##################################################################
+ENV PATH=$PATH:${DOTNET_ROOT}:${DOTNET_TOOLS_DIR}
+
+##################################################################
+# Setup certs
+##################################################################
+RUN dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM && \
+ update-ca-certificates --fresh && \
+ dotnet dev-certs https --trust
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo $(dotnet --info) && \
+ echo $(dotnet --list-sdks) && \
+ echo $(dotnet --list-runtimes) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+ apt-get clean -y && \
+ apt-get autoclean -y && \
+ rm -rfv /var/lib/apt/lists/* && \
+ rm -rfv /tmp/* && \
+ rm -rfv /var/cache/apt/archives/*.deb
+
+RUN updatedb
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk20/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/lts/Makefile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk20/Makefile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/lts/Makefile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/lts/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/lts/docker-compose.yml
new file mode 100644
index 000000000..8ec53ebe4
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/lts/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-dotnet-lts"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-dotnet-lts"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/sts/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/sts/Dockerfile
new file mode 100644
index 000000000..0f9ce699b
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/sts/Dockerfile
@@ -0,0 +1,54 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+ARG DEBIAN_FRONTEND=noninteractive
+
+ENV DOTNET_CHANNEL=STS
+ENV DOTNET_ROOT=${EMG_LOCAL_BASE_DIR}/dotnet/${DOTNET_CHANNEL}
+ARG DOTNET_TOOLS_DIR=${DOTNET_ROOT}/tools
+ARG DOTNET_INSTALL_DIR=${DOTNET_ROOT}
+ARG DOTNET_INSTALL_SCRIPT_URL=https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
+
+ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
+ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
+
+##################################################################
+# installing dotnet
+##################################################################
+ADD ${DOTNET_INSTALL_SCRIPT_URL} /tmp
+RUN mkdir -p ${DOTNET_ROOT} && \
+ chmod +x /tmp/dotnet-install.sh && \
+ /tmp/dotnet-install.sh --verbose --no-path --install-dir ${DOTNET_ROOT} --channel ${DOTNET_CHANNEL} --version latest
+
+##################################################################
+# Setup $PATH
+##################################################################
+ENV PATH=$PATH:${DOTNET_ROOT}:${DOTNET_TOOLS_DIR}
+
+##################################################################
+# Setup certs
+##################################################################
+RUN dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM && \
+ update-ca-certificates --fresh && \
+ dotnet dev-certs https --trust
+
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo $(dotnet --info) && \
+ echo $(dotnet --list-sdks) && \
+ echo $(dotnet --list-runtimes) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+ apt-get clean -y && \
+ apt-get autoclean -y && \
+ rm -rfv /var/lib/apt/lists/* && \
+ rm -rfv /tmp/* && \
+ rm -rfv /var/cache/apt/archives/*.deb
+
+RUN updatedb
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/sts/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/sts/Dockerfile.develop
new file mode 100644
index 000000000..e4f4cd018
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/sts/Dockerfile.develop
@@ -0,0 +1,53 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+ARG DEBIAN_FRONTEND=noninteractive
+
+ENV DOTNET_CHANNEL=STS
+ENV DOTNET_ROOT=${EMG_LOCAL_BASE_DIR}/dotnet/${DOTNET_CHANNEL}
+ARG DOTNET_TOOLS_DIR=${DOTNET_ROOT}/tools
+ARG DOTNET_INSTALL_DIR=${DOTNET_ROOT}
+ARG DOTNET_INSTALL_SCRIPT_URL=https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
+
+ENV DOTNET_CLI_TELEMETRY_OPTOUT=true
+ENV DOTNET_SKIP_FIRST_TIME_EXPERIENCE=true
+
+##################################################################
+# installing dotnet
+##################################################################
+ADD ${DOTNET_INSTALL_SCRIPT_URL} /tmp
+RUN mkdir -p ${DOTNET_ROOT} && \
+ chmod +x /tmp/dotnet-install.sh && \
+ /tmp/dotnet-install.sh --verbose --no-path --install-dir ${DOTNET_ROOT} --channel ${DOTNET_CHANNEL} --version latest
+
+##################################################################
+# Setup $PATH
+##################################################################
+ENV PATH=$PATH:${DOTNET_ROOT}:${DOTNET_TOOLS_DIR}
+
+##################################################################
+# Setup certs
+##################################################################
+RUN dotnet dev-certs https -ep /usr/local/share/ca-certificates/aspnet/https.crt --format PEM && \
+ update-ca-certificates --fresh && \
+ dotnet dev-certs https --trust
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo $(dotnet --info) && \
+ echo $(dotnet --list-sdks) && \
+ echo $(dotnet --list-runtimes) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+ apt-get clean -y && \
+ apt-get autoclean -y && \
+ rm -rfv /var/lib/apt/lists/* && \
+ rm -rfv /tmp/* && \
+ rm -rfv /var/cache/apt/archives/*.deb
+
+RUN updatedb
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk21/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/sts/Makefile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk21/Makefile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/sts/Makefile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/sts/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/sts/docker-compose.yml
new file mode 100644
index 000000000..9b08d4313
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/dotnet/sts/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-dotnet-sts"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-dotnet-sts"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk11/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk11/Dockerfile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk11/Dockerfile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk11/Dockerfile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk11/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk11/Dockerfile.develop
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk11/Dockerfile.develop
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk11/Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk22/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk11/Makefile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk22/Makefile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk11/Makefile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk11/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk11/docker-compose.yml
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk11/docker-compose.yml
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk11/docker-compose.yml
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk16/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk16/Dockerfile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk16/Dockerfile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk16/Dockerfile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk16/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk16/Dockerfile.develop
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk16/Dockerfile.develop
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk16/Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk6/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk16/Makefile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk6/Makefile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk16/Makefile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk16/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk16/docker-compose.yml
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk16/docker-compose.yml
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk16/docker-compose.yml
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk17/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk17/Dockerfile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk17/Dockerfile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk17/Dockerfile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk17/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk17/Dockerfile.develop
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk17/Dockerfile.develop
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk17/Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk7/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk17/Makefile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk7/Makefile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk17/Makefile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk17/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk17/docker-compose.yml
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk17/docker-compose.yml
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk17/docker-compose.yml
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk18/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk18/Dockerfile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk18/Dockerfile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk18/Dockerfile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk18/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk18/Dockerfile.develop
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk18/Dockerfile.develop
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk18/Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk8/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk18/Makefile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk8/Makefile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk18/Makefile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk18/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk18/docker-compose.yml
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk18/docker-compose.yml
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk18/docker-compose.yml
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk19/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk19/Dockerfile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk19/Dockerfile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk19/Dockerfile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk19/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk19/Dockerfile.develop
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk19/Dockerfile.develop
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk19/Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk19/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk19/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk19/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk19/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk19/docker-compose.yml
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk19/docker-compose.yml
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk19/docker-compose.yml
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk20/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk20/Dockerfile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk20/Dockerfile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk20/Dockerfile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk20/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk20/Dockerfile.develop
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk20/Dockerfile.develop
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk20/Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk20/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk20/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk20/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk20/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk20/docker-compose.yml
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk20/docker-compose.yml
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk20/docker-compose.yml
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk21/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk21/Dockerfile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk21/Dockerfile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk21/Dockerfile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk21/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk21/Dockerfile.develop
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk21/Dockerfile.develop
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk21/Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk21/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk21/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk21/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk21/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk21/docker-compose.yml
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk21/docker-compose.yml
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk21/docker-compose.yml
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk22/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk22/Dockerfile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk22/Dockerfile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk22/Dockerfile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk22/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk22/Dockerfile.develop
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk22/Dockerfile.develop
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk22/Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk22/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk22/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk22/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk22/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk22/docker-compose.yml
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk22/docker-compose.yml
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk22/docker-compose.yml
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk6/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk6/Dockerfile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk6/Dockerfile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk6/Dockerfile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk6/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk6/Dockerfile.develop
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk6/Dockerfile.develop
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk6/Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk6/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk6/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk6/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk6/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk6/docker-compose.yml
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk6/docker-compose.yml
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk6/docker-compose.yml
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk7/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk7/Dockerfile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk7/Dockerfile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk7/Dockerfile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk7/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk7/Dockerfile.develop
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk7/Dockerfile.develop
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk7/Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk7/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk7/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk7/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk7/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk7/docker-compose.yml
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk7/docker-compose.yml
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk7/docker-compose.yml
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk8/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk8/Dockerfile
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk8/Dockerfile
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk8/Dockerfile
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk8/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk8/Dockerfile.develop
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk8/Dockerfile.develop
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk8/Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk8/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk8/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk8/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/jdk8/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk8/docker-compose.yml
similarity index 100%
rename from linux/ecosystem/epicmorg/debian/11-bullseye/jdk8/docker-compose.yml
rename to linux/ecosystem/epicmorg/debian/11-bullseye/jdk/jdk8/docker-compose.yml
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current/Dockerfile
new file mode 100644
index 000000000..cbc67f75f
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current/Dockerfile
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=22
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.3.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 22.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current/Dockerfile.develop
new file mode 100644
index 000000000..a56ca1d3b
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current/Dockerfile.develop
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=22
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.3.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 22.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current/docker-compose.yml
new file mode 100644
index 000000000..d72624519
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/current/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs-current"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs-current"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts/Dockerfile
new file mode 100644
index 000000000..d5a0dab33
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts/Dockerfile
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=20
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.15.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 20.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts/Dockerfile.develop
new file mode 100644
index 000000000..654d78251
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts/Dockerfile.develop
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=20
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.15.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 20.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts/docker-compose.yml
new file mode 100644
index 000000000..ef06ef263
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/lts/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs-lts"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs-lts"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12/Dockerfile
new file mode 100644
index 000000000..bca73665a
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12/Dockerfile
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=0
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.12.18
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 0.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+#RUN npm install -g pnpm yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+# echo yarn $(yarn --version) && \
+# echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12/Dockerfile.develop
new file mode 100644
index 000000000..20b5bbf7a
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12/Dockerfile.develop
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=0
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.12.18
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 0.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+#RUN npm install -g pnpm yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+# echo yarn $(yarn --version) && \
+# echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12/docker-compose.yml
new file mode 100644
index 000000000..bf6a592f7
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node0.12/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs0.12"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs0.12"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10/Dockerfile
new file mode 100644
index 000000000..7b76dea5f
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10/Dockerfile
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=10
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.24.1
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 10.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm@5 yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10/Dockerfile.develop
new file mode 100644
index 000000000..9c05fa019
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10/Dockerfile.develop
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=10
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.24.1
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 10.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm@5 yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10/docker-compose.yml
new file mode 100644
index 000000000..0663d553a
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node10/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs10"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs10"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11/Dockerfile
new file mode 100644
index 000000000..295db78b6
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11/Dockerfile
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=11
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.15.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 11.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm@5 yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11/Dockerfile.develop
new file mode 100644
index 000000000..6cc581719
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11/Dockerfile.develop
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=11
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.15.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 11.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm@5 yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11/docker-compose.yml
new file mode 100644
index 000000000..f155001bf
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node11/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs11"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs11"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12/Dockerfile
new file mode 100644
index 000000000..6c0cf19d3
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12/Dockerfile
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=12
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.22.9
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 12.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm@6 yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12/Dockerfile.develop
new file mode 100644
index 000000000..33071bee8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12/Dockerfile.develop
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=12
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.22.9
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 12.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm@6 yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12/docker-compose.yml
new file mode 100644
index 000000000..9b78d08ec
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node12/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs12"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs12"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13/Dockerfile
new file mode 100644
index 000000000..1935e2253
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13/Dockerfile
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=13
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.14.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 13.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm@6 yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13/Dockerfile.develop
new file mode 100644
index 000000000..1919db0c6
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13/Dockerfile.develop
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=13
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.14.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 13.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm@6 yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13/docker-compose.yml
new file mode 100644
index 000000000..566ea7593
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node13/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs13"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs13"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14/Dockerfile
new file mode 100644
index 000000000..2514ba4ce
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14/Dockerfile
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=14
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.21.3
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 14.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm@7 yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14/Dockerfile.develop
new file mode 100644
index 000000000..a372c087e
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14/Dockerfile.develop
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=14
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.21.3
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 14.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm@7 yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14/docker-compose.yml
new file mode 100644
index 000000000..3739847a4
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node14/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs14"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs14"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15/Dockerfile
new file mode 100644
index 000000000..6a8376f9d
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15/Dockerfile
@@ -0,0 +1,47 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=15
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.14.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 15.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+#RUN npm install -g pnpm yarn
+RUN npm install -g yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+# echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15/Dockerfile.develop
new file mode 100644
index 000000000..648efb49a
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15/Dockerfile.develop
@@ -0,0 +1,47 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=15
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.14.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 15.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+#RUN npm install -g pnpm yarn
+RUN npm install -g yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+# echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15/docker-compose.yml
new file mode 100644
index 000000000..bf7bb6aa0
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node15/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs15"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs15"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16/Dockerfile
new file mode 100644
index 000000000..34d19f8ab
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16/Dockerfile
@@ -0,0 +1,47 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=16
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.20.2
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 16.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+#RUN npm install -g pnpm yarn
+RUN npm install -g yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+# echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16/Dockerfile.develop
new file mode 100644
index 000000000..ef81af426
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16/Dockerfile.develop
@@ -0,0 +1,47 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=16
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.20.2
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 16.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+#RUN npm install -g pnpm yarn
+RUN npm install -g yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+# echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16/docker-compose.yml
new file mode 100644
index 000000000..11265b66a
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node16/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs16"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs16"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17/Dockerfile
new file mode 100644
index 000000000..28aa1d844
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17/Dockerfile
@@ -0,0 +1,47 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=17
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.9.1
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 17.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+#RUN npm install -g pnpm yarn
+RUN npm install -g yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+# echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17/Dockerfile.develop
new file mode 100644
index 000000000..d96782e82
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17/Dockerfile.develop
@@ -0,0 +1,47 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=17
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.9.1
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 17.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+#RUN npm install -g pnpm yarn
+RUN npm install -g yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+# echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17/docker-compose.yml
new file mode 100644
index 000000000..9767fcf92
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node17/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs17"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs17"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18/Dockerfile
new file mode 100644
index 000000000..bde0d37b4
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18/Dockerfile
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=18
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.20.3
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 18.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18/Dockerfile.develop
new file mode 100644
index 000000000..f622842ae
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18/Dockerfile.develop
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=18
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.20.3
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 18.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18/docker-compose.yml
new file mode 100644
index 000000000..08180963f
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node18/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs18"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs18"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19/Dockerfile
new file mode 100644
index 000000000..64067b72b
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19/Dockerfile
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=19
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.9.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 19.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19/Dockerfile.develop
new file mode 100644
index 000000000..760208433
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19/Dockerfile.develop
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=19
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.9.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 19.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19/docker-compose.yml
new file mode 100644
index 000000000..71556822d
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node19/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs19"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs19"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20/Dockerfile
new file mode 100644
index 000000000..d5a0dab33
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20/Dockerfile
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=20
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.15.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 20.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20/Dockerfile.develop
new file mode 100644
index 000000000..654d78251
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20/Dockerfile.develop
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=20
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.15.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 20.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20/docker-compose.yml
new file mode 100644
index 000000000..1b08d8f67
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node20/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs20"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs20"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21/Dockerfile
new file mode 100644
index 000000000..6e73bf39a
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21/Dockerfile
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=21
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.7.3
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 21.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21/Dockerfile.develop
new file mode 100644
index 000000000..fd558c700
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21/Dockerfile.develop
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=21
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.7.3
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 21.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21/docker-compose.yml
new file mode 100644
index 000000000..330846b05
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node21/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs21"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs21"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22/Dockerfile
new file mode 100644
index 000000000..cbc67f75f
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22/Dockerfile
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=22
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.3.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 22.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22/Dockerfile.develop
new file mode 100644
index 000000000..a56ca1d3b
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22/Dockerfile.develop
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=22
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.3.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 22.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22/docker-compose.yml
new file mode 100644
index 000000000..d17b69a68
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node22/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs22"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs22"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4/Dockerfile
new file mode 100644
index 000000000..3acc1e6fb
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4/Dockerfile
@@ -0,0 +1,47 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=4
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.9.1
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 4.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+#RUN npm install -g pnpm yarn
+RUN npm install -g pnpm@2
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+# echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4/Dockerfile.develop
new file mode 100644
index 000000000..b6411d2b1
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4/Dockerfile.develop
@@ -0,0 +1,47 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=4
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.9.1
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 4.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+#RUN npm install -g pnpm yarn
+RUN npm install -g pnpm@2
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+# echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4/docker-compose.yml
new file mode 100644
index 000000000..47803de7b
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node4/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs4"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs4"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5/Dockerfile
new file mode 100644
index 000000000..4fc72d55f
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5/Dockerfile
@@ -0,0 +1,47 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=5
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.9.1
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 5.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+#RUN npm install -g pnpm yarn
+RUN npm install -g pnpm@2
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+# echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5/Dockerfile.develop
new file mode 100644
index 000000000..657a446fd
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5/Dockerfile.develop
@@ -0,0 +1,47 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=5
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.9.1
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 5.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+#RUN npm install -g pnpm yarn
+RUN npm install -g pnpm@2
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+# echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5/docker-compose.yml
new file mode 100644
index 000000000..60a16bc93
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node5/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs5"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs5"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6/Dockerfile
new file mode 100644
index 000000000..186417346
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6/Dockerfile
@@ -0,0 +1,47 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=6
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.17.1
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 6.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+#RUN npm install -g pnpm yarn
+RUN npm install -g pnpm@2
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+# echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6/Dockerfile.develop
new file mode 100644
index 000000000..0c6ae6eb5
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6/Dockerfile.develop
@@ -0,0 +1,47 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=6
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.17.1
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 6.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+#RUN npm install -g pnpm yarn
+RUN npm install -g pnpm@2
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+# echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6/docker-compose.yml
new file mode 100644
index 000000000..9fcc0dc7c
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node6/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs6"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs6"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7/Dockerfile
new file mode 100644
index 000000000..41ff5d6c3
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7/Dockerfile
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=7
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.10.1
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 7.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm@3 yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7/Dockerfile.develop
new file mode 100644
index 000000000..8590cb520
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7/Dockerfile.develop
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=7
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.10.1
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 7.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm@3 yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7/docker-compose.yml
new file mode 100644
index 000000000..b0c4e3b8f
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node7/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs7"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs7"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8/Dockerfile
new file mode 100644
index 000000000..e94444389
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8/Dockerfile
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=8
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.17.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 8.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm@3 yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8/Dockerfile.develop
new file mode 100644
index 000000000..c0deffcab
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8/Dockerfile.develop
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=8
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.17.0
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 8.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm@3 yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8/docker-compose.yml
new file mode 100644
index 000000000..8f893a534
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node8/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs8"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs8"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node9/Dockerfile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node9/Dockerfile
new file mode 100644
index 000000000..4af67a0c3
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node9/Dockerfile
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=9
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.11.2
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 9.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm@3 yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node9/Dockerfile.develop b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node9/Dockerfile.develop
new file mode 100644
index 000000000..3e2b09383
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node9/Dockerfile.develop
@@ -0,0 +1,46 @@
+FROM epicmorg/debian:bookworm-develop
+LABEL maintainer="EpicMorg DevTeam, developer@epicm.org"
+
+ARG DEBIAN_FRONTEND=noninteractive
+
+ARG K_NODE_MAJOR_VERSION=9
+ARG K_NODE_VERSION=${K_NODE_MAJOR_VERSION}.11.2
+ARG K_NODE_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-linux-x64.tar.gz
+ARG K_NODE_HEADERS_URL=https://nodejs.org/dist/v${K_NODE_VERSION}/node-v${K_NODE_VERSION}-headers.tar.gz
+
+##################################################################
+# Node.js 9.x
+##################################################################
+RUN groupadd -g 1337 node && \
+ useradd -u 1337 --gid node --shell /bin/bash --create-home node
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/ && \
+ rm -rfv /usr/local/CHANGELOG.md /usr/local/LICENSE /usr/local/README.md
+
+RUN curl --user-agent "Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Firefox/81.0" --location ${K_NODE_HEADERS_URL}?$(date +%s) \
+ --header 'Cache-Control: no-cache, no-store' \
+ --header 'Pragma: no-cache' | tar xzv --strip-components=1 --directory /usr/local/
+
+RUN npm install -g pnpm@3 yarn
+
+##################################################################
+# Version after install
+##################################################################
+RUN echo "=============================================" && \
+ echo node $(node --version) && \
+ echo npm $(npm --version) && \
+ echo yarn $(yarn --version) && \
+ echo pnpm $(pnpm --version) && \
+ echo "============================================="
+
+##################################################################
+# cleanup
+##################################################################
+RUN echo "clean up" && \
+apt-get clean -y && \
+apt-get autoclean -y && \
+rm -rfv /var/lib/apt/lists/* && \
+rm -rfv /var/cache/apt/archives/*.deb && \
+rm -rfv /tmp/*
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node9/Makefile b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node9/Makefile
new file mode 100644
index 000000000..06e855b50
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node9/Makefile
@@ -0,0 +1,36 @@
+PIP_BREAK_SYSTEM_PACKAGES=1
+
+all: app
+
+app:
+ make build
+ make deploy
+ make clean
+
+build:
+ kaniko-wrapper --version
+
+dry:
+ make dry-run
+
+test:
+ make dry-run
+
+dry-run:
+ kaniko-wrapper --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug --dry-run
+
+build-compose:
+ docker-compose build --compress --parallel --progress plain
+
+deploy:
+ kaniko-wrapper --deploy --kaniko-image gcr.io/kaniko-project/executor:v1.23.2-debug
+
+deploy-compose:
+ docker-compose push
+
+clean:
+ docker container prune -f
+ docker image prune -f
+ docker network prune -f
+ docker volume prune -f
+ docker system prune -af
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node9/README.md b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node9/README.md
new file mode 100644
index 000000000..b53fe01e8
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node9/README.md
@@ -0,0 +1,93 @@
+## TeamCity Minimal Build Agent
+
+[
](https://confluence.jetbrains.com/display/ALL/JetBrains+on+GitHub)
+
+This is an official [JetBrains TeamCity](https://www.jetbrains.com/teamcity/) minimal build agent image.
+
+
More details about tags and components are [here](https://github.com/JetBrains/teamcity-docker-images/blob/master/generated/teamcity-minimal-agent.md).
+
+The [TeamCity build agent](https://www.jetbrains.com/help/teamcity/build-agent.html) connects to the TeamCity server and spawns the actual build processes.
+You can use the ```jetbrains/teamcity-server``` image to run a TeamCity server.
+
+This minimal image adds just a TeamCity agent without any tools like VCS clients, etc. It is suitable for simple builds and can serve as a base for your custom images. For Java or .NET development we recommend using the default build agent image [jetbrains/teamcity-agent](https://hub.docker.com/r/jetbrains/teamcity-agent/).
+
+## How to Use This Image
+
+Pull the TeamCity minimal image from the Docker Hub Repository:
+
+```
+jetbrains/teamcity-minimal-agent
+```
+
+and use the following command to start a container with TeamCity agent running inside
+a Linux container:
+
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ jetbrains/teamcity-minimal-agent
+```
+
+or a Windows container:
+```
+docker run -it -e SERVER_URL=""
+ -v :C:/BuildAgent/conf
+ jetbrains/teamcity-minimal-agent
+```
+where `` is the full URL for TeamCity server, accessible by the agent. Note that `localhost` will not generally not work as it will refer to the `localhost` inside the container.
+`` is the host machine directory to serve as the TeamCity agent config directory. We recommend providing this binding in order to persist the agent configuration, e.g. authorization on the server. Note that you should map a different folder for every new agent you create.
+
+Since version 2020.1, TeamCity agent Docker images __run under a non-root user__. Refer to our [upgrade notes](https://www.jetbrains.com/help/teamcity/upgrade-notes.html#UpgradeNotes-AgentDockerimagesrunundernon-rootuser) for information on possible affected use cases.
+
+When you run the agent for the first time, you should authorize it via the TeamCity server UI: go to the **Unauthorized Agents** page in your browser. See [more details](https://www.jetbrains.com/help/teamcity/build-agent.html).
+
+All information about agent authorization is stored in agent's configuration folder. If you stop the container with the agent and then start a new one with the same config folder, the agent's name and authorization state will be preserved.
+
+TeamCity agent does not need manual upgrade: it will upgrade itself automatically on connecting to an upgraded server.
+
+### Agent Image Environment Variables
+
+- **SERVER_URL** - URL of the TeamCity server agent will connect to
+- **AGENT_NAME** - (optional) Name of the agent in TeamCity UI, autogenerated if omitted
+- **AGENT_TOKEN** - (optional) Agent authorization token, if unset, the agent should be [authorized](https://www.jetbrains.com/help/teamcity/build-agent.html#BuildAgent-BuildAgentStatus) via TeamCity UI.
+- **OWN_ADDRESS** - (optional, linux only) IP address build agent binds to, autodetected
+- **OWN_PORT** - (optional, linux only) Port build agent binds to, 9090 by default
+
+### Windows Containers Limitations
+
+The details on the known problems in Windows containers are available in the [TeamCity documentation](https://www.jetbrains.com/help/teamcity/known-issues.html#KnownIssues-WindowsDockerContainers).
+
+## Customization
+
+You can customize the image via the usual Docker procedure:
+
+1. Run the image
+```
+docker run -it -e SERVER_URL="" \
+ -v :/data/teamcity_agent/conf \
+ --name="my-customized-agent" \
+ jetbrains/teamcity-minimal-agent \
+```
+2. Enter the container
+```
+docker exec -it my-customized-agent bash
+```
+
+3. Change whatever you need
+4. Exit and [create a new image](https://docs.docker.com/engine/reference/commandline/commit/) from the container
+```
+docker commit my-customized-agent
+```
+
+## License
+
+The image is available under the [TeamCity license](https://www.jetbrains.com/teamcity/buy/license.html).
+TeamCity is free for perpetual use with the limitation of 100 build configurations (jobs) and 3 agents. [Licensing details](https://www.jetbrains.com/help/teamcity/licensing-policy.html).
+
+## Feedback
+
+Report issues of suggestions to the official TeamCity [issue tracker](https://youtrack.jetbrains.com/issues/TW).
+
+## Other TeamCity Images
+* [TeamCity Server](https://hub.docker.com/r/jetbrains/teamcity-server/)
+* [Build Agent](https://hub.docker.com/r/jetbrains/teamcity-agent/)
diff --git a/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node9/docker-compose.yml b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node9/docker-compose.yml
new file mode 100644
index 000000000..b1794482e
--- /dev/null
+++ b/linux/ecosystem/epicmorg/debian/11-bullseye/nodejs/node9/docker-compose.yml
@@ -0,0 +1,11 @@
+#version: '3'
+services:
+ app:
+ image: "epicmorg/debian:bookworm-nodejs9"
+ build:
+ context: .
+ app-develop:
+ image: "epicmorg/debian:bookworm-develop-nodejs9"
+ build:
+ context: .
+ dockerfile: ./Dockerfile.develop