Information to Install Speckle on Azure

Hi Developers,

I am trying to Install SpeckleSystems V2.0 on Azure, but still not successful.
I have tried these.

  1. Install on Azure AppService using Multicontainer images: This did not work and was getting gateway errors through out.
    For example: az webapp create --resource-group ResGroup_SpeckleDemo–plan AppSvc-SpeckleServer-plan --name SpeckleMCApp --multicontainer-config-type compose --multicontainer-config-file docker-compose-speckle.yml
  2. installed on Azure Container Instance, using YAML for example
    For example az container create --resource-group RS_Speckle_demo --file speckleserver.yml
    This is giving me this error
    The requested resource is not available in the location ‘xxxx’ at this moment. Please retry with a different resource request or in another location. Resource requested:‘5’ CPU ‘3.5’ GB memory ‘Linux’ OS

Is there any documentation that clearly explains the steps to Deploy SpeckleSystems 2.0 on Azure?

thanks
Aravinda

1 Like

Hi Aravinda,

We’re working on publishing docker images on Docker Hub, thus greatly simplifying deployments, as you will no longer need to build the docker images yourself.
We will also provide a docker-compose.yml file to use when deploying. (the current ones are intended for local testing/development)

I will keep you posted on this thread with updates on this (probably a few days)

Meanwhile you can use our public server at https://speckle.xyz/

Cristian

Hi Chris,
Thanks for your reply, I represent Atkins and we are considering speckle to be one of the core platforms and for that, I am setting up POC on Azure. I understand that you are parallel working to set up docker images. I am able to follow these instructions and set up a local version of the speckle on my developer system. However, with Azure, it’s not that straightforward though I was able to push the images to the Azure container registry and deploy them through YAML files, I am not able to push all images and run the images on azure. So instead of reinventing the wheel again, just checking out is there any work in progress or draft documentation that I could try out speckle on azure.
By the way I am part of the beta program and could even beta test the setup with azure.
Thanks
Aravinda

@cristi is just as we speak busy publishing public docker images to dockerhub, so theroretically the container registry from azure will not be needed. He will follow up as soon as things are done and tested - later on today afaik :slight_smile:

@arvnda
Yes, as dimitrie mentioned, I uploaded docker images to docker hub (that get updated automatically by our CI pipeline), so they’re now public and ready to be used.

Here is a docker-compose that still needs more testing and documentation, its purpose is for dedicated VMs where you want to run everything in one VM:

For azure, I think the best way is to create the postgres and redis as fully managed services by azure, and only run the speckle frontend and backend with containers. (maybe remove the postgres and redis from this yaml and their associated storage volumes and then just update env variables for the server as needed to point to the correct DBs).

In this setup, the frontend will publicly listen on port 80 and forward the server requests to the server container automatically.

Let us know how it goes,
Thanks,
Cristian

@arvnda
So I finished testing and fixed some issues and created better documentation around it.

Please check out our guide: Deploying a Server | Speckle Docs
For an Azure deployment, the best option I think is to:

  • Create a managed Redis deployment in azure (not heavily used yet by speckle, so you can provision very few resources for this)
  • Create a managed PostgreSQL in Azure (scale depending on how much data you will store)

And then use the docker-compose snippet in the Run in a VM without dependencies chapter: Deploying a Server | Speckle Docs

Be sure to edit the TODO values before using it :slight_smile:

3 Likes

Hi Cristi,

Appreciate your support here, I am able to use the original yaml file found here speckle-server/docker-compose-speckle.yml at main · specklesystems/speckle-server · GitHub on Azure Linux VM with Dockercompose as per the documentation here. Deploying a Server | Speckle Docs
. Right now I am seeing this error
chunk-vendors.a8ad4fe0.js:25 WebSocket connection to ‘ws://51.x.x.y/graphql’ failed: Error during WebSocket handshake: Unexpected response code: 400
t.connect @ chunk-vendors.a8ad4fe0.js:25
t @ chunk-vendors.a8ad4fe0.js:25
1112 @ app.fd6c46a3.js:1
i @ app.fd6c46a3.js:1
0 @ app.fd6c46a3.js:1
i @ app.fd6c46a3.js:1
t @ app.fd6c46a3.js:1
(anonymous) @ app.fd6c46a3.js:1
(anonymous) @ app.fd6c46a3.js:1

Looks like this is a port issue with Graphql and could be socket blocked issue. Can you please help me with this, also I cannot access to https://github.com/specklesystems/speckle-server/blob/cristi/easier-deployment/docker-compose-prod.yml, can you give me access.

Thanks
Aravinda

Also please note that, for speckle server I am using the same IP as the front end server with a different port number, I am not sure, if this leads to an issue though.

Hi,

We changed the documentation and the recommended docker-compose yaml after publishing the official images to Docker Hub.

You only need to expose the frontend port to the internet (and use it as the speckle server url). The frontend will communicate with the backend transparently. (to test, you can try http://51.x.x.y/graphql . if it opens the page correctly, then the frontend communicated correctly with the backend, which served the page.

The github url that u mentioned was removed, as it contained some issues. It was almost the same version as the one in the documentation (which is mentioned as a snippet). It was removed from the repo to simplify things: If you just want to deploy a server, follow the docs. If you want a development environment, follow the git repo

  1. Can you please paste your docker-compose .yml file? is it using the latest images from docker hub directly?

  2. Do you use any https in front of the azure deployment (cloudflare, other azure services), or just access the services directly?