Speckle Server (docker)

I haven’t set up a testing server since v1, as .xyz has been so convenient. That said I have now tried deploying via the docker-compose example and have all services running successfully and a frontend endpoint… and then ??

The Vue app defaults to the authn/login route which fails because /graphql throws 404s

Is there a problem with the pulled frontend image or did I miss a config step?

You’ll need to wait on devops team to come back to their keyboards for this. Personally - as a someone who never got docker too much (please don’t judge me :cold_sweat: ) - nothing beats the good 'ol manual setup.

More or less*, lerna bootstrap in root dir and then npm run dev in both the packages/server & packages/frontend if you already have postgres and redis running :man_shrugging:

*YMMV

I was trying this locally en route to a GCP deployment experiment. Needs to be as hands free as poss :unamused:

@jsdbroughton

hmm, this is new… can you paste the docker-compose yaml file that you’re using?

Cut & Paste from Deploying a Server - manual setup | Speckle Docs with the TODOs edited

The CANONICAL_URL is set as the root LAN IP in the screenshot.

For context:
I’ll probably end-up manualising more of this anyway. I’ll break down the experiment.

  • On-demand deployment of the server using Cloud Run

  • Instances of Cloud SQL for Postgres and Memcache for Redis that spin up with demand and spin down post demand.

  • Forking the Frontend to manage the latency drag of no Postgres/Redis availability.

  • 2nd custom App for nefarious purposes read/writes to server from separate Cloud Run instance.

I’ve left out some of the GCP minuteae, I was looking to see how the existing service images could be left intact before moving on.

I just checked the yaml from documentation, it works here.

You can make sure you have the latest docker images locally by doing a docker-compose pull before docker-compose up.

OH, did another test and was able to reproduce the 404s!

So where it says:

      # TODO: Change this to the URL of the speckle server, as accessed from the network
      CANONICAL_URL: "http://localhost"

You need to provide a URL, like http://192.168.86.99.

I just tried setting it to just the IP, like for example 192.168.86.99, and the server container fails to start, printing the error speckle:www TypeError [ERR_INVALID_URL]: Invalid URL. And if it fails to start correctly, then the /graphql requests will fail with 404

1 Like

I will play and report back - though IP should be valid

so all containers started, what is happening is an infinite loop of them waiting for the Postgres instance which in turn is loop failing to mount the directory.

chown: /var/lib/postgresql/data: Permission denied

anyhow, I forbade myself from rabbit hole diving this year but failed.

there is an underlying incompatibility with colima/lima running the docker daemon and macOS not resolved.

essentially my current setup meant this was doomed to fail before I started.

1 Like

oh, sorry to hear that.

Other options that i can think of, to test things out:

  • don’t mount directories into containers, but data will not persist after restarts
  • to have postgres + minio running on the system and only run redis/speckle with docker-compose, without mounting any volumes into redis
  • if it’s a quick test, a (temporary) linux cloud VM could help to quickly run the stack.
2 Likes

yes - those are the next steps I was only trying to quickly tear something up from what you had - I can progress from here.

2 Likes