diff --git a/.forgejo/workflows/deploy-rs.yml b/.forgejo/workflows/deploy-rs.yml
index 9f47ff60..9389bd5e 100644
--- a/.forgejo/workflows/deploy-rs.yml
+++ b/.forgejo/workflows/deploy-rs.yml
@@ -10,7 +10,7 @@ on:
 
 jobs:
   deploy-rs:
-    runs-on: headscale-runner
+    runs-on: forgejo
     container:
       image: git.sysctl.io/albert/actions-container-images/headscale-runner:latest
       options: --mount type=bind,src=/dev/net/tun,dst=/dev/net/tun --privileged
diff --git a/.forgejo/workflows/deploy.yml b/.forgejo/workflows/deploy.yml
index d70ce195..254c45d5 100644
--- a/.forgejo/workflows/deploy.yml
+++ b/.forgejo/workflows/deploy.yml
@@ -1,26 +1,25 @@
----
-iname: Deploy Systems
-on:
-  workflow_dispatch:
+name: Deploy Systems
+on: [workflow_dispatch]
 
 jobs:
   deploy:
     runs-on: nix
     steps:
-      - name: Checkout repository
-        uses: https://code.forgejo.org/actions/checkout@v4
+      - uses: https://git.madhouse-project.org/actions/nix/setup@v2
+        with:
+          nix_path: nixpkgs=flake:nixpkgs
 
-      - name: Validate Flake
-        run: nix flake check
+      - uses: https://git.madhouse-project.org/actions/nix/build@v2
+        with:
+          flake: .
+          targets: |
+            nixosConfigurations
 
-      - name: Build Systems
-        run: nix build .#nixosConfigurations --show-trace
-
-      - name: Deploy with deploy-rs
-        run: nix run .#deploy -- -- --confirm
-        env:
-          DEPLOY_SSH_USER: ${{ secrets.SSH_USER }}
-          DEPLOY_SSH_KEY: ${{ secrets.SSH_PRIVATE_KEY }}
+      - uses: https://git.madhouse-project.org/actions/nix/deploy-rs@v2
+        with:
+          ssh_user: ${{ secrets.SSH_USER }}
+          ssh_key: ${{ secrets.SSH_PRIVATE_KEY }}
+          confirm: true
 
       - uses: https://git.sysctl.io/actions/gotify-action@master
         if: always()
@@ -32,3 +31,4 @@ jobs:
           notification_message: |
             Status: ${{ job.status }}
             Commit: ${{ github.sha }}
+
diff --git a/nixos/common/services/forgejo-runner.nix b/nixos/common/services/forgejo-runner.nix
index dfd5f396..51f932e5 100644
--- a/nixos/common/services/forgejo-runner.nix
+++ b/nixos/common/services/forgejo-runner.nix
@@ -5,7 +5,7 @@
     owner = "root";
     mode = "0444"; # gitea-actions-runner uses "DynamicUser"
     sopsFile = ../../../secrets/secrets.yaml;
-    restartUnits = [ "gitea-actions-runner-${hostname}.service" ];
+    restartUnits = [ "gitea-actions-runner-default.service" ];
   };
 
   services.gitea-actions-runner = {
@@ -14,34 +14,51 @@
       enable = true;
       name = "${hostname}";
       labels = [ 
-        "nix:host://self-hsoted"
-        "${hostname}:host://self-hosted"
-        "self-hosted:host://self-hosted" 
-        "alpine:docker://alpine:edge"
-        "ubuntu:docker://ubuntu:latest"
-        "headscale-runner:docker://git.sysctl.io/albert/actions-container-images/headscale-runner:latest"
-      ];
+        # Host runners (direct execution)
+        "nix:host"                   # Simplified host label
+        "${hostname}:host"           # Host identifier
+        "self-hosted:host"           # Standard host designation
+        # Docker wildcards 
+        "docker:docker:*:*"
+        "forgejo:docker:git.sysctl.io/**/*:*"
+      ];      
       url = "https://git.sysctl.io";
       tokenFile = /run/secrets/services/forgejo_token;
-      hostPackages = with pkgs; [
-        nodejs_20 # Explicitly use Node.js 20.x
-        deploy-rs
-        coreutils
-        git
-        gnutar
-        gzip
-      ];
+      hostPackages = with pkgs; [ nix deploy-rs nodejs coreutils git gnutar gzip ];
+      settings = {
+        valid_volumes = [
+          "/run/podman/podman.sock:/run/podman/podman.sock:rw" # Docker socket
+          "/dev/net/tun:/dev/net/tun:rw"  # Tunnel device mapping
+          "/nix/store:/nix/store:ro"      # Standard Nix requirement
+        ];
+      container_security = {
+        allow-privileged = false;
+          allow-host-namespace = false;
+        };
+        docker-opts = [
+          "--cap-drop=ALL"  # Drop all caps first
+          "--security-opt=no-new-privileges"
+          "--cap-add=NET_ADMIN"            # Required for TUN device access
+        ];
+      };
     };
   };
-  
+
   systemd.services.gitea-actions-runner-default = {
     serviceConfig = {
-      CacheDirectory = "gitea-actions-runner-default";  # Add this line
-      StateDirectory = "gitea-actions-runner-default";
-      RuntimeDirectory = "gitea-actions-runner-default";
+      ReadWritePaths = [
+        "/dev/net/tun"
+        "/var/lib/gitea-runner"
+      ];
+      BindReadOnlyPaths = [
+        "/nix/store"
+      ];
+      DeviceAllow = [
+        "char-10-200 rw"              # Allow TUN device access
+      ];
     };
-    preStop = ''
-      rm -rf /var/lib/gitea-runner/default/.cache/act/*
-    ''; # Cache cleanup
-  };
+    unitConfig = {
+      RequiresMountsFor = "/dev/net/tun";
+    };
+  }; 
 }