diff --git a/docker-compose.yaml b/docker-compose.yaml
new file mode 100644
index 0000000000000000000000000000000000000000..174d157470c6ead2c15da8fa7b4adfd4d46aa625
--- /dev/null
+++ b/docker-compose.yaml
@@ -0,0 +1,233 @@
+version: "3"
+
+networks:
+  traefik-proxy:
+    external: true
+  default:
+    external: false
+
+services:
+  workadventure-front:
+    container_name: workadventure-front
+    image: thecodingmachine/nodejs:14
+    restart: unless-stopped
+    environment:
+      DEBUG_MODE: "$DEBUG_MODE"
+      JITSI_URL: "meet.jit.si"
+      JITSI_PRIVATE_MODE: "$JITSI_PRIVATE_MODE"
+      HOST: "0.0.0.0"
+      NODE_ENV: development
+      PUSHER_URL: //wa_pusher.warpzone.ms
+      UPLOADER_URL: //wa_uploader.warpzone.ms
+      ADMIN_URL: //workadventure.warpzone.ms
+      STARTUP_COMMAND_1: ./templater.sh
+      STARTUP_COMMAND_2: yarn install
+      DISABLE_NOTIFICATIONS: "$DISABLE_NOTIFICATIONS"
+      SKIP_RENDER_OPTIMIZATIONS: "$SKIP_RENDER_OPTIMIZATIONS"
+      # Use TURN_USER/TURN_PASSWORD if your Coturn server is secured via hard coded credentials.
+      # Advice: you should instead use Coturn REST API along the TURN_STATIC_AUTH_SECRET in the Back container
+#      TURN_USER: ""
+#      TURN_PASSWORD: ""
+#      STUN_SERVER: "stun:stun.t-online.de:3478"
+#      TURN_SERVER: "turn:turn.anyfirewall.com:443?transport=tcp,turns:turn.anyfirewall.com:443?transport=tcp"
+#      TURN_USER: webrtc
+#      TURN_PASSWORD: webrtc
+      TURN_SERVER: "turn:coturn.workadventu.re:443,turns:coturn.workadventu.re:443"
+      TURN_USER: workadventure
+      TURN_PASSWORD: WorkAdventure123
+      START_ROOM_URL: "$START_ROOM_URL"
+      MAX_PER_GROUP: "$MAX_PER_GROUP"
+      MAX_USERNAME_LENGTH: "$MAX_USERNAME_LENGTH"
+    networks:
+      - traefik-proxy
+      - default
+    command: yarn run start
+    volumes:
+      - ./front:/usr/src/app
+    labels:
+      - "traefik.enable=true"
+      - "traefik.http.services.workadventure-front.loadbalancer.server.port=8080"
+      - "traefik.http.routers.workadventure-front.rule=Host(`play.warpzone.ms`)"
+      - "traefik.http.routers.workadventure-front.entryPoints=websecure"
+      - "traefik.http.routers.workadventure-front.tls.certresolver=hetzner"
+      - "traefik.http.routers.workadventure-front.service=workadventure-front"
+      - "traefik.http.routers.link.rule= Host(`workadventure.warpzone.ms`)"
+      - "traefik.http.routers.link.entryPoints=websecure"
+      - "traefik.http.routers.link.tls.certresolver=hetzner"
+      - "traefik.docker.network=traefik-proxy"
+
+
+  workadventure-pusher:
+    container_name: workadventure-pusher
+    image: thecodingmachine/nodejs:14
+    restart: unless-stopped
+    command: yarn dev
+    environment:
+      DEBUG: "socket:*"
+      STARTUP_COMMAND_1: yarn install
+      SECRET_JITSI_KEY: "$SECRET_JITSI_KEY"
+      SECRET_KEY: yourSecretKey
+      ADMIN_API_TOKEN: "$ADMIN_API_TOKEN"
+      API_URL: workadventure-back:50051
+      JITSI_URL: $JITSI_URL
+      JITSI_ISS: $JITSI_ISS
+      FRONT_URL: https://play.warpzone.ms
+      OPID_CLIENT_ID: $OPID_CLIENT_ID
+      OPID_CLIENT_SECRET: $OPID_CLIENT_SECRET
+      OPID_CLIENT_ISSUER: $OPID_CLIENT_ISSUER
+    networks:
+      - traefik-proxy
+      - default
+    volumes:
+      - ./pusher:/usr/src/app
+    labels:
+      - "traefik.enable=true"
+      - "traefik.http.services.workadventure-pusher.loadbalancer.server.port=8080"
+      - "traefik.http.routers.workadventure-pusher.rule=Host(`wa_pusher.warpzone.ms`)"
+      - "traefik.http.routers.workadventure-pusher.entryPoints=websecure"
+      - "traefik.http.routers.workadventure-pusher.tls.certresolver=hetzner"
+      - "traefik.http.routers.workadventure-pusher.service=workadventure-pusher"
+      - "traefik.docker.network=traefik-proxy"
+
+  workadventure-maps:
+    container_name: workadventure-maps
+    image: thecodingmachine/nodejs:12-apache
+    restart: unless-stopped
+    environment:
+      DEBUG_MODE: "$DEBUG_MODE"
+      HOST: "0.0.0.0"
+      NODE_ENV: development
+      #APACHE_DOCUMENT_ROOT: dist/
+      #APACHE_EXTENSIONS: headers
+      #APACHE_EXTENSION_HEADERS: 1
+      STARTUP_COMMAND_0: sudo a2enmod headers
+      STARTUP_COMMAND_1: yarn install
+      STARTUP_COMMAND_2: yarn run dev &
+    networks:
+      - traefik-proxy
+      - default
+    volumes:
+      - ./maps:/var/www/html
+    labels:
+      - "traefik.enable=true"
+      - "traefik.http.services.workadventure-maps.loadbalancer.server.port=80"
+      - "traefik.http.routers.workadventure-maps.rule=Host(`maps.warpzone.ms`)"
+      - "traefik.http.routers.workadventure-maps.entryPoints=websecure"
+      - "traefik.http.routers.workadventure-maps.tls.certresolver=hetzner"
+      - "traefik.http.routers.workadventure-maps.service=workadventure-maps"
+#      - "traefik.http.routers.workadventure-maps.middlewares=maps"
+#      - "traefik.http.middlewares.maps.addprefix.prefix=/party"
+      - "traefik.docker.network=traefik-proxy"
+
+  workadventure-back:
+    container_name: workadventure-back
+    image: thecodingmachine/nodejs:12
+    restart: unless-stopped
+    command: yarn dev
+    #command: yarn run profile
+    environment:
+      DEBUG: "*"
+      STARTUP_COMMAND_1: yarn install
+      SECRET_KEY: yourSecretKey
+      SECRET_JITSI_KEY: "$SECRET_JITSI_KEY"
+      ALLOW_ARTILLERY: "true"
+      ADMIN_API_TOKEN: "$ADMIN_API_TOKEN"
+      JITSI_URL: $JITSI_URL
+      JITSI_ISS: $JITSI_ISS
+      TURN_STATIC_AUTH_SECRET: SomeStaticAuthSecret
+      MAX_PER_GROUP: "MAX_PER_GROUP"
+      REDIS_HOST: redis
+      NODE_ENV: development
+    networks:
+      - traefik-proxy
+      - default
+    volumes:
+      - ./back:/usr/src/app
+    labels:
+      - "traefik.enable=true"
+      - "traefik.http.services.workadventure-back.loadbalancer.server.port=8080"
+      - "traefik.http.routers.workadventure-back.rule=Host(`wa_api.warpzone.ms`)"
+      - "traefik.http.routers.workadventure-back.entryPoints=websecure"
+      - "traefik.http.routers.workadventure-back.tls.certresolver=hetzner"
+      - "traefik.http.routers.workadventure-back.service=workadventure-back"
+      - "traefik.docker.network=traefik-proxy"
+
+  workadventure-uploader:
+    container_name: workadventure-uploader
+    image: thecodingmachine/nodejs:12
+    restart: unless-stopped
+    command: yarn dev
+    #command: yarn run profile
+    environment:
+      DEBUG: "*"
+      STARTUP_COMMAND_1: yarn install
+    networks:
+      - traefik-proxy
+      - default
+    volumes:
+      - ./uploader:/usr/src/app
+    labels:
+      - "traefik.enable=true"
+      - "traefik.http.services.workadventure-uploader.loadbalancer.server.port=8080"
+      - "traefik.http.routers.workadventure-uploader.rule=Host(`wa_uploader.warpzone.ms`)"
+      - "traefik.http.routers.workadventure-uploader.entryPoints=websecure"
+      - "traefik.http.routers.workadventure-uploader.tls.certresolver=hetzner"
+      - "traefik.http.routers.workadventure-uploader.service=workadventure-uploader"
+
+  workadventure-messages:
+    container_name: workadventure-messages
+    #image: thecodingmachine/nodejs:14
+    image: thecodingmachine/workadventure-back-base:latest
+    restart: unless-stopped
+    environment:
+      #STARTUP_COMMAND_0: sudo apt-get install -y inotify-tools
+      STARTUP_COMMAND_1: yarn install
+      STARTUP_COMMAND_2: yarn run proto:watch
+    networks:
+      - traefik-proxy
+      - default
+    volumes:
+      - ./messages:/usr/src/app
+      - ./back:/usr/src/back
+      - ./front:/usr/src/front
+      - ./pusher:/usr/src/pusher
+
+  redis:
+    image: redis:6
+
+  redisinsight:
+    image: redislabs/redisinsight:latest
+    labels:
+      - "traefik.http.routers.redisinsight.rule=Host(`redis.workadventure.localhost`)"
+      - "traefik.http.routers.redisinsight.entryPoints=web"
+      - "traefik.http.services.redisinsight.loadbalancer.server.port=8001"
+      - "traefik.http.routers.redisinsight-ssl.rule=Host(`redis.workadventure.localhost`)"
+      - "traefik.http.routers.redisinsight-ssl.entryPoints=websecure"
+      - "traefik.http.routers.redisinsight-ssl.tls=true"
+      - "traefik.http.routers.redisinsight-ssl.service=redisinsight"
+
+#  coturn:
+#    image: coturn/coturn:4.5.2
+#    command:
+#      - turnserver
+#      #- -c=/etc/coturn/turnserver.conf
+#      - --log-file=stdout
+#      - --external-ip=$$(detect-external-ip)
+#      - --listening-port=3478
+#      - --min-port=10000
+#      - --max-port=10010
+#      - --tls-listening-port=5349
+#      - --listening-ip=0.0.0.0
+#      - --realm=coturn.workadventure.localhost
+#      - --server-name=coturn.workadventure.localhost
+#      - --lt-cred-mech
+#      # Enable Coturn "REST API" to validate temporary passwords.
+#      #- --use-auth-secret
+#      #- --static-auth-secret=SomeStaticAuthSecret
+#      #- --userdb=/var/lib/turn/turndb
+#      - --user=workadventure:WorkAdventure123
+#      # use real-valid certificate/privatekey files
+#      #- --cert=/root/letsencrypt/fullchain.pem
+#      #- --pkey=/root/letsencrypt/privkey.pem
+#    network_mode: host
+