diff --git a/server/deploy.py b/server/deploy.py
index 54be87ec4fad39590aebc82ad66591abded04517..f9598fa40b9bf20db97e64bc13512f9cb0504a2d 100644
--- a/server/deploy.py
+++ b/server/deploy.py
@@ -3,15 +3,30 @@ from pexpect import pxssh
 from time import sleep
 import re
 
-EXOSCALE_API_KEY = 'EXO7945e92f25a038a400b488aa'
-EXOSCALE_API_SECRET = 'smRDVh7H0QO3w9068WlSq_JqBuPPdR7uaps6bSkLEWw'
+EXOSCALE_API_KEY = 'EXO37ac257070da225b758e0f76'
+EXOSCALE_API_SECRET = 'R7yBJ-XChI2rdkJ_1dOAeJJ1GK4N-jMsuhep4qEx16Q'
 
 # Initialise exoscale API
 exo = exoscale.Exoscale(api_key=EXOSCALE_API_KEY, api_secret=EXOSCALE_API_SECRET)
-zone_decix = exo.compute.get_zone("de-fra-1")
-
+zone_gva2 = exo.compute.get_zone("ch-gva-2")
 security_group_default_ssh = exo.compute.get_security_group(name='default')
 
+try:
+    security_group_ssh = exo.compute.create_security_group("ssh")
+    for rule in [
+        exoscale.api.compute.SecurityGroupRule.ingress(
+            description="HTTP",
+            network_cidr="0.0.0.0/0",
+            port="22",
+            protocol="tcp",
+        )
+    ]:
+        security_group_web.add_rule(rule)
+
+except Exoscale.api.APIException as err:
+    print(err)
+
+
 ###
 # Create instances
 ###
@@ -19,16 +34,17 @@ security_group_default_ssh = exo.compute.get_security_group(name='default')
 nodes = []
 
 for i in range(6):
+    instance_name = "freenet-" + str(i)
     new_instance = exo.compute.create_instance(
-            name="freenet-1"
-            zone=zone_decix,
+            name=instance_name,
+            zone=zone_gva2,
             type=exo.compute.get_instance_type("tiny"),
             template=list(exo.compute.list_instance_templates(
-                    zone_decix,
+                    zone_gva2,
                     "Linux Ubuntu 18.04 LTS 64-bit"))[0],
             volume_size=10,
             security_groups=[security_group_default_ssh],
-            ssh_key=exo.compute.get_ssh_key("SWARM-cluster-key"),
+            ssh_key=exo.compute.get_ssh_key("exoscale.key"),
             user_data=
         """#cloud-config
         package_upgrade: true
@@ -41,40 +57,25 @@ for i in range(6):
         """
         )
     nodes.append(new_instance)
+    print("Instance : " + instance_name + " created !")
 
-print("SWARM master hosted at {}".format(swarm_master.ipv4_address))
-print("SWARM http hosted at {}".format(swarm_http_slave.ipv4_address))
-print("Swarm slave at {}".format(swarm_slave.ipv4_address))
-
-print("Waiting 60 seconds for cloud-init completion...");
+print("Waiting 60 seconds for cloud-init completion...")
 sleep(60)
 
-print("Setting up docker SWARM...")
-try:
-    s = pxssh.pxssh(options={"StrictHostKeyChecking": "no", "UserKnownHostsFile": "/dev/null"})
-    
-    s.login(swarm_master.ipv4_address, username='ubuntu', ssh_key='swarm_key')
-    s.sendline('docker swarm init')
-    s.prompt()
+for instance in nodes:
+    try:
+        print("Connexion a l'instance: " + instance.name)
+        s = pxssh.pxssh(options={"StrictHostKeyChecking": "no", "UserKnownHostsFile": "/dev/null"})
+        s.login(instance.ipv4_address, username='ubuntu', ssh_key='exoscale.key')
+        s.sendline('git clone ssh://git@ssh.hesge.ch:10572/jeremy.martinot/tp2_freenet_go_socket.git')
+        print("git cloned")
+        s.prompt()
 
-    haystack = s.before.decode('utf-8', 'ignore')
-    join_cmd = re.findall('docker swarm join --token.*$', haystack, re.MULTILINE)[0].strip()
-    
-    s.logout()
-    
-    s = pxssh.pxssh(options={"StrictHostKeyChecking": "no", "UserKnownHostsFile": "/dev/null"})
-    s.login(swarm_slave.ipv4_address, username='ubuntu', ssh_key='swarm_key')
-    s.sendline(join_cmd)
-    s.prompt()
-    s.logout()
-    
-    s = pxssh.pxssh(options={"StrictHostKeyChecking": "no", "UserKnownHostsFile": "/dev/null"})
-    s.login(swarm_http_slave.ipv4_address, username='ubuntu', ssh_key='swarm_key')
-    s.sendline(join_cmd)
-    s.prompt()
-    s.logout()
-    
-    print("Swarm created on all nodes.")
-except pxssh.ExceptionPxssh as e:
-    print("pxssh failed on login.")
-    print(e)
+        haystack = s.before.decode('utf-8', 'ignore')
+        join_cmd = re.findall('docker swarm join --token.*$', haystack, re.MULTILINE)[0].strip()
+        
+        s.logout()
+        
+    except pxssh.ExceptionPxssh as e:
+        print("pxssh failed on login.")
+        print(e)
\ No newline at end of file
diff --git a/server/exoscale.key b/server/exoscale.key
new file mode 100644
index 0000000000000000000000000000000000000000..85e8f947e6acb5da2641536e2f68af02d1c2e689
--- /dev/null
+++ b/server/exoscale.key
@@ -0,0 +1,49 @@
+-----BEGIN OPENSSH PRIVATE KEY-----
+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
+vgLQ6GDXGkUAAAAIZXhvc2NhbGUBAgM=
+-----END OPENSSH PRIVATE KEY-----
diff --git a/server/exoscalekey.pub b/server/exoscalekey.pub
new file mode 100644
index 0000000000000000000000000000000000000000..9612864196d3d7c3b68ccd6b4bf72d809c04f678
--- /dev/null
+++ b/server/exoscalekey.pub
@@ -0,0 +1 @@
+ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQDP/OlUdvFebzcQU5+otUC15ma7VF1HULGw5wCMjn55rmIF7iVW9GTg+zOtH+GP2TAtZ6ibEUS4XsFF+kFS7Cnjf5m/nw9GvHqv39boRLDPvGG01e3b7orqTBWLAc+tHB+JmPticIDmXgb8PfDEDKKrHE6UfFVP2jWHFHsXt5rI4TAhcS5PmiEjubWnl1W/rEx7r2U+mT7QXb0zcDGvRstHD53AuYSSEZ6oFaOUSygO09AlM8Jilk2CDgfkl4lb7KuE7BBdSbfqbIh+e+nLWwn0mQJR9JOgTo7remlyDXNoyOeYbCKGGcvqqBna8yOkQq3vuBJYBmgEcgqOE+pr47jCryByfN12p8MzcarThywVmII1e9lTO4OVpZYdyAROmLjnJA67ag62KkLnz0tPSN3DIsT67yqpITiuF5GmmQQS3wsshyHtNhcudPwyja2/HXEnNqtx6csmoIH95VfYbQSGc+TLlpdJAppAUzqwtEMpzh3BS/lyGwL0dR3u1HMn00KB27zrQBXWJly7tydmcHogt92x6MzFkIZ+PVozMzIQoguqghc+tTidOIdlnYSJBdHqqbb9+XmW0hywPGe+wBIGgf8hwY8Fr1uuyTzaoDJQIJtahvwG58Hy6eug1p5epNOsmzhp3vRJTBThAjcdhAqM3OpsWW83he5YlzzFX7ydjw== exoscale