Steps to configure incus ui to manage remote servers

I have the incus ui working locally ok but I’m stumped how to get my local incus ui
to manage remote servers.

I wrote down the steps I’ve done and from my local machine and on the 2 remote servers so far.

Using the CLI
> $ incus remote list

Does show the 2 remote servers:

$ incus remote ls
±----------------±-----------------------------------±--------------±------------±-------±-------±-------+
| NAME | URL | PROTOCOL | AUTH TYPE | PUBLIC | STATIC | GLOBAL |
±----------------±-----------------------------------±--------------±------------±-------±-------±-------+
| docker | https://docker.io | oci | none | YES | NO | NO |
±----------------±-----------------------------------±--------------±------------±-------±-------±-------+
| images | https://images.linuxcontainers.org | simplestreams | none | YES | NO | NO |
±----------------±-----------------------------------±--------------±------------±-------±-------±-------+
| local (current) | unix:// | incus | file access | NO | YES | NO |
±----------------±-----------------------------------±--------------±------------±-------±-------±-------+
| node2 | https://159.203.83.119:8444 | incus | tls | NO | NO | NO |
±----------------±-----------------------------------±--------------±------------±-------±-------±-------+
| node3 | https://159.203.82.2:8444 | incus | tls | NO | NO | NO |
±----------------±-----------------------------------±--------------±------------±-------±-------±-------+

But in the Incus UI I don’t see anything about node2 or node3 or the containers each are running?

Shouldn’t the UI see the same as the CLI ?

The incus client has some configuration that is local to the CLI client, and are not derived from the incusd service.

You can see them configuration at ~/.config/incus/config.yml. Namely, this includes the remote: configuration and the aliases.

$ cat ~/.config/incus/config.yml 
default-remote: local
remotes:
  docker:
    addr: https://docker.io
    protocol: oci
    public: true
  images:
    addr: https://images.linuxcontainers.org
    protocol: simplestreams
    public: true
  local:
    addr: unix://
    project: default
    protocol: incus
    public: false
aliases:
  alpine: exec @ARGS@ -- su -l alpine
  debian: exec @ARGS@ -- sudo --user debian --login
  fedora: exec @ARGS@ -- su -l fedora
  kalishell: 'exec @ARGS@ --mode interactive -- /bin/sh -xac $@${USER:-debian} - exec
    /bin/login -p -f '
  logs: file pull @ARGS@/var/log/syslog -
  shell: exec @ARGS@ -- su -l
  ubuntu: exec @ARGS@ -- sudo --user ubuntu --login
$

I don’t think the incus web UI provides a way to select nodes.

As far as I know, there are two ways of getting the web UI for node2:

  1. On your local machine, run incus webui node2:
    This should open http://127.0.0.1:XXXX/ui/?auth_token=blah in your browser, and proxy the API communication to node2. No additional setup is required beyond adding the remote node2, which you already have.
  2. Point your browser at https://159.203.82.2:8444 and login to it directly. This requires node2 to have the web UI installed (e.g. package incus-ui-canonical) and will prompt you to set up certificate authentication between your browser and the node. And you’ll have to trust the node’s self-signed certificate in your browser, unless you give the node a proper domain name and valid certificate.

From what I understood from docs you do not have to select a node to work with it.

Once the remote authentication token setup is done and the incus remote cmd, the UI should show all the servers & their instances.

I thought about option #2 I really wanted to avoid installing the UI on all Nodes instead of 1 mgmt node

I’ve tried w port 8444 and Port 8443 just in case that was a causing a problem for the UI but both cases the results were the same.

From the CLI it does show the Remote Incus servers

and I can use incus to manage the node2 incus.

$ incus ls node2:

±------------±--------±----------------------±-----------------------------------------------±----------±----------+
| NAME | STATE | IPV4 | IPV6 | TYPE | SNAPSHOTS |
±------------±--------±----------------------±-----------------------------------------------±----------±----------+
| cn2 | RUNNING | 10.242.65.45 (eth0) | fd42:7f44:6c98:e36f:1266:6aff:fe12:5b37 (eth0) | CONTAINER | 0 |
±------------±--------±----------------------±-----------------------------------------------±----------±----------+
| tenant1-cn1 | RUNNING | 10.225.81.11 (eth0) | fd42:199b:46ea:add8:1266:6aff:fea2:93fb (eth0) | CONTAINER | 0 |
±------------±--------±----------------------±-----------------------------------------------±----------±----------+
| tenant2-cn1 | RUNNING | 10.168.19.62 (eth0) | fd42:d927:ecee:9b01:1266:6aff:fe16:10f0 (eth0) | CONTAINER | 0 |
±------------±--------±----------------------±-----------------------------------------------±----------±----------+
| tenant3-cn1 | RUNNING | 10.124.165.242 (eth0) | fd42:2380:27f3:101f:1266:6aff:fed5:6553 (eth0) | CONTAINER | 0 |
±------------±--------±----------------------±-----------------------------------------------±----------±----------+
| tenant4-cn1 | RUNNING | 10.123.26.183 (eth0) | fd42:7537:2743:8ddd:1266:6aff:fe5a:f8d6 (eth0) | CONTAINER | 0 |
±------------±--------±----------------------±-----------------------------------------------±----------±----------+

Whereas the UI only shows the local machine & not anything about the remotes:

Maybe I am misunderstanding what I read but I thought the UI should show what the CLI does after the remotes have been registered

Simos
My config.yml does show the remote server info:

$ more ~/.config/incus/config.yml
default-remote: local
remotes:
docker:
addr: https://docker.io
protocol: oci
public: true
images:
addr: https://images.linuxcontainers.org
protocol: simplestreams
public: true
local:
addr: unix://
protocol: incus
public: false
node2:
addr: https://159.203.83.119:8443
auth_type: tls
project: default
protocol: incus
public: false
node3:
addr: https://159.203.82.2:8443
auth_type: tls
project: default
protocol: incus
public: false
aliases: {}
defaults:
list_format: “”

This means that the remote: information is stored locally to the client. Hence, if you need to use such information in the Web UI, it has to first be replicated there (if the Web UI supports such a feature).

Which part of the docs are you looking at exactly?

If I’m using the web UI at https://node1:8443 then as far as I can tell, it has no way of knowing about other nodes, and no feature to list or select other nodes.

config.yml is used by the local incus command line tool only. That’s why incus webui foo: works - the incus command line tool reads this file, opens and authenticates an API connection to remote “foo”, and proxies a local port. But as far as the web browser is concerned, it’s talking to directly to a server on 127.0.0.1. It has no way of accessing config.yml and hence no knowledge of other nodes.

As I understand it, the web UI is just Javascript which talks to the server API. It doesn’t have any local “client” configuration. (I guess it could be added, perhaps using one of the browser local storage APIs, but you’d still have to authenticate separately to each server)

I have used LXConsole in the past so I just installed it in an incus container & it recognizes both local & remote Incus servers & their instances ok.

So I’m just going to use that.

Thanks for the responses tho