@cameronbehning I updated the relevant files for compute in v9.0.26086.14170-wip. I’ve also updated the developer docs. Thanks for the heads up.
Thanks @fraguada, that is a lot clearer in the documentation. I will have to test it again with my .env file later today.
I recently tried setting up Rhino Compute on Linux using both a Vagrant VM and a Docker container. I wanted to see how it performs and how easy it is to get running. Here’s a summary of my experience.
Environment Setup
Vagrant VM:
config.vm.box = "bento/ubuntu-24.04"
config.vm.box_version = "202510.26.0"
vb.memory = "8192"
vb.cpus = 4
This gives a clean Ubuntu 24.04 environment with the recommended resources.
Docker Container:
docker run --rm -it -p 5000:5000 ubuntu:noble /bin/bash
I exposed port 5000 so I could access Rhino Compute from my host machine.
I started with the container and installed wget, gpg and nano.
Then I followed the linux installation guide from rhino and it started up fine.
when I tested the http://:5000/
I got “Api Key was not provided.” with is expected
RC [11:41:13 INF] HTTP GET / responded 401
RC [11:41:16 INF] HTTP GET /grasshopper responded 401
but when I wanted to solve a grasshopper definition I got an error.
Max concurrent requests = 1
Hello rhino linux
CG [11:44:09 INF] (1/4) Loading rhino commands plugin
CG [11:44:09 ERR] Error loading rhino commands plugin.
CG [11:44:09 INF] (2/4) Loading rhino scripting plugin
CG [11:44:09 ERR] Error loading rhino scripting plugin. Grasshopper script components are going to fail
CG [11:44:09 INF] (3/4) Loading grasshopper
CG [11:44:09 INF] (4/4) Loading compute plug-ins
CG [11:44:09 INF] Now listening on: http://localhost:6001
CG [11:44:09 INF] Application started. Press Ctrl+C to shut down.
CG [11:44:09 INF] Hosting environment: Production
CG [11:44:09 INF] Content root path: /
Grasshopper has started loading all component libraries
* Loading Grasshopper core assembly...
* Loading FieldComponents assembly...
* Loading SurfaceComponents assembly...
* Loading ScriptComponents assembly...
* Loading GalapagosComponents assembly...
* Loading IOComponents assembly...
terminate called after throwing an instance of 'PAL_SEHException'
RC [11:44:35 ERR] HTTP POST /io responded 500 in 33007.2319 ms
System.Net.Http.HttpRequestException: An error occurred while sending the request.
---> System.Net.Http.HttpIOException: The response ended prematurely. (ResponseEnded)
at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at rhino.compute.ReverseProxyModule.SendProxyRequest(HttpRequest initialRequest, HttpMethod method, String baseurl) in /home/runner/work/compute.rhino3d/compute.rhino3d/src/rhino.compute/ReverseProxy.cs:line 145
at rhino.compute.ReverseProxyModule.ReverseProxyPost(HttpRequest req, HttpResponse res) in /home/runner/work/compute.rhino3d/compute.rhino3d/src/rhino.compute/ReverseProxy.cs:line 183
at rhino.compute.ApiKeyMiddleware.InvokeAsync(HttpContext context) in /home/runner/work/compute.rhino3d/compute.rhino3d/src/rhino.compute/ApiKeyMiddleware.cs:line 34
at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
RC [11:44:35 ERR] Connection id "0HNKM5B69PIJQ", Request id "0HNKM5B69PIJQ:00000001": An unhandled exception was thrown by the application.
System.Net.Http.HttpRequestException: An error occurred while sending the request.
---> System.Net.Http.HttpIOException: The response ended prematurely. (ResponseEnded)
at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
--- End of inner exception stack trace ---
at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
at System.Net.Http.HttpClient.<SendAsync>g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
at rhino.compute.ReverseProxyModule.SendProxyRequest(HttpRequest initialRequest, HttpMethod method, String baseurl) in /home/runner/work/compute.rhino3d/compute.rhino3d/src/rhino.compute/ReverseProxy.cs:line 145
at rhino.compute.ReverseProxyModule.ReverseProxyPost(HttpRequest req, HttpResponse res) in /home/runner/work/compute.rhino3d/compute.rhino3d/src/rhino.compute/ReverseProxy.cs:line 183
at rhino.compute.ApiKeyMiddleware.InvokeAsync(HttpContext context) in /home/runner/work/compute.rhino3d/compute.rhino3d/src/rhino.compute/ApiKeyMiddleware.cs:line 34
at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
RC [11:45:02 INF] Max concurrent requests = 1
After I got the error in the container I tried it on the VM,
and did ‘sudo -s’ before the setup part and did ‘exit’ before the run compute part.
I didn’t do this for the container because you’re root when u enter,
and got the same error and i have no clue what i did wronge.
Hello! How are you trying to solve a Grasshopper definition? While it could be many things, when I see the PAL_SEHException it means that for some reason Rhino can’t find a RHINO_TOKEN. If you followed the instructions, then you would have set the RHINO_TOKEN (that you get by creating a CHB account) in /etc/rhino-compute/environment and both the VM (via sudo systemctl start rhino-compute) or the Container (via rhino-compute-start) should source that file which would make the environment variables available.
If you are trying to solve a gh definition in some other manner, like via your own custom application, then you’d need to set those environment variables somewhere (like ~/.profile) and source the file (like I mention here).
Thanks for the fast reply.
I followed the instructions in the guide and put my RHINO_TOKEN
in the /etc/rhino-compute/environment not /etc/rhino-compute-environment
This is not mentioned in the documentation.
root@c7b15d125c68:/etc/rhino-compute# ls
environment environment.example
root@c7b15d125c68:/etc/rhino-compute# cat environment
# Rhino Compute Environment Configuration
# Copy this file to /etc/rhino-compute/environment and set your values
# After making changes, restart the service: sudo systemctl restart rhino-compute
# Required: Your Core-Hour Billing token for authenticating Rhino
# https://developer.rhino3d.com/guides/compute/core-hour-billing/#setting-up-core-hour-billing
# Replace YOUR_CORE_HOUR_BILLING_TOKEN_HERE with your actual CHB Token
RHINO_TOKEN=jjbsgekvche.............
And for what I am trying to call the computer, it is with Rhino 8 using a hops.
So do they need to be in the /etc/rhino-compute-environment
Or is there something else?
I made a mistake in my reply, it should be in /etc/rhino-compute/environment, as it is in the doc.
I’d be curious to know about the definition you are trying to solve. Could you attach that? If it contains sensitive info, you can send it to me at luis at mcneel dot com.
this is the grasshopper file that i am using it is a smal and simpel file i made for testing
and when i put the file in a hops to use the compute i get the error
test.gh (5.2 KB)
Just tested the definition and I can solve it via Hops on Rhino 8 pointed to an Ubuntu 24.04 server running Rhino.Compute. All I can suggest is that you go through the RHINO_TOKEN steps again and make sure to stop and start the rhino-compute service, check if you added a RHINO_COMPUTE_KEY and make sure that is added to Grasshopper > Settings > Solver.
I just tested it on a new VM setup in VirtualBox using the “ubuntu-24.04.1-live-server-amd64.iso” image and did the installation.
Like this:
installation
tl@rhino-test:\~$ sudo -s
\[sudo\] password for tl:
root@rhino-test:/home/tl# # dotnet
wget https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh -O dotnet-install.sh
chmod +x ./dotnet-install.sh
./dotnet-install.sh --version 9.0.102 --install-dir /usr/share/dotnet
–2026-04-10 07:36:07-- https://dotnet.microsoft.com/download/dotnet/scripts/v1/dotnet-install.sh
Resolving dotnet.microsoft.com (dotnet.microsoft.com)… 13.107.246.67, 2620:1ec:bdf::67
Connecting to dotnet.microsoft.com (dotnet.microsoft.com)|13.107.246.67|:443… connected.
HTTP request sent, awaiting response… 301 Moved Permanently
Cookie coming from dotnet.microsoft.com attempted to set domain to dotnetwebsite.azurewebsites.net
Cookie coming from dotnet.microsoft.com attempted to set domain to dotnetwebsite.azurewebsites.net
Location: https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.sh \[following\]
–2026-04-10 07:36:07-- https://builds.dotnet.microsoft.com/dotnet/scripts/v1/dotnet-install.sh
Resolving builds.dotnet.microsoft.com (builds.dotnet.microsoft.com)… 96.16.53.160, 96.16.53.135, 2a02:26f0:6d00:1c::6010:3587, …
Connecting to builds.dotnet.microsoft.com (builds.dotnet.microsoft.com)|96.16.53.160|:443… connected.
HTTP request sent, awaiting response… 200 OK
Length: unspecified \[application/octet-stream\]
Saving to: ‘dotnet-install.sh’
dotnet-install.sh \[ <=> \] 62.00K --.-KB/s in 0.01s
2026-04-10 07:36:07 (4.40 MB/s) - ‘dotnet-install.sh’ saved \[63488\]
dotnet-install: Attempting to download using primary link https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.102/dotnet-sdk-9.0.102-linux-x64.tar.gz
dotnet-install: Remote file https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.102/dotnet-sdk-9.0.102-linux-x64.tar.gz size is 210604728 bytes.
dotnet-install: Extracting archive from https://builds.dotnet.microsoft.com/dotnet/Sdk/9.0.102/dotnet-sdk-9.0.102-linux-x64.tar.gz
dotnet-install: Downloaded file size is 210604728 bytes.
dotnet-install: The remote and local file sizes are equal.
dotnet-install: Installed version is 9.0.102
dotnet-install: Adding to current process PATH: `/usr/share/dotnet`. Note: This change will be visible only when sourcing script.
dotnet-install: Note that the script does not resolve dependencies during installation.
dotnet-install: To check the list of dependencies, go to https://learn.microsoft.com/dotnet/core/install , select your operating system and check the “Dependencies” section.
dotnet-install: Installation finished successfully.
root@rhino-test:/home/tl# # Import the GPG key
wget -qO- https://mcneel-packages.s3.amazonaws.com/mcneel-packages.gpg.key | gpg --dearmor -o /usr/share/keyrings/mcneel-archive-keyring.gpg
# Add repository
echo “deb \[signed-by=/usr/share/keyrings/mcneel-archive-keyring.gpg\] https://mcneel-packages.s3.amazonaws.com/deb stable main” | tee /etc/apt/sources.list.d/mcneel.list
deb \[signed-by=/usr/share/keyrings/mcneel-archive-keyring.gpg\] https://mcneel-packages.s3.amazonaws.com/deb stable main
root@rhino-test:/home/tl# apt update && apt install -y rhino-compute
Hit:1 http://be.archive.ubuntu.com/ubuntu noble InRelease
Hit:2 http://security.ubuntu.com/ubuntu noble-security InRelease
Hit:3 http://be.archive.ubuntu.com/ubuntu noble-updates InRelease
Hit:4 http://be.archive.ubuntu.com/ubuntu noble-backports InRelease
Get:5 https://mcneel-packages.s3.amazonaws.com/deb stable InRelease \[2,131 B\]
Get:6 https://mcneel-packages.s3.amazonaws.com/deb stable/main amd64 Packages \[21.7 kB\]
Fetched 23.9 kB in 1s (19.9 kB/s)
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
130 packages can be upgraded. Run ‘apt list --upgradable’ to see them.
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
The following additional packages will be installed:
libdrm-amdgpu1 libdrm-common libdrm-intel1 libdrm2 libegl-mesa0 libegl1
libgbm1 libgfortran5 libgl1 libgl1-mesa-dri libglvnd0 libglx-mesa0
libglx0 libllvm20 liblttng-ust-common1t64 liblttng-ust-ctl5t64
liblttng-ust1t64 libopengl0 libpciaccess0 libvulkan1 libwayland-client0
libx11-xcb1 libxcb-dri3-0 libxcb-glx0 libxcb-present0 libxcb-randr0
libxcb-shm0 libxcb-sync1 libxcb-xfixes0 libxshmfence1 libxxf86vm1
mesa-libgallium mesa-vulkan-drivers rhino3d
The following NEW packages will be installed:
libdrm-amdgpu1 libdrm-intel1 libegl-mesa0 libegl1 libgbm1 libgfortran5
libgl1 libgl1-mesa-dri libglvnd0 libglx-mesa0 libglx0 libllvm20
liblttng-ust-common1t64 liblttng-ust-ctl5t64 liblttng-ust1t64 libopengl0
libpciaccess0 libvulkan1 libwayland-client0 libx11-xcb1 libxcb-dri3-0
libxcb-glx0 libxcb-present0 libxcb-randr0 libxcb-shm0 libxcb-sync1
libxcb-xfixes0 libxshmfence1 libxxf86vm1 mesa-libgallium
mesa-vulkan-drivers rhino-compute rhino3d
The following packages will be upgraded:
libdrm-common libdrm2
2 upgraded, 33 newly installed, 0 to remove and 128 not upgraded.
Need to get 319 MB of archives.
After this operation, 1,203 MB of additional disk space will be used.
Get:1 http://be.archive.ubuntu.com/ubuntu noble-updates/main amd64 libdrm-common all 2.4.125-1ubuntu0.1\~24.04.1 \[9,174 B\]
Get:2 http://be.archive.ubuntu.com/ubuntu noble-updates/main amd64 libdrm2 amd64 2.4.125-1ubuntu0.1\~24.04.1 \[41.3 kB\]
Get:3 http://be.archive.ubuntu.com/ubuntu noble-updates/main amd64 libdrm-amdgpu1 amd64 2.4.125-1ubuntu0.1\~24.04.1 \[21.4 kB\]
Get:4 https://mcneel-packages.s3.amazonaws.com/deb stable/main amd64 rhino3d amd64 9.0.26099.8259 \[184 MB\]
Get:5 http://be.archive.ubuntu.com/ubuntu noble-updates/main amd64 libpciaccess0 amd64 0.17-3ubuntu0.24.04.2 \[18.9 kB\]
Get:6 http://be.archive.ubuntu.com/ubuntu noble-updates/main amd64 libdrm-intel1 amd64 2.4.125-1ubuntu0.1\~24.04.1 \[63.8 kB\]
Get:7 http://be.archive.ubuntu.com/ubuntu noble-updates/main amd64 libllvm20 amd64 1:20.1.2-0ubuntu1\~24.04.2 \[30.6 MB\]
Get:8 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libx11-xcb1 amd64 2:1.8.7-1build1 \[7,800 B\]
Get:9 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libxcb-dri3-0 amd64 1.15-1ubuntu2 \[7,142 B\]
Get:10 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libxcb-present0 amd64 1.15-1ubuntu2 \[5,676 B\]
Get:11 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libxcb-randr0 amd64 1.15-1ubuntu2 \[17.9 kB\]
Get:12 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libxcb-sync1 amd64 1.15-1ubuntu2 \[9,312 B\]
Get:13 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libxcb-xfixes0 amd64 1.15-1ubuntu2 \[10.2 kB\]
Get:14 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libxshmfence1 amd64 1.3-1build5 \[4,764 B\]
Get:15 http://be.archive.ubuntu.com/ubuntu noble-updates/main amd64 mesa-libgallium amd64 25.2.8-0ubuntu0.24.04.1 \[10.8 MB\]
Get:16 http://be.archive.ubuntu.com/ubuntu noble-updates/main amd64 libgbm1 amd64 25.2.8-0ubuntu0.24.04.1 \[34.2 kB\]
Get:17 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libwayland-client0 amd64 1.22.0-2.1build1 \[26.4 kB\]
Get:18 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libxcb-shm0 amd64 1.15-1ubuntu2 \[5,756 B\]
Get:19 http://be.archive.ubuntu.com/ubuntu noble-updates/main amd64 libegl-mesa0 amd64 25.2.8-0ubuntu0.24.04.1 \[117 kB\]
Get:20 http://be.archive.ubuntu.com/ubuntu noble-updates/main amd64 libgfortran5 amd64 14.2.0-4ubuntu2\~24.04.1 \[916 kB\]
Get:21 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libvulkan1 amd64 1.3.275.0-1build1 \[142 kB\]
Get:22 http://be.archive.ubuntu.com/ubuntu noble-updates/main amd64 libgl1-mesa-dri amd64 25.2.8-0ubuntu0.24.04.1 \[37.9 kB\]
Get:23 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libxcb-glx0 amd64 1.15-1ubuntu2 \[24.8 kB\]
Get:24 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libxxf86vm1 amd64 1:1.1.4-1build4 \[9,282 B\]
Get:25 http://be.archive.ubuntu.com/ubuntu noble-updates/main amd64 libglx-mesa0 amd64 25.2.8-0ubuntu0.24.04.1 \[110 kB\]
Get:26 http://be.archive.ubuntu.com/ubuntu noble/main amd64 liblttng-ust-common1t64 amd64 2.13.7-1.1ubuntu2 \[27.5 kB\]
Get:27 http://be.archive.ubuntu.com/ubuntu noble/main amd64 liblttng-ust-ctl5t64 amd64 2.13.7-1.1ubuntu2 \[74.9 kB\]
Get:28 http://be.archive.ubuntu.com/ubuntu noble/main amd64 liblttng-ust1t64 amd64 2.13.7-1.1ubuntu2 \[185 kB\]
Get:29 http://be.archive.ubuntu.com/ubuntu noble-updates/main amd64 mesa-vulkan-drivers amd64 25.2.8-0ubuntu0.24.04.1 \[17.5 MB\]
Get:30 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libglvnd0 amd64 1.7.0-1build1 \[69.6 kB\]
Get:31 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libegl1 amd64 1.7.0-1build1 \[28.7 kB\]
Get:32 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libglx0 amd64 1.7.0-1build1 \[38.6 kB\]
Get:33 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libgl1 amd64 1.7.0-1build1 \[102 kB\]
Get:34 http://be.archive.ubuntu.com/ubuntu noble/main amd64 libopengl0 amd64 1.7.0-1build1 \[32.8 kB\]
Get:35 https://mcneel-packages.s3.amazonaws.com/deb stable/main amd64 rhino-compute amd64 9.0.26086.14170-wip \[73.7 MB\]
Fetched 319 MB in 2min 0s (2,654 kB/s)
Extracting templates from packages: 100%
(Reading database … 87091 files and directories currently installed.)
Preparing to unpack …/00-libdrm-common_2.4.125-1ubuntu0.1\~24.04.1_all.deb …
Unpacking libdrm-common (2.4.125-1ubuntu0.1\~24.04.1) over (2.4.120-2build1) …
Preparing to unpack …/01-libdrm2_2.4.125-1ubuntu0.1\~24.04.1_amd64.deb …
Unpacking libdrm2:amd64 (2.4.125-1ubuntu0.1\~24.04.1) over (2.4.120-2build1) …
Selecting previously unselected package libdrm-amdgpu1:amd64.
Preparing to unpack …/02-libdrm-amdgpu1_2.4.125-1ubuntu0.1\~24.04.1_amd64.deb …
Unpacking libdrm-amdgpu1:amd64 (2.4.125-1ubuntu0.1\~24.04.1) …
Selecting previously unselected package libpciaccess0:amd64.
Preparing to unpack …/03-libpciaccess0_0.17-3ubuntu0.24.04.2_amd64.deb …
Unpacking libpciaccess0:amd64 (0.17-3ubuntu0.24.04.2) …
Selecting previously unselected package libdrm-intel1:amd64.
Preparing to unpack …/04-libdrm-intel1_2.4.125-1ubuntu0.1\~24.04.1_amd64.deb …
Unpacking libdrm-intel1:amd64 (2.4.125-1ubuntu0.1\~24.04.1) …
Selecting previously unselected package libllvm20:amd64.
Preparing to unpack …/05-libllvm20_1%3a20.1.2-0ubuntu1\~24.04.2_amd64.deb …
Unpacking libllvm20:amd64 (1:20.1.2-0ubuntu1\~24.04.2) …
Selecting previously unselected package libx11-xcb1:amd64.
Preparing to unpack …/06-libx11-xcb1_2%3a1.8.7-1build1_amd64.deb …
Unpacking libx11-xcb1:amd64 (2:1.8.7-1build1) …
Selecting previously unselected package libxcb-dri3-0:amd64.
Preparing to unpack …/07-libxcb-dri3-0_1.15-1ubuntu2_amd64.deb …
Unpacking libxcb-dri3-0:amd64 (1.15-1ubuntu2) …
Selecting previously unselected package libxcb-present0:amd64.
Preparing to unpack …/08-libxcb-present0_1.15-1ubuntu2_amd64.deb …
Unpacking libxcb-present0:amd64 (1.15-1ubuntu2) …
Selecting previously unselected package libxcb-randr0:amd64.
Preparing to unpack …/09-libxcb-randr0_1.15-1ubuntu2_amd64.deb …
Unpacking libxcb-randr0:amd64 (1.15-1ubuntu2) …
Selecting previously unselected package libxcb-sync1:amd64.
Preparing to unpack …/10-libxcb-sync1_1.15-1ubuntu2_amd64.deb …
Unpacking libxcb-sync1:amd64 (1.15-1ubuntu2) …
Selecting previously unselected package libxcb-xfixes0:amd64.
Preparing to unpack …/11-libxcb-xfixes0_1.15-1ubuntu2_amd64.deb …
Unpacking libxcb-xfixes0:amd64 (1.15-1ubuntu2) …
Selecting previously unselected package libxshmfence1:amd64.
Preparing to unpack …/12-libxshmfence1_1.3-1build5_amd64.deb …
Unpacking libxshmfence1:amd64 (1.3-1build5) …
Selecting previously unselected package mesa-libgallium:amd64.
Preparing to unpack …/13-mesa-libgallium_25.2.8-0ubuntu0.24.04.1_amd64.deb …
Unpacking mesa-libgallium:amd64 (25.2.8-0ubuntu0.24.04.1) …
Selecting previously unselected package libgbm1:amd64.
Preparing to unpack …/14-libgbm1_25.2.8-0ubuntu0.24.04.1_amd64.deb …
Unpacking libgbm1:amd64 (25.2.8-0ubuntu0.24.04.1) …
Selecting previously unselected package libwayland-client0:amd64.
Preparing to unpack …/15-libwayland-client0_1.22.0-2.1build1_amd64.deb …
Unpacking libwayland-client0:amd64 (1.22.0-2.1build1) …
Selecting previously unselected package libxcb-shm0:amd64.
Preparing to unpack …/16-libxcb-shm0_1.15-1ubuntu2_amd64.deb …
Unpacking libxcb-shm0:amd64 (1.15-1ubuntu2) …
Selecting previously unselected package libegl-mesa0:amd64.
Preparing to unpack …/17-libegl-mesa0_25.2.8-0ubuntu0.24.04.1_amd64.deb …
Unpacking libegl-mesa0:amd64 (25.2.8-0ubuntu0.24.04.1) …
Selecting previously unselected package libgfortran5:amd64.
Preparing to unpack …/18-libgfortran5_14.2.0-4ubuntu2\~24.04.1_amd64.deb …
Unpacking libgfortran5:amd64 (14.2.0-4ubuntu2\~24.04.1) …
Selecting previously unselected package libvulkan1:amd64.
Preparing to unpack …/19-libvulkan1_1.3.275.0-1build1_amd64.deb …
Unpacking libvulkan1:amd64 (1.3.275.0-1build1) …
Selecting previously unselected package libgl1-mesa-dri:amd64.
Preparing to unpack …/20-libgl1-mesa-dri_25.2.8-0ubuntu0.24.04.1_amd64.deb …
Unpacking libgl1-mesa-dri:amd64 (25.2.8-0ubuntu0.24.04.1) …
Selecting previously unselected package libxcb-glx0:amd64.
Preparing to unpack …/21-libxcb-glx0_1.15-1ubuntu2_amd64.deb …
Unpacking libxcb-glx0:amd64 (1.15-1ubuntu2) …
Selecting previously unselected package libxxf86vm1:amd64.
Preparing to unpack …/22-libxxf86vm1_1%3a1.1.4-1build4_amd64.deb …
Unpacking libxxf86vm1:amd64 (1:1.1.4-1build4) …
Selecting previously unselected package libglx-mesa0:amd64.
Preparing to unpack …/23-libglx-mesa0_25.2.8-0ubuntu0.24.04.1_amd64.deb …
Unpacking libglx-mesa0:amd64 (25.2.8-0ubuntu0.24.04.1) …
Selecting previously unselected package liblttng-ust-common1t64:amd64.
Preparing to unpack …/24-liblttng-ust-common1t64_2.13.7-1.1ubuntu2_amd64.deb …
Unpacking liblttng-ust-common1t64:amd64 (2.13.7-1.1ubuntu2) …
Selecting previously unselected package liblttng-ust-ctl5t64:amd64.
Preparing to unpack …/25-liblttng-ust-ctl5t64_2.13.7-1.1ubuntu2_amd64.deb …
Unpacking liblttng-ust-ctl5t64:amd64 (2.13.7-1.1ubuntu2) …
Selecting previously unselected package liblttng-ust1t64:amd64.
Preparing to unpack …/26-liblttng-ust1t64_2.13.7-1.1ubuntu2_amd64.deb …
Unpacking liblttng-ust1t64:amd64 (2.13.7-1.1ubuntu2) …
Selecting previously unselected package mesa-vulkan-drivers:amd64.
Preparing to unpack …/27-mesa-vulkan-drivers_25.2.8-0ubuntu0.24.04.1_amd64.deb …
Unpacking mesa-vulkan-drivers:amd64 (25.2.8-0ubuntu0.24.04.1) …
Selecting previously unselected package libglvnd0:amd64.
Preparing to unpack …/28-libglvnd0_1.7.0-1build1_amd64.deb …
Unpacking libglvnd0:amd64 (1.7.0-1build1) …
Selecting previously unselected package libegl1:amd64.
Preparing to unpack …/29-libegl1_1.7.0-1build1_amd64.deb …
Unpacking libegl1:amd64 (1.7.0-1build1) …
Selecting previously unselected package libglx0:amd64.
Preparing to unpack …/30-libglx0_1.7.0-1build1_amd64.deb …
Unpacking libglx0:amd64 (1.7.0-1build1) …
Selecting previously unselected package libgl1:amd64.
Preparing to unpack …/31-libgl1_1.7.0-1build1_amd64.deb …
Unpacking libgl1:amd64 (1.7.0-1build1) …
Selecting previously unselected package libopengl0:amd64.
Preparing to unpack …/32-libopengl0_1.7.0-1build1_amd64.deb …
Unpacking libopengl0:amd64 (1.7.0-1build1) …
Selecting previously unselected package rhino3d.
Preparing to unpack …/33-rhino3d_9.0.26099.8259_amd64.deb …
Unpacking rhino3d (9.0.26099.8259) …
Selecting previously unselected package rhino-compute.
Preparing to unpack …/34-rhino-compute_9.0.26086.14170-wip_amd64.deb …
Unpacking rhino-compute (9.0.26086.14170-wip) …
Setting up libxcb-dri3-0:amd64 (1.15-1ubuntu2) …
Setting up libx11-xcb1:amd64 (2:1.8.7-1build1) …
Setting up libpciaccess0:amd64 (0.17-3ubuntu0.24.04.2) …
Setting up libxcb-xfixes0:amd64 (1.15-1ubuntu2) …
Setting up libglvnd0:amd64 (1.7.0-1build1) …
Setting up libxcb-glx0:amd64 (1.15-1ubuntu2) …
Setting up liblttng-ust-common1t64:amd64 (2.13.7-1.1ubuntu2) …
Setting up libxcb-shm0:amd64 (1.15-1ubuntu2) …
Setting up libopengl0:amd64 (1.7.0-1build1) …
Setting up libxxf86vm1:amd64 (1:1.1.4-1build4) …
Setting up libxcb-present0:amd64 (1.15-1ubuntu2) …
Setting up libxcb-sync1:amd64 (1.15-1ubuntu2) …
Setting up libllvm20:amd64 (1:20.1.2-0ubuntu1\~24.04.2) …
Setting up libgfortran5:amd64 (14.2.0-4ubuntu2\~24.04.1) …
Setting up libvulkan1:amd64 (1.3.275.0-1build1) …
Setting up libxshmfence1:amd64 (1.3-1build5) …
Setting up libxcb-randr0:amd64 (1.15-1ubuntu2) …
Setting up liblttng-ust-ctl5t64:amd64 (2.13.7-1.1ubuntu2) …
Setting up libdrm-common (2.4.125-1ubuntu0.1\~24.04.1) …
Setting up libwayland-client0:amd64 (1.22.0-2.1build1) …
Setting up liblttng-ust1t64:amd64 (2.13.7-1.1ubuntu2) …
Setting up libdrm2:amd64 (2.4.125-1ubuntu0.1\~24.04.1) …
Setting up libdrm-amdgpu1:amd64 (2.4.125-1ubuntu0.1\~24.04.1) …
Setting up mesa-vulkan-drivers:amd64 (25.2.8-0ubuntu0.24.04.1) …
Setting up libdrm-intel1:amd64 (2.4.125-1ubuntu0.1\~24.04.1) …
Setting up mesa-libgallium:amd64 (25.2.8-0ubuntu0.24.04.1) …
Setting up libgbm1:amd64 (25.2.8-0ubuntu0.24.04.1) …
Setting up libgl1-mesa-dri:amd64 (25.2.8-0ubuntu0.24.04.1) …
Setting up libegl-mesa0:amd64 (25.2.8-0ubuntu0.24.04.1) …
Setting up libegl1:amd64 (1.7.0-1build1) …
Setting up libglx-mesa0:amd64 (25.2.8-0ubuntu0.24.04.1) …
Setting up libglx0:amd64 (1.7.0-1build1) …
Setting up libgl1:amd64 (1.7.0-1build1) …
Setting up rhino3d (9.0.26099.8259) …
Setting up rhino-compute (9.0.26086.14170-wip) …
# # # # # # # # # # # # # # # # # # # #
#
# R H I N O C O M P U T E
#
# # # # # # # # # # # # # # # # # # # #
Rhino Compute has been installed successfully!
Next steps to get started:
1. Configure your API key:
sudo cp /etc/rhino-compute/environment.example /etc/rhino-compute/environment
sudo nano /etc/rhino-compute/environment
(Set RHINO_TOKEN to your Core-Hour Billing token
Set RHINO_COMPUTE_KEY to your own custom API Key)
save and close the file
2. Start the service:
sudo systemctl start rhino-compute
Other useful commands:
* Stop the service:
sudo systemctl stop rhino-compute
* Enable automatic startup on boot:
sudo systemctl enable rhino-compute
* Check the status:
sudo systemctl status rhino-compute
* Follow logs in real-time:
sudo journalctl -u rhino-compute -f
---
For non-systemd environments (i.e. docker containers):
1. Configure your API key:
cp /etc/rhino-compute/environment.example /etc/rhino-compute/environment
nano /etc/rhino-compute/environment
(Set RHINO_TOKEN to your Core-Hour Billing token
Set RHINO_COMPUTE_KEY to your own custom API Key)
save and close the file
2. Start rhino-compute:
rhino-compute-start
---
Logs are written to: /var/log/rhino-compute
Processing triggers for libc-bin (2.39-0ubuntu8.7) …
Scanning processes…
Scanning linux images…
Running kernel seems to be up-to-date.
No services need to be restarted.
No containers need to be restarted.
No user sessions are running outdated binaries.
No VM guests are running outdated hypervisor (qemu) binaries on this host.
root@rhino-test:/home/tl# cp /etc/rhino-compute/environment.example /etc/rhino-compute/environment
root@rhino-test:/home/tl# nano /etc/rhino-compute/environment
root@rhino-test:/home/tl# apt install yak-cli
Reading package lists… Done
Building dependency tree… Done
Reading state information… Done
The following NEW packages will be installed:
yak-cli
0 upgraded, 1 newly installed, 0 to remove and 128 not upgraded.
Need to get 25.8 MB of archives.
After this operation, 0 B of additional disk space will be used.
Get:1 https://mcneel-packages.s3.amazonaws.com/deb stable/main amd64 yak-cli amd64 0.15.0-wip \[25.8 MB\]
Fetched 25.8 MB in 12s (2,244 kB/s)
Selecting previously unselected package yak-cli.
(Reading database … 89148 files and directories currently installed.)
Preparing to unpack …/yak-cli_0.15.0-wip_amd64.deb …
Unpacking yak-cli (0.15.0-wip) …
Setting up yak-cli (0.15.0-wip) …
Scanning processes…
Scanning linux images…
Running kernel seems to be up-to-date.
No services need to be restarted.
No containers need to be restarted.
No user sessions are running outdated binaries.
No VM guests are running outdated hypervisor (qemu) binaries on this host.
root@rhino-test:/home/tl#
And when I ran the hops in Rhino 8, I got the same error.
error
tl@rhino-test:~$ sudo systemctl status rhino-compute
[sudo] password for tl:
● rhino-compute.service - Rhino Compute Server
Loaded: loaded (/usr/lib/systemd/system/rhino-compute.service; enabled>
Active: active (running) since Fri 2026-04-10 07:54:18 UTC; 30s ago
Docs:
Main PID: 752 (rhino.compute)
Tasks: 16 (limit: 9431)
Memory: 80.2M (peak: 80.9M)
CPU: 1.270s
CGroup: /system.slice/rhino-compute.service
└─752 /usr/lib/rhino-compute/rhino.compute/rhino.compute --url>
Apr 10 07:54:18 rhino-test systemd[1]: Started rhino-compute.service - Rhin>
Apr 10 07:54:20 rhino-test rhino-compute[752]: RC [07:54:20 INF] Rhino com>
Apr 10 07:54:20 rhino-test rhino-compute[752]: RC [07:54:20 INF] Now liste>
Apr 10 07:54:20 rhino-test rhino-compute[752]: RC [07:54:20 INF] Applicati>
Apr 10 07:54:20 rhino-test rhino-compute[752]: RC [07:54:20 INF] Hosting e>
Apr 10 07:54:20 rhino-test rhino-compute[752]: RC [07:54:20 INF] Content r>
tl@rhino-test:~$ sudo journalctl -u rhino-compute -f
Apr 10 07:54:18 rhino-test systemd[1]: Started rhino-compute.service - Rhino Compute Server.
Apr 10 07:54:20 rhino-test rhino-compute[752]: RC [07:54:20 INF] Rhino compute started at 4/10/2026 7:54:20 AM
Apr 10 07:54:20 rhino-test rhino-compute[752]: RC [07:54:20 INF] Now listening on: http://0.0.0.0:5000
Apr 10 07:54:20 rhino-test rhino-compute[752]: RC [07:54:20 INF] Application started. Press Ctrl+C to shut down.
Apr 10 07:54:20 rhino-test rhino-compute[752]: RC [07:54:20 INF] Hosting environment: Production
Apr 10 07:54:20 rhino-test rhino-compute[752]: RC [07:54:20 INF] Content root path: /usr/lib/rhino-compute
Apr 10 07:55:03 rhino-test rhino-compute[752]: RC [07:55:03 INF] Starting compute.geometry instance on port 6001
Apr 10 07:55:04 rhino-test rhino-compute[1086]: CG [07:55:04 INF] Child process started at 4/10/2026 7:55:04 AM
Apr 10 07:55:04 rhino-test rhino-compute[1086]: CG [07:55:04 INF] Compute 9.0.0.0, Rhino 9.0.26099.1000
Apr 10 07:55:09 rhino-test rhino-compute[1086]: CG [07:55:09 INF] (1/4) Loading rhino commands plugin
Apr 10 07:55:09 rhino-test rhino-compute[1086]: CG [07:55:09 ERR] Error loading rhino commands plugin.
Apr 10 07:55:09 rhino-test rhino-compute[1086]: CG [07:55:09 INF] (2/4) Loading rhino scripting plugin
Apr 10 07:55:09 rhino-test rhino-compute[1086]: CG [07:55:09 ERR] Error loading rhino scripting plugin. Grasshopper script components are going to fail
Apr 10 07:55:09 rhino-test rhino-compute[1086]: CG [07:55:09 INF] (3/4) Loading grasshopper
Apr 10 07:55:10 rhino-test rhino-compute[1086]: CG [07:55:10 INF] (4/4) Loading compute plug-ins
Apr 10 07:55:10 rhino-test rhino-compute[752]: RC [07:55:10 INF] Starting compute.geometry instance on port 6002
Apr 10 07:55:10 rhino-test rhino-compute[1086]: CG [07:55:10 INF] Now listening on: http://localhost:6001
Apr 10 07:55:10 rhino-test rhino-compute[1086]: CG [07:55:10 INF] Application started. Press Ctrl+C to shut down.
Apr 10 07:55:10 rhino-test rhino-compute[1086]: CG [07:55:10 INF] Hosting environment: Production
Apr 10 07:55:10 rhino-test rhino-compute[1086]: CG [07:55:10 INF] Content root path: /usr/lib/rhino-compute
Apr 10 07:55:10 rhino-test rhino-compute[752]: RC [07:55:10 INF] Starting compute.geometry instance on port 6003
Apr 10 07:55:10 rhino-test rhino-compute[752]: RC [07:55:10 INF] Starting compute.geometry instance on port 6004
Apr 10 07:55:11 rhino-test rhino-compute[1111]: CG [07:55:11 INF] Child process started at 4/10/2026 7:55:11 AM
Apr 10 07:55:11 rhino-test rhino-compute[1111]: CG [07:55:11 INF] Compute 9.0.0.0, Rhino 9.0.26099.1000
Apr 10 07:55:11 rhino-test rhino-compute[1119]: CG [07:55:11 INF] Child process started at 4/10/2026 7:55:11 AM
Apr 10 07:55:11 rhino-test rhino-compute[1119]: CG [07:55:11 INF] Compute 9.0.0.0, Rhino 9.0.26099.1000
Apr 10 07:55:11 rhino-test rhino-compute[1126]: CG [07:55:11 INF] Child process started at 4/10/2026 7:55:11 AM
Apr 10 07:55:11 rhino-test rhino-compute[1126]: CG [07:55:11 INF] Compute 9.0.0.0, Rhino 9.0.26099.1000
Apr 10 07:55:16 rhino-test rhino-compute[1111]: CG [07:55:16 INF] (1/4) Loading rhino commands plugin
Apr 10 07:55:16 rhino-test rhino-compute[1111]: CG [07:55:16 ERR] Error loading rhino commands plugin.
Apr 10 07:55:16 rhino-test rhino-compute[1111]: CG [07:55:16 INF] (2/4) Loading rhino scripting plugin
Apr 10 07:55:16 rhino-test rhino-compute[1111]: CG [07:55:16 ERR] Error loading rhino scripting plugin. Grasshopper script components are going to fail
Apr 10 07:55:16 rhino-test rhino-compute[1111]: CG [07:55:16 INF] (3/4) Loading grasshopper
Apr 10 07:55:16 rhino-test rhino-compute[1119]: CG [07:55:16 INF] (1/4) Loading rhino commands plugin
Apr 10 07:55:16 rhino-test rhino-compute[1119]: CG [07:55:16 ERR] Error loading rhino commands plugin.
Apr 10 07:55:16 rhino-test rhino-compute[1119]: CG [07:55:16 INF] (2/4) Loading rhino scripting plugin
Apr 10 07:55:16 rhino-test rhino-compute[1119]: CG [07:55:16 ERR] Error loading rhino scripting plugin. Grasshopper script components are going to fail
Apr 10 07:55:16 rhino-test rhino-compute[1119]: CG [07:55:16 INF] (3/4) Loading grasshopper
Apr 10 07:55:16 rhino-test rhino-compute[1111]: CG [07:55:16 INF] (4/4) Loading compute plug-ins
Apr 10 07:55:16 rhino-test rhino-compute[1119]: CG [07:55:16 INF] (4/4) Loading compute plug-ins
Apr 10 07:55:16 rhino-test rhino-compute[1086]: terminate called after throwing an instance of ‘PAL_SEHException’
Apr 10 07:55:16 rhino-test rhino-compute[1126]: CG [07:55:16 INF] (1/4) Loading rhino commands plugin
Apr 10 07:55:16 rhino-test rhino-compute[1126]: CG [07:55:16 ERR] Error loading rhino commands plugin.
Apr 10 07:55:16 rhino-test rhino-compute[1126]: CG [07:55:16 INF] (2/4) Loading rhino scripting plugin
Apr 10 07:55:16 rhino-test rhino-compute[1126]: CG [07:55:16 ERR] Error loading rhino scripting plugin. Grasshopper script components are going to fail
Apr 10 07:55:16 rhino-test rhino-compute[1126]: CG [07:55:16 INF] (3/4) Loading grasshopper
Apr 10 07:55:16 rhino-test rhino-compute[1126]: CG [07:55:16 INF] (4/4) Loading compute plug-ins
Apr 10 07:55:16 rhino-test rhino-compute[752]: RC [07:55:16 ERR] HTTP POST /io responded 500 in 13680.4602 ms
Apr 10 07:55:16 rhino-test rhino-compute[752]: System.Net.Http.HttpRequestException: An error occurred while sending the request.
Apr 10 07:55:16 rhino-test rhino-compute[752]: —> System.Net.Http.HttpIOException: The response ended prematurely. (ResponseEnded)
Apr 10 07:55:16 rhino-test rhino-compute[752]: at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
Apr 10 07:55:16 rhino-test rhino-compute[752]: — End of inner exception stack trace —
Apr 10 07:55:16 rhino-test rhino-compute[752]: at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
Apr 10 07:55:16 rhino-test rhino-compute[752]: at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
Apr 10 07:55:16 rhino-test rhino-compute[752]: at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
Apr 10 07:55:16 rhino-test rhino-compute[752]: at System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
Apr 10 07:55:16 rhino-test rhino-compute[752]: at rhino.compute.ReverseProxyModule.SendProxyRequest(HttpRequest initialRequest, HttpMethod method, String baseurl) in /home/runner/work/compute.rhino3d/compute.rhino3d/src/rhino.compute/ReverseProxy.cs:line 145
Apr 10 07:55:16 rhino-test rhino-compute[752]: at rhino.compute.ReverseProxyModule.ReverseProxyPost(HttpRequest req, HttpResponse res) in /home/runner/work/compute.rhino3d/compute.rhino3d/src/rhino.compute/ReverseProxy.cs:line 183
Apr 10 07:55:16 rhino-test rhino-compute[752]: at rhino.compute.ApiKeyMiddleware.InvokeAsync(HttpContext context) in /home/runner/work/compute.rhino3d/compute.rhino3d/src/rhino.compute/ApiKeyMiddleware.cs:line 34
Apr 10 07:55:16 rhino-test rhino-compute[752]: at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
Apr 10 07:55:16 rhino-test rhino-compute[752]: RC [07:55:16 ERR] Connection id “0HNKMQPSGPDGR”, Request id “0HNKMQPSGPDGR:00000001”: An unhandled exception was thrown by the application.
Apr 10 07:55:16 rhino-test rhino-compute[752]: System.Net.Http.HttpRequestException: An error occurred while sending the request.
Apr 10 07:55:16 rhino-test rhino-compute[752]: —> System.Net.Http.HttpIOException: The response ended prematurely. (ResponseEnded)
Apr 10 07:55:16 rhino-test rhino-compute[752]: at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
Apr 10 07:55:16 rhino-test rhino-compute[752]: — End of inner exception stack trace —
Apr 10 07:55:16 rhino-test rhino-compute[752]: at System.Net.Http.HttpConnection.SendAsync(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
Apr 10 07:55:16 rhino-test rhino-compute[752]: at System.Net.Http.HttpConnectionPool.SendWithVersionDetectionAndRetryAsync(HttpRequestMessage request, Boolean async, Boolean doRequestAuth, CancellationToken cancellationToken)
Apr 10 07:55:16 rhino-test rhino-compute[752]: at System.Net.Http.DiagnosticsHandler.SendAsyncCore(HttpRequestMessage request, Boolean async, CancellationToken cancellationToken)
Apr 10 07:55:16 rhino-test rhino-compute[752]: at System.Net.Http.HttpClient.g__Core|83_0(HttpRequestMessage request, HttpCompletionOption completionOption, CancellationTokenSource cts, Boolean disposeCts, CancellationTokenSource pendingRequestsCts, CancellationToken originalCancellationToken)
Apr 10 07:55:16 rhino-test rhino-compute[752]: at rhino.compute.ReverseProxyModule.SendProxyRequest(HttpRequest initialRequest, HttpMethod method, String baseurl) in /home/runner/work/compute.rhino3d/compute.rhino3d/src/rhino.compute/ReverseProxy.cs:line 145
Apr 10 07:55:16 rhino-test rhino-compute[752]: at rhino.compute.ReverseProxyModule.ReverseProxyPost(HttpRequest req, HttpResponse res) in /home/runner/work/compute.rhino3d/compute.rhino3d/src/rhino.compute/ReverseProxy.cs:line 183
Apr 10 07:55:16 rhino-test rhino-compute[752]: at rhino.compute.ApiKeyMiddleware.InvokeAsync(HttpContext context) in /home/runner/work/compute.rhino3d/compute.rhino3d/src/rhino.compute/ApiKeyMiddleware.cs:line 34
Apr 10 07:55:16 rhino-test rhino-compute[752]: at Serilog.AspNetCore.RequestLoggingMiddleware.Invoke(HttpContext httpContext)
Apr 10 07:55:16 rhino-test rhino-compute[752]: at Microsoft.AspNetCore.Server.Kestrel.Core.Internal.Http.HttpProtocol.ProcessRequests[TContext](IHttpApplication`1 application)
Apr 10 07:55:17 rhino-test rhino-compute[1119]: CG [07:55:17 INF] Now listening on: http://localhost:6003
Apr 10 07:55:17 rhino-test rhino-compute[1119]: CG [07:55:17 INF] Application started. Press Ctrl+C to shut down.
Apr 10 07:55:17 rhino-test rhino-compute[1119]: CG [07:55:17 INF] Hosting environment: Production
Apr 10 07:55:17 rhino-test rhino-compute[1119]: CG [07:55:17 INF] Content root path: /usr/lib/rhino-compute
Apr 10 07:55:17 rhino-test rhino-compute[1126]: CG [07:55:17 INF] Now listening on: http://localhost:6004
Apr 10 07:55:17 rhino-test rhino-compute[1111]: CG [07:55:17 INF] Now listening on: http://localhost:6002
Apr 10 07:55:17 rhino-test rhino-compute[1126]: CG [07:55:17 INF] Application started. Press Ctrl+C to shut down.
Apr 10 07:55:17 rhino-test rhino-compute[1126]: CG [07:55:17 INF] Hosting environment: Production
Apr 10 07:55:17 rhino-test rhino-compute[1126]: CG [07:55:17 INF] Content root path: /usr/lib/rhino-compute
Apr 10 07:55:17 rhino-test rhino-compute[1111]: CG [07:55:17 INF] Application started. Press Ctrl+C to shut down.
Apr 10 07:55:17 rhino-test rhino-compute[1111]: CG [07:55:17 INF] Hosting environment: Production
Apr 10 07:55:17 rhino-test rhino-compute[1111]: CG [07:55:17 INF] Content root path: /usr/lib/rhino-compute
Apr 10 07:55:20 rhino-test rhino-compute[752]: RC [07:55:20 INF] Max concurrent requests = 1
Apr 10 07:56:20 rhino-test rhino-compute[752]: RC [07:56:20 INF] Max concurrent requests = 0
Apr 10 07:57:20 rhino-test rhino-compute[752]: RC [07:57:20 INF] Max concurrent requests = 0
Apr 10 07:58:20 rhino-test rhino-compute[752]: RC [07:58:20 INF] Max concurrent requests = 0
Apr 10 07:59:20 rhino-test rhino-compute[752]: RC [07:59:20 INF] Max concurrent requests = 0
Apr 10 08:00:20 rhino-test rhino-compute[752]: RC [08:00:20 INF] Max concurrent requests = 0
And the configuration of the password/key and the token is shown in the image below.
The Rhino token should be valid because I use it in a different window, Rhino 7 compute solution.
The specs of the machine are listed below.
specs
root@rhino-test:/home/tl# free -h
total used free shared buff/cache available
Mem: 7.8Gi 751Mi 6.8Gi 119Mi 577Mi 7.0Gi
Swap: 0B 0B 0B
root@rhino-test:/home/tl# lscpu
Architecture: x86_64
CPU op-mode(s): 32-bit, 64-bit
Address sizes: 39 bits physical, 48 bits virtual
Byte Order: Little Endian
CPU(s): 4
On-line CPU(s) list: 0-3
Vendor ID: GenuineIntel
Model name: Intel(R) Core(TM) i5-8250U CPU @ 1.60GHz
BIOS Model name: CPU @ 0.0GHz
BIOS CPU family: 0
CPU family: 6
Model: 142
Thread(s) per core: 1
Core(s) per socket: 4
Socket(s): 1
Stepping: 10
BogoMIPS: 3600.00
Flags: fpu vme de pse tsc msr pae mce cx8 apic sep mtr
r pge mca cmov pat pse36 clflush mmx fxsr sse s
se2 ht syscall nx rdtscp lm constant_tsc rep_go
od nopl xtopology nonstop_tsc cpuid tsc_known_f
req pni pclmulqdq ssse3 fma cx16 pcid sse4_1 ss
e4_2 x2apic movbe popcnt aes xsave avx f16c rdr
and hypervisor lahf_lm abm 3dnowprefetch pti fs
gsbase bmi1 avx2 bmi2 invpcid rdseed adx clflus
hopt arat md_clear flush_l1d
Virtualization features:
Hypervisor vendor: KVM
Virtualization type: full
Caches (sum of all):
L1d: 128 KiB (4 instances)
L1i: 128 KiB (4 instances)
L2: 1 MiB (4 instances)
L3: 24 MiB (4 instances)
NUMA:
NUMA node(s): 1
NUMA node0 CPU(s): 0-3
Vulnerabilities:
Gather data sampling: Unknown: Dependent on hypervisor status
Indirect target selection: Vulnerable
Itlb multihit: KVM: Mitigation: VMX unsupported
L1tf: Mitigation; PTE Inversion
Mds: Mitigation; Clear CPU buffers; SMT Host state u
nknown
Meltdown: Mitigation; PTI
Mmio stale data: Mitigation; Clear CPU buffers; SMT Host state u
nknown
Reg file data sampling: Not affected
Retbleed: Vulnerable
Spec rstack overflow: Not affected
Spec store bypass: Vulnerable
Spectre v1: Mitigation; usercopy/swapgs barriers and __user
pointer sanitization
Spectre v2: Mitigation; Retpolines; STIBP disabled; RSB fil
ling; PBRSB-eIBRS Not affected; BHI Retpoline
Srbds: Unknown: Dependent on hypervisor status
Tsa: Not affected
Tsx async abort: Not affected
Vmscape: Not affected
root@rhino-test:/home/tl# df -h
Filesystem Size Used Avail Use% Mounted on
tmpfs 795M 1.1M 794M 1% /run
/dev/mapper/ubuntu--vg-ubuntu--lv 12G 4.6G 6.1G 44% /
tmpfs 3.9G 0 3.9G 0% /dev/shm
tmpfs 5.0M 0 5.0M 0% /run/lock
/dev/sda2 2.0G 104M 1.7G 6% /boot
tmpfs 795M 12K 795M 1% /run/user/1000
root@rhino-test:/home/tl#
I also tried the fix you linked, but it did nothing for me.
I hop this info is helpful
Thanks. I was able to reproduce your issue. I believe what is happening is that when we start the rhino-compute service, we should not do so as root. I do not see how it is that you started rhino-compute.
When I ran sudo systemctl start rhino-compute as root:
root@mysystem:/home/ubuntu# sudo systemctl start rhino-compute
and tried to connect with hops, I get the exact same error as what you report.
So, I stopped the service: sudo systemctl stop rhino-compute
Exit sudo: exit
And started rhino-compute as the user (in your case, tl): sudo systemctl start rhino-compute
After this, I was able to hit the server with hops as expected. Let me know if this helps.
I will update the instructions to reflect this in case it fixes this for you.
