diff --git a/README.md b/README.md
index e16f6d5a4036b200c5b9078cd742c9fb0f69ec10..390f4081066964d84dd4b26be69ff00f3efcb025 100644
--- a/README.md
+++ b/README.md
@@ -4,3 +4,35 @@
 
 - Docker: https://www.docker.com/
 - Python 3.5+
+
+## Setup
+
+In order to run jobs, Opaque needs access to a Docker swarm manager. Currently it's not possible to specify a dedicated Docker host, instead Opaque expects the executing system to to be a swarm manager.
+
+1. Get the source code and navigate into the code directory
+```
+git clone https://gitlab.ub.uni-bielefeld.de/sfb1288inf/opaque.git
+cd opaque
+```
+
+2. Create Docker swarm
+
+2.1. Local
+```
+# Set the variable values in setup_local_swarm.sh (nano setup_local_swarm.sh)
+./setup_local_swarm.sh
+```
+
+2.2. Distributed
+
+2.2.1. Initialize swarm on manager machine
+```
+docker swarm init
+```
+
+3. Create Python virtual environment, activate it and install the required python packages.
+```
+python3 -m venv venv
+source venv/bin/activate
+pip install -r requirements.txt
+```