diff --git a/.gitea/workflows/python-container.yml b/.gitea/workflows/python-container.yml
index e90aef4..97c2844 100644
--- a/.gitea/workflows/python-container.yml
+++ b/.gitea/workflows/python-container.yml
@@ -10,13 +10,72 @@ on:
     paths-ignore: ['README.md', '.gitignore', 'LICENSE', 'CONVENTIONS.md', 'ruff.toml']
 
 jobs:
-  Package-Container:
-    uses: jmaa/workflows/.gitea/workflows/container.yaml@v6.21
-    with:
-      REGISTRY_DOMAIN: gitfub.space
-      REGISTRY_ORGANIZATION: jmaa
-    secrets:
-      DOCKER_USERNAME: ${{ secrets.PIPY_REPO_USER }}
-      DOCKER_PASSWORD: ${{ secrets.PIPY_REPO_PASS }}
-      PIPELINE_WORKER_SSH_KEY: ${{ secrets.PIPELINE_WORKER_SSH_KEY }}
-      PIPELINE_WORKER_KNOWN_HOSTS: ${{ secrets.PIPELINE_WORKER_KNOWN_HOSTS }}
+  release-image:
+    runs-on: ubuntu-latest
+    container:
+      image: catthehacker/ubuntu:act-latest
+    env:
+      RUNNER_TOOL_CACHE: /toolcache
+    steps:
+      - run: apt-get update
+      - name: Checkout
+        uses: actions/checkout@v3
+      - name: Setting up SSH
+        if: ${{ hashFiles('requirements_private.txt') != '' }}
+        uses: https://github.com/shimataro/ssh-key-action@v2.5.1
+        with:
+          key: ${{ secrets.PIPELINE_WORKER_SSH_KEY }}
+          name: id_rsa
+          known_hosts: ${{ secrets.PIPELINE_WORKER_KNOWN_HOSTS }}
+          config: |
+            Host gitfub
+              HostName gitfub.space
+              User ${{ secrets.PIPY_REPO_USER }}
+
+      - name: Download private dependencies
+        if: ${{ hashFiles('requirements_private.txt') != '' }}
+        shell: bash
+        run: |
+          set -e
+          mkdir -p private_deps
+          cd private_deps
+          while IFS=$" " read -r -a dependency_spec
+          do
+            if test -n "${dependency_spec[1]}"
+            then
+              git clone -v --single-branch --no-tags "${dependency_spec[0]}" --branch "${dependency_spec[1]}"
+            else
+              git clone -v --single-branch --no-tags "${dependency_spec[0]}"
+            fi
+          done < ../requirements_private.txt
+
+      - name: Set up QEMU
+        uses: docker/setup-qemu-action@v2
+
+      - name: Set up Docker BuildX
+        uses: docker/setup-buildx-action@v2
+
+      - name: Login to Docker Registry
+        uses: docker/login-action@v2
+        with:
+          registry: gitfub.space
+          username: ${{ secrets.PIPY_REPO_USER }}
+          password: ${{ secrets.PIPY_REPO_PASS }}
+
+      - name: Get Meta
+        id: meta
+        run: |
+          echo REPO_NAME=$(echo ${GITHUB_REPOSITORY} | awk -F"/" '{print $2}') >> $GITHUB_OUTPUT
+          echo REPO_VERSION=$(git describe --tags --always | sed 's/^v//') >> $GITHUB_OUTPUT
+
+      - name: Build and push
+        uses: docker/build-push-action@v4
+        with:
+          context: .
+          file: ./Dockerfile
+          platforms: |
+            linux/amd64
+          push: true
+          tags: |
+            gitfub.space/jmaa/${{ steps.meta.outputs.REPO_NAME }}:${{ steps.meta.outputs.REPO_VERSION }}
+            gitfub.space/jmaa/${{ steps.meta.outputs.REPO_NAME }}:latest
diff --git a/.gitea/workflows/python-package.yml b/.gitea/workflows/python-package.yml
index 0e41ec0..69f3d9e 100644
--- a/.gitea/workflows/python-package.yml
+++ b/.gitea/workflows/python-package.yml
@@ -10,11 +10,24 @@ on:
     paths-ignore: ['README.md', '.gitignore', 'LICENSE', 'CONVENTIONS.md', 'ruff.toml']
 
 jobs:
-  Package:
-    uses: jmaa/workflows/.gitea/workflows/python-package.yaml@v6.21
-    with:
-      REGISTRY_DOMAIN: gitfub.space
-      REGISTRY_ORGANIZATION: jmaa
-    secrets:
-      PIPY_REPO_USER: ${{ secrets.PIPY_REPO_USER }}
-      PIPY_REPO_PASS: ${{ secrets.PIPY_REPO_PASS }}
+  Package-Python-And-Publish:
+    runs-on: ubuntu-latest
+    container:
+      image: node:21-bookworm
+    steps:
+      - name: Setting up Python ${{ env.PYTHON_VERSION }} for ${{runner.arch}} ${{runner.os}}
+        run: |
+           apt-get update
+           apt-get install -y python3 python3-pip
+      - name: Check out repository code
+        if: success()
+        uses: actions/checkout@v3
+      - name: Installing Python Dependencies
+        if: success()
+        run: python3 -m pip install --upgrade pip setuptools wheel build twine pytest --break-system-packages
+      - name: Build
+        if: success()
+        run: python3 -m build
+      - name: Publish
+        if: success()
+        run: python3 -m twine upload --repository-url "https://gitfub.space/api/packages/jmaa/pypi" -u ${{ secrets.PIPY_REPO_USER }} -p ${{ secrets.PIPY_REPO_PASS }} dist/*
diff --git a/setup.py b/setup.py
index d569981..b3bcf6c 100644
--- a/setup.py
+++ b/setup.py
@@ -28,7 +28,6 @@ Once run, it exposes the following endpoints:
 PACKAGE_DESCRIPTION_SHORT = """
 Small alternative frontend for tracking packages and parcels.""".strip()
 
-
 def parse_version_file(text: str) -> str:
     text = re.sub('^#.*', '', text, flags=re.MULTILINE)
     match = re.match(r'^\s*__version__\s*=\s*(["\'])([\d\.]+)\1$', text)
@@ -37,7 +36,6 @@ def parse_version_file(text: str) -> str:
         raise Exception(msg)
     return match.group(2)
 
-
 with open(PACKAGE_NAME + '/_version.py') as f:
     version = parse_version_file(f.read())