diff --git a/devices/cluster/modules/caddy.nix b/devices/cluster/modules/caddy.nix
index 0dcf56e0..fa985017 100644
--- a/devices/cluster/modules/caddy.nix
+++ b/devices/cluster/modules/caddy.nix
@@ -53,8 +53,8 @@ in {
           jelly.reverseProxy = "${jellyIP}:80";
 
           # Resume builder
-          resume.reverseProxy = "${dockerIP}:3060";
-          resauth.reverseProxy = "${dockerIP}:3100";
+          resume.reverseProxy = "${servivi}:3060";
+          resauth.reverseProxy = "${servivi}:3100";
 
           # Nextcloud & Co
           office.reverseProxy = "http://${servivi}:8055";
diff --git a/devices/nas/modules/arion/default.nix b/devices/nas/modules/arion/default.nix
index 0742f7bf..7b53b817 100644
--- a/devices/nas/modules/arion/default.nix
+++ b/devices/nas/modules/arion/default.nix
@@ -11,6 +11,7 @@ in {
     ./immich/compose.nix
     ./music/jbots/compose.nix
     ./nextcloud/compose.nix
+    ./resume/compose.nix
   ];
 
   arion = {
diff --git a/devices/nas/modules/arion/resume/compose.nix b/devices/nas/modules/arion/resume/compose.nix
new file mode 100644
index 00000000..cbd24f53
--- /dev/null
+++ b/devices/nas/modules/arion/resume/compose.nix
@@ -0,0 +1,51 @@
+{config, ...}: let
+  inherit (config.sops) secrets;
+  inherit (config.arion) rwDataDir;
+
+  rwPath = rwDataDir + "/resume";
+in {
+  arion.projects."resume" = {
+    "postgres" = {
+      image = ./images/postgres.nix;
+      restart = "always";
+
+      ports = ["5432:5432"];
+
+      volumes = [
+        "${rwPath}/db:/var/lib/postgresql/data"
+      ];
+
+      env_file = [secrets.resume.path];
+    };
+
+    "server" = {
+      image = ./images/resume-server.nix;
+      restart = "always";
+
+      ports = ["3100:3100"];
+
+      depends_on = ["postgres"];
+
+      env_file = [secrets.resume.path];
+
+      environment = {
+        PUBLIC_URL = "https://resume.nelim.org";
+        PUBLIC_SERVER_URL = "https://resauth.nelim.org";
+      };
+    };
+
+    "client" = {
+      image = ./images/resume-client.nix;
+      restart = "always";
+
+      ports = ["3060:3000"];
+
+      depends_on = ["server"];
+
+      environment = {
+        PUBLIC_URL = "https://resume.nelim.org";
+        PUBLIC_SERVER_URL = "https://resauth.nelim.org";
+      };
+    };
+  };
+}
diff --git a/devices/nas/modules/arion/resume/images/postgres.nix b/devices/nas/modules/arion/resume/images/postgres.nix
new file mode 100644
index 00000000..421a0f65
--- /dev/null
+++ b/devices/nas/modules/arion/resume/images/postgres.nix
@@ -0,0 +1,8 @@
+pkgs:
+pkgs.dockerTools.pullImage {
+  imageName = "postgres";
+  imageDigest = "sha256:d00564ed4c14d702b7b4465dad4f4621c2eb985a21758b27d20c673b9fc3ebd4";
+  sha256 = "17d2fcmb47ijrc96y55fihjjb2dsj9jjhjn4kyacdi5g4x5aanz7";
+  finalImageName = "postgres";
+  finalImageTag = "15-alpine";
+}
diff --git a/devices/nas/modules/arion/resume/images/resume-client.nix b/devices/nas/modules/arion/resume/images/resume-client.nix
new file mode 100644
index 00000000..9c531d9b
--- /dev/null
+++ b/devices/nas/modules/arion/resume/images/resume-client.nix
@@ -0,0 +1,8 @@
+pkgs:
+pkgs.dockerTools.pullImage {
+  imageName = "amruthpillai/reactive-resume";
+  imageDigest = "sha256:9cbe8efde6f489da05367b5b2d0f0097b397f76fa1dcefd0352f174e50221826";
+  sha256 = "1ybsnr91518m7v2g9drp2pdibml4rsfa5mqnrjckwq1ai9mlg1rj";
+  finalImageName = "amruthpillai/reactive-resume";
+  finalImageTag = "client-latest";
+}
diff --git a/devices/nas/modules/arion/resume/images/resume-server.nix b/devices/nas/modules/arion/resume/images/resume-server.nix
new file mode 100644
index 00000000..df617eed
--- /dev/null
+++ b/devices/nas/modules/arion/resume/images/resume-server.nix
@@ -0,0 +1,8 @@
+pkgs:
+pkgs.dockerTools.pullImage {
+  imageName = "amruthpillai/reactive-resume";
+  imageDigest = "sha256:f14519b5d72fab07a948ce0ac6ac8e09321f1b05865e9d951851467e8be0542f";
+  sha256 = "0znbhnixy22i80h2qjylsf8v0mg07scfirh2q5w8njf7sa52w0d6";
+  finalImageName = "amruthpillai/reactive-resume";
+  finalImageTag = "server-latest";
+}
diff --git a/flake.lock b/flake.lock
index 4f110817..eaebc1fd 100644
--- a/flake.lock
+++ b/flake.lock
@@ -1342,11 +1342,11 @@
         "sops-nix": "sops-nix"
       },
       "locked": {
-        "lastModified": 1709140468,
-        "narHash": "sha256-L6sJbSY7ckfk4BY2E28+0+XIE5r7YupiQuCCiLRZ4WI=",
+        "lastModified": 1709143835,
+        "narHash": "sha256-75Ww7bpWFdKyYxTiSd2zO8FX6T5FxfAAwuyOf6PgkWs=",
         "ref": "refs/heads/main",
-        "rev": "e55f4bbd9179f9cb2d3b9770942f6e9eaf259ab2",
-        "revCount": 46,
+        "rev": "38fcf652c0fb0c441cd0fff092772f547be7c42d",
+        "revCount": 48,
         "type": "git",
         "url": "ssh://git@git.nelim.org/matt1432/nixos-secrets"
       },