diff --git a/.gitignore b/.gitignore
index 15670c5207e46707b686fe4059a9cc4b330ed380..1f94dbe8c1cc2ebe230fc6553784460855f0ecc1 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,2 +1,3 @@
 db.env
 web.env
+__pycache__
diff --git a/docker-compose.yml b/docker-compose.yml
index cfe5d796909e2262e733ee848203816cabce1a51..76b1d728be9cb596dd3ff203c5676779706a8798 100644
--- a/docker-compose.yml
+++ b/docker-compose.yml
@@ -5,13 +5,16 @@ services:
     depends_on:
       - db
       - redis
+    deploy:
+      placement:
+        constraints:
+          - node.role == manager
     env_file:
       - db.env
       - web.env
     image: gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/opaque:development
     ports:
       - 5000:5000
-    restart: always
     volumes:
       - /opaque_storage:/opaque_storage
       - ./app:/home/opaque/app
@@ -21,17 +24,26 @@ services:
   daemon:
     depends_on:
       - db
+    deploy:
+      placement:
+        constraints:
+          - node.role == manager
     env_file: db.env
     image: gitlab.ub.uni-bielefeld.de:4567/sfb1288inf/opaque_daemon:latest
-    restart: always
     volumes:
       - $HOME/.docker/config.json:/home/opaque_daemon/.docker/config.json
   db:
+    deploy:
+      placement:
+        constraints:
+          - node.role == manager
     env_file: db.env
     image: postgres:alpine
-    restart: always
     volumes:
       - /opaque_database:/var/lib/postgresql/data
   redis:
+    deploy:
+      placement:
+        constraints:
+          - node.role == manager
     image: redis:alpine
-    restart: always