diff --git a/recipe/systemd.php b/recipe/systemd.php
index 45f1d5e7801580eaf57abf98fbe9abc8b6f398d5..11a450cb8b615f8e2f5391300f3de59626e9186a 100644
--- a/recipe/systemd.php
+++ b/recipe/systemd.php
@@ -64,22 +64,21 @@ set('worker.service.name', '{{ application }}-worker');
 // Nom de l'unité systemd
 set('worker.service.unit', '{{ worker.service.name }}.service');
 
-// Chemin vers le fichier du service
-set('worker.service.path', '{{ release_path }}/{{ bin_dir }}/{{ worker.service.unit }}');
+// Chemin vers le fichier du service de cette release
+set('worker.service.path', '{{ bin_dir }}/{{ worker.service.unit }}');
 
 desc('Generate the worker definition');
-task('worker:service:generate', "{{ worker.sudo }}/bin/cat >'{{ worker.service.path }}' <<'EOF'\n{{ worker.service.parsed }}\nEOF\n");
+task('worker:service:generate', "/bin/cat >'{{ worker.service.path }}' <<'EOF'\n{{ worker.service.parsed }}\nEOF\n");
 
 desc('Reload the worker definition');
 task('worker:service:reload', function (): void {
-    // Désactive l'unité si elle existe déjà ; elle a peut-être été définie par une autre release
-    if (test('{{ worker.systemctl }} is-enabled {{ worker.service.unit }}')) {
-        run('{{ worker.systemctl }} disable {{ worker.service.unit }}');
+    if (run('{{ worker.systemctl }} is-enabled {{ worker.service.unit }}') === 'enabled') {
+        // Recharge toutes les unités
+        run('{{ worker.systemctl }} daemon-reload');
+    } else {
+        // Installe l'unité
+        run('{{ worker.systemctl }} enable --force {{ deploy_path }}/current/{{ worker.service.path }}');
     }
-    // Force un rechargement de la config de systemd
-    run('{{ worker.systemctl }} daemon-reload');
-    // Active l'unité dans sa version actuelle
-    run('{{ worker.systemctl }} enable {{ worker.service.path }}');
 });
 
 desc('Start the worker');