isard-vdi / isard

Isard VDI. Open Source KVM Virtual Desktops based on KVM Linux and dockers. Please use https://gitlab.com/isard/isardvdi

Home Page:http://www.isardvdi.com

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Realice una actualización de la versión 2.2.0 a la versión 4.8.16 y no me hace login

garana821 opened this issue · comments

Actualice y el la primera pantalla me sale sin login
image

y en el area de admin no hace login.
image

en los logs, el contenedor de isard-engine tiene error al actualizar.

isard-engine | 2021/10/21 13:16:32 540 - INFO - MainThread: UPGRADING users VERSION 13
isard-engine | TABLES TO BE CREATED:
isard-engine | 18
isard-engine | 7
isard-engine | Traceback (most recent call last):
isard-engine | File "start.py", line 29, in
isard-engine | u=Upgrade()
isard-engine | File "/isard/initdb/upgrade.py", line 56, in init
isard-engine | self.upgrade_if_needed()
isard-engine | File "/isard/initdb/upgrade.py", line 70, in upgrade_if_needed
isard-engine | eval('self.' + table + '(' + str(version) + ')')
isard-engine | File "", line 1, in
isard-engine | File "/isard/initdb/upgrade.py", line 834, in users
isard-engine | not r.table(table)
isard-engine | File "/usr/lib/python3.8/site-packages/rethinkdb/ast.py", line 146, in run
isard-engine | return c._start(self, **global_optargs)
isard-engine | File "/usr/lib/python3.8/site-packages/rethinkdb/net.py", line 749, in _start
isard-engine | return self._instance.run_query(q, global_optargs.get("noreply", False))
isard-engine | File "/usr/lib/python3.8/site-packages/rethinkdb/net.py", line 578, in run_query
isard-engine | raise res.make_error(query)
isard-engine | rethinkdb.errors.ReqlNonExistenceError: Cannot perform pluck on a non-object non-sequence null in:
isard-engine | r.table('users').get('local-default-admin-admin').pluck('photo')
isard-engine | ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
isard-engine |
isard-engine | Error Upgrading...
isard-engine | 2021/10/21 13:16:46 352 - INFO - MainThread: Database isard found.
isard-engine | 2021/10/21 13:16:46 352 - INFO - MainThread: TABLES TO BE CREATED:
isard-engine | 2021/10/21 13:16:46 352 - INFO - MainThread: TABLES TO BE DELETED:
isard-engine | 2021/10/21 13:16:46 352 - INFO - MainThread: Database engine already present...
isard-engine | 2021/10/21 13:16:46 358 - INFO - MainThread: Your actual database version is: 7
isard-webapp | 2021/10/21 13:15:15 669 - INFO - MainThread: HypervisorsThread Started
isard-webapp | 2021/10/21 13:15:15 675 - INFO - MainThread: ConfigThread Started
isard-webapp | 2021/10/21 13:15:15 683 - INFO - MainThread: ResourcesThread Started

En la primera imagen quizás no debe estar saliendo el login porque no hay ninguna categoría seleccionada para que salga en el login principal.
En la segunda imagen se esta intentando acceder a la categoría isard-admin des de /login/isard-admin
Para hacer login de usuarios de la categoria default puedes usar /login/default
De todos modos parece que no se ha aplicado esta migración de la base de datos:
https://gitlab.com/isard/isardvdi/-/blob/main/engine/engine/initdb/upgrade.py#L840
Por favor puedes intentar entrar via /login/default y /isard-admin/login

No me funciona realizando /login/default y /isard-admin/login, hice una instalación nueva y el hypervisor no inicia queda en error.
Realice el trobleshoting 40.2.1.1 Explanation, modificando los valores y reiniciando el contenedor isard-engine y sigue en error.
image

El log del isard-engine muestra este error
image

Se me ocurren varias cosas que pueden estar dando el problema con el hypervisor:
a) Comprueba editando el hypervisor que el puerto es el 2022
b) Comprueba que en el host no está arrancado el libvirt (systemctl status libvirtd)
c) Comprueba que el apparmor no esté bloqueando acceso (systemctl disable apparmor)

Después de cada paso hacer un docker-compose down y un docker-compose up -d para comprobar si se ha solucionado.

Si tienes una versión 4 también puedes eliminar el hypervisor de la interfaz y hacer un docker-compose down isard-hypervisor && docker-compose up -d isard-hypervisor. Los hypervisores en esta versión salen y entran solo a través de api y deberían entrar con los parámetros correctos por defecto.

Si no se soluciona, puedes tambien borrar las claves ssh existentes:

  1. docker-compose down
  2. rm -rf /opt/isard/sshkeys
  3. docker-compose up -d

Aunque tiene pinta de un problema de permisos/conflicto de libvirt. Nos serian útiles los logs durante el inicio de isard-hypervisor (docker logs isard-hypervisor)

Hice lo que me recomendaron y sigo con el hypervisor offline, estos son los logs del isard-hypervisor
image

Los logs del api
image

Yes, I think now it is because there is no internal docker connection because of the default isard-network ip used already used in another docker network in your system.

It is easy to modify it in isardvdi.cfg the variable DOCKER_NET (should be /24):
https://gitlab.com/isard/isardvdi/-/blob/main/isardvdi.cfg.example#L192

By default it is:

# ------ Docker networking ---------------------------------------------------
## Assign a docker /24 network. The host part will be set by system
## You should avoid setting a network that exists in your infrastructure
## or in isard configuration. Set only the /24 part!
#DOCKER_NET=172.18.255

So modify it to another network and uncomment. After that execute build.sh and docker-compose up -d.

NOTE: Maybe before bringing it up again it is needed to remove the existing isard-network:

docker network rm isard-network

Saludos!
No me funcionó, sigue igual. solo cambio el segmento de red.
image

Entre al hypervisor y al parecer no levanta los servicios del virsh
image

No crea el socket
image

El hypervisor no arranca porque no consigue configurar la VPN.
Por favor, puedes probar si el hypervisor puede conectar con la api?

docker-compose exec isard-hypervisor ping -c1 isard-api

Lo solicitado
image
isard-vpn
image

este es el log del isard-vpn

El kernel de la máquina host es <5.4 seguramente (puedes mirar con uname -a) y no lleva el módulo de kernel por defecto. Hay que instalarlo desde backports: https://wireguard.how/server/debian/

# lsmod | grep wireguard
wireguard              81920  0
curve25519_x86_64      36864  1 wireguard
libchacha20poly1305    16384  1 wireguard
libblake2s             16384  1 wireguard
libcurve25519_generic    49152  2 curve25519_x86_64,wireguard
ip6_udp_tunnel         16384  2 geneve,wireguard
udp_tunnel             20480  2 geneve,wireguard

Por favor, puedes mirar si el hypervisor puede acceder a la api?

docker-compose exec isard-hypervisor wget http://isard-api:5000

Y mirar que procesos hay en isard-api?

docker-compose exec isard-api ps -a

@jvinolas Efectivamente el kernel es menor a 5.4 y el wireguard no esta instalado debido a que yo realice la instalación descargando el docker-compose, un PULL y un UP -d
Linux vdi 4.9.0-16-amd64 #1 SMP Debian 4.9.272-2 (2021-07-19) x86_64 GNU/Linux

@sim6 cuando consulto el api del hypervisor me genera un 404,
image

esta es la salida del api:

root@isard# docker-compose exec isard-api ps -a
PID   USER     TIME  COMMAND
    1 root      0:00 {run.sh} /bin/sh /run.sh
    6 root      0:16 python3 startv3.py
   20 root      0:00 ps -a
root@isard#

Pues el fallo de conexión a la api hace pinta de ser un problema con la red, que por lo que veo es la 172.20.255.X

Puedes facilitarnos las IPs de las redes docker que tienes en el sistema?

# for e in $(docker network ls --format '{{.Name}}') ; do docker network inspect $e --format '{{ printf "%-40s" .Name}} {{.IPAM.Config}}'; done

bridge                                   [{172.17.0.0/16  172.17.0.1 map[]}]
host                                     []
isard-network                            [{172.18.255.0/24   map[]}]
none                                     []
server-ldap_default                      [{172.19.0.0/16  172.19.0.1 map[]}]

obviamente, en la recomendación anterior me sugeriste que modificará el archivo isardvdi.cfg la opcion

# ------ Docker networking ---------------------------------------------------
## Assign a docker /24 network. The host part will be set by system
## You should avoid setting a network that exists in your infrastructure
## or in isard configuration. Set only the /24 part!
#DOCKER_NET=172.18.255

#408 (comment)

Esta es la salida

root@sard# for e in $(docker network ls --format '{{.Name}}') ; do docker network inspect $e --format '{{ printf "%-40s" .Name}} {{.IPAM.Config}}'; done
bridge                                   [{172.17.0.0/16   map[]}]
host                                     []
isard-network                            [{172.20.255.0/24   map[]}]
none                                     []

Solo era para asegurar que tampoco se estaba solapando la 172.20.255, que ya veo que no. No tienes conectividad entre los contenedores... si puedes hacemos unas comprobaciones básicas:

  1. Comparten la red isard-network los contenedores que comentaba @sim6 ?
# docker inspect -f '{{range $key, $value := .NetworkSettings.Networks}}{{$key}} {{end}}' isard-api
isard-network 
# docker inspect -f '{{range $key, $value := .NetworkSettings.Networks}}{{$key}} {{end}}' isard-hypervisor
isard-network 
  1. Están todos los contenedores en la red isard-network?
# docker network inspect -f '{{range .Containers}}{{.Name}} {{end}}' isard-network
isard-webapp isard-squid isard-guac isard-db isard-hypervisor isard-grafana isard-authentication isard-portal isard-api isard-websockify isard-toolbox isard-vpn isard-stats isard-static isard-influxdb isard-engine
  1. Pueden hacer ping de un contenedor al otro usando nombres?
# docker exec isard-hypervisor ping isard-api -c2
PING isard-api (172.20.255.10): 56 data bytes
64 bytes from 172.20.255.10: seq=0 ttl=64 time=0.187 ms
64 bytes from 172.20.255.10: seq=1 ttl=64 time=0.219 ms
  1. Y usando la IP de isard-api?
# docker exec isard-hypervisor ping 172.20.255.10 -c2
PING 172.20.255.10 (172.20.255.10): 56 data bytes
64 bytes from 172.20.255.10: seq=0 ttl=64 time=0.143 ms
  1. Tiene activado el ICC el docker (Inter Container Connection)? (si sale false está desactivado, cualquier otra cosa, incluso nada, indica que está activado)
# docker inspect -f '{{index .Options "com.docker.network.bridge.enable_icc"}}' isard-network

Si comparten la red

root@isard# docker inspect -f '{{range $key, $value := .NetworkSettings.Networks}}{{$key}} {{end}}' isard-api
isard-network 
root@sard# docker inspect -f '{{range $key, $value := .NetworkSettings.Networks}}{{$key}} {{end}}' isard-hypervisor
isard-network 

Si están todos los contenedores en la isard-network

root@isard# docker network inspect -f '{{range .Containers}}{{.Name}} {{end}}' isard-network
isard-static isard-toolbox isard-influxdb isard-db isard-authentication isard-guac isard-vpn isard-websockify isard-squid isard-hypervisor isard-webapp isard-engine isard-portal isard-api isard-stats isard-grafana 

Ping

root@isard# docker exec isard-hypervisor ping isard-api -c2
PING isard-api (172.20.255.10): 56 data bytes
64 bytes from 172.20.255.10: seq=0 ttl=64 time=0.074 ms
64 bytes from 172.20.255.10: seq=1 ttl=64 time=0.090 ms

--- isard-api ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.074/0.082/0.090 ms

root@isard# docker exec isard-hypervisor ping 172.20.255.10 -c2
PING 172.20.255.10 (172.20.255.10): 56 data bytes
64 bytes from 172.20.255.10: seq=0 ttl=64 time=0.087 ms
64 bytes from 172.20.255.10: seq=1 ttl=64 time=0.081 ms

--- 172.20.255.10 ping statistics ---
2 packets transmitted, 2 packets received, 0% packet loss
round-trip min/avg/max = 0.081/0.084/0.087 ms

Y si esta activado ICC
`root@isard# docker inspect -f '{{index .Options "com.docker.network.bridge.enable_icc"}}' isard-network

`
Sale vacio

Entonces si que accede a la API. En el mensaje anterior @sim6 olvidó poner el path. Este comando deberia funcionar:

 docker-compose exec isard-hypervisor wget -O - http://isard-api:5000/api/v3

Y por lo tanto deduzco que el problema es de la falta del módulo wireguard en el kernel del host. Deberías actualizar siguiendo las instrucciones en https://wireguard.how/server/debian/ desde backports.

Con la instalación de wireguard funcionó, cuando voy a la opcion de VPN me entrega un archivo isard-vpn.conf. ese lo debo agregar en el /etc/wireguard/ ???

El archivo que se pueden descargar los usuarios es para que puedan acceder a sus escritorios que tengan la red Wireguard. Este archivo se usa con la herramienta wg-quick isard-vpn.conf.

Podemos cerrar esta issue? Las proximas preferimos que las abras en http://gitlab.com/isard/isardvdi/-/issues

Perfecto ya podemos cerrarlo,

Gracias.

:) No dudes en abrir nuevas issues en gitlab.