I was trying to deploy the Speckle Server on one of our Windows machines, allowing other users to connect from their own devices via Speckle Manager. I preferred not to use Digital Ocean, as it’s a paid option.
I followed this guide and used docker-compose to set the server. I installed Debian using WSL and followed all the steps.
I set CANONICAL_URL: “http://1ipaddress” which is my windows machine IP address.
I am not getting any error, but I am not able to see any server on this URL.
Do I need to purchase specific domain to set CANONICAL_URL?
Can I use my specific linux machine(installed visa WSL) to host the speckle server?
Do I need additional configuration to enable this IP address for speckle server?
Thank you for your response.
I checked that post. It says that frontend is running at http://127.0.0.1:5066
I was able to do the same on my local machine. I want to expose this to my machine IP address so that this server can be added by other users using speckle manager. I want to replace 127.0.0.1 with my machine IP address for production use. Is it possible using docker compose?
I’ll consult the team as I do not know for sure. Based on my limited understanding, it’s possible to set up the Speckle Server in WSL on your Windows machine and expose it to other network users. Here’s a more detailed guide on how you might approach this:
Update the Docker Compose Configuration:
In your docker-compose.yml, bind the Speckle services to your Windows machine’s IP address. This way, Docker will expose those ports on your machine’s IP, making it accessible to other devices on your network. Modify the ports section for each service you want accessible, like so:
ports:
- "your_machine_ip:3000:3000"
Replace your_machine_ip with your actual Windows machine IP (e.g., 192.168.1.X).
Set the CANONICAL_URL:
You’ve already set CANONICAL_URL to your Windows machine’s IP address. Just ensure the URL is formatted correctly, for example: http://192.168.1.X.
Adjust Firewall and Network Settings:
On your Windows host, ensure that Windows Firewall allows incoming connections on the specified ports (such as 3000, 5000, etc., based on your setup). This allows other devices on your network to reach the Docker containers running within WSL.
Restart Docker Compose:
Once everything is set, restart your Docker Compose setup:
docker-compose down
docker-compose up -d
Test Access from Other Devices:
On a device on the same network, try accessing the server at http://your_machine_ip:3000. If everything is set up correctly, you should be able to reach the Speckle Server.
This configuration should allow your Speckle Server in WSL to be accessible to other network users through the Windows IP, even though it’s running within WSL. No specific domain is required if you’re just using the IP address, but for a more production-ready setup or if HTTPS is needed, you might want to look into using a reverse proxy.
I’ve asked other Specklers to chime in if I’m wrong here … highly possible. Let me know if this works for you or if you need more assistance.
To add to what Jonathon provided, this Microsoft guidance may also provide more information:
Please be aware that exposing ports on a host machine may have security implications.
If working within a corporate environment, you may wish to confirm your plans with your IT department as they may have policies governing network ports.
But when I enter my credentials and click on Login, it shows me this. But I have exposed both ports using netsh. Is there anything which I am missing here?
Also, if I use machine host address 192.168.. in canonical URL value, it doesn’t work even locally. So I followed above steps.
In one screenshot you have 192.168..., which appears to work.
However, the next screenshot has 172.21... in the url.
Is it possible that you have an incorrect configuration value of 172.21... in one of the environment variables in the docker compose file.
If you replace 172.21... with 192.168..., does it work?
Yes, I modified 172.21.. to 192.168.* and now I am able to see both server and frontend working on another machine.
server - 192.168..:3000
frontend - 192.168..:8081
But when I click on Login button on frontend, it always navigate to 172.21.:3000 and which is why its still failing. Is there any specific configuration where we need to modify this? I relaced 172.21. everywhere to 192.168.* for now
We recommend using the Docker Compose guide: Deploying a Server - Docker Compose | Speckle Docs
Running the server following the development guide will place it in development mode, allowing many security restrictions to be bypassed. It is strongly recommended to avoid Development mode if exposing the server externally from your host machine with other machines on the local network.
The auth url is created from the CANONICAL_URL environment variable set on the server component. Is the CANONICAL_URL value set to 192.168....?