diff --git a/configurations/cluster/modules/caddy/default.nix b/configurations/cluster/modules/caddy/default.nix
index b62877a9..4e4f153c 100644
--- a/configurations/cluster/modules/caddy/default.nix
+++ b/configurations/cluster/modules/caddy/default.nix
@@ -148,6 +148,12 @@ in {
               radarr.reverseProxy = "${nosIP}:7878";
               sonarr.reverseProxy = "${nosIP}:8989";
 
+              jdownloader2 = {
+                subDirName = "jd2";
+                experimental = true;
+                reverseProxy = "${nosIP}:5800";
+              };
+
               qbittorent = {
                 subDirName = "qbt";
                 experimental = true;
diff --git a/configurations/nos/modules/comics/default.nix b/configurations/nos/modules/comics/default.nix
index 1514f59a..fdbb6e1a 100644
--- a/configurations/nos/modules/comics/default.nix
+++ b/configurations/nos/modules/comics/default.nix
@@ -1,5 +1,6 @@
 {...}: {
   imports = [
+    ./jdownloader2
     ./komga
   ];
 }
diff --git a/configurations/nos/modules/comics/jdownloader2/default.nix b/configurations/nos/modules/comics/jdownloader2/default.nix
new file mode 100644
index 00000000..0864bf04
--- /dev/null
+++ b/configurations/nos/modules/comics/jdownloader2/default.nix
@@ -0,0 +1,27 @@
+{
+  config,
+  mainUser,
+  pkgs,
+  ...
+}: {
+  virtualisation.docker.compose."jdownloader2".services."jdownloader2" = {
+    image = pkgs.callPackage ./images/jdownloader2.nix pkgs;
+    restart = "always";
+
+    environment = {
+      USER_ID = toString config.users.users.${mainUser}.uid;
+      GROUP_ID = toString config.users.users.${mainUser}.uid;
+      KEEP_APP_RUNNING = 1;
+      TZ = "America/New_York";
+    };
+
+    ports = [
+      "5800:5800"
+    ];
+
+    volumes = [
+      "/var/lib/jdownloader2:/config:rw"
+      "/data/downloads/comics:/output:rw"
+    ];
+  };
+}
diff --git a/configurations/nos/modules/comics/jdownloader2/images/jdownloader2.nix b/configurations/nos/modules/comics/jdownloader2/images/jdownloader2.nix
new file mode 100644
index 00000000..019af3d7
--- /dev/null
+++ b/configurations/nos/modules/comics/jdownloader2/images/jdownloader2.nix
@@ -0,0 +1,8 @@
+pkgs:
+pkgs.dockerTools.pullImage rec {
+  imageName = "docker.io/jlesage/jdownloader-2";
+  imageDigest = "sha256:a597e25a5be386cac5519f2fc705eadb786727f9f0f2c7440fb5585efa41973f";
+  hash = "sha256-kZRMR1cv5jad+BQkxgvuKIcVod42neszkU9/RPh7BNY=";
+  finalImageName = imageName;
+  finalImageTag = "latest";
+}