Installation sur un mini PC

J’ai tout suivi mais ça n’a rien changé car bien configuré.

Une info interressante :

Utilisez ensuite la commande « newgrp » pour vous connecter au groupe « docker ». Cette commande vous évite de devoir vous déconnecter puis reconnecter à votre session.

newgrp docker

J’ai fait :

sudo mkdir /var/lib/gladysassistant
sudo chgrp docker /var/lib/gladysassistant
sudo chmod g+w  /var/lib/gladysassistant

L’installation s’est bien déroulée mais j’ai un problème en boucle :

docker logs gladys
> start:prod
> cross-env NODE_ENV=production node index.js

2023-06-17T12:57:10+0200 <error> index.js:15 (process.<anonymous>) unhandledRejection catched: Promise {
  <rejected> ConnectionError [SequelizeConnectionError]: SQLITE_CANTOPEN: unable to open database file
      at Database.<anonymous> (/src/server/node_modules/sequelize/lib/dialects/sqlite/connection-manager.js:52:25) {
    parent: [Error: SQLITE_CANTOPEN: unable to open database file] {
      errno: 14,
      code: 'SQLITE_CANTOPEN'
    },
    original: [Error: SQLITE_CANTOPEN: unable to open database file] {
      errno: 14,
      code: 'SQLITE_CANTOPEN'
    }
  }
}
2023-06-17T12:57:10+0200 <error> index.js:16 (process.<anonymous>) ConnectionError [SequelizeConnectionError]: SQLITE_CANTOPEN: unable to open database file
    at Database.<anonymous> (/src/server/node_modules/sequelize/lib/dialects/sqlite/connection-manager.js:52:25) {
  parent: [Error: SQLITE_CANTOPEN: unable to open database file] {
    errno: 14,
    code: 'SQLITE_CANTOPEN'
  },
  original: [Error: SQLITE_CANTOPEN: unable to open database file] {
    errno: 14,
    code: 'SQLITE_CANTOPEN'
  }
}

Une idée du problème ?

Je viens d’installer sqlite que je n’avais pas, encore une dépendance ?!
Mais ça ne change rien…

Edit, quand j’installe gladys en sudo, out fonctionne directement…
et pour le coup, la restauration a été rapide et m’a bien renvoyée vers ma fenetre de connexion.

Je pense que tu as installé docker en mode « rootless », mais Gladys à besoin des droits root pour plusieurs aspects.
Pour moi c’est une des pistes qui aurait généré tant d’erreurs.

Bah oui, il est installé sans root, c’est ce qui est indiqué dans la doc… on parle jamais de droits root mais de l’utilisateur pi.

Pour le coup, Le matériel recommandé | Gladys Assistant montre une installation en root donc sans problème en effet…

J’aurais donc tendance à dire qu’il faut modifier la doc soit en proposant une commande qu’un user peut utiliser soit indiquer qu’il faut être en root.

Il n’y a pas besoin d’être root. Comme expliqué dans la vidéo de @pierre-gilles lui il a lancé sa VM en tant que root mais c’est inutile! Dans le cas de l’installation normal avec un utilisateur normal il faut juste ajouter l’utilisateur dans le groupe docker.
Je l’ai fait la semaine dernière et cela marche très bien.

Et dans la vidéo on voit l’explication de la commande que tu as lancé après avoir fait le CURL alors qu’en tant normal il n’est pas necessaire de faire cela

docekrd-rootless-setuptool.sh install

image

Du coup quel est le retour de la commande suivante (remplace par ton nom d’utilisateur)

grep "hizo" /etc/group

Et pourquoi tu as créé et changé le groupe du dossier /var/lib/glasysassistant ?

Je pense que ce changement de groupe empêche l’ouverture de la base de donnée.

grep "hizo" /etc/group
adm:x:4:syslog,hizo
cdrom:x:24:hizo
sudo:x:27:hizo
dip:x:30:hizo
plugdev:x:46:hizo
lpadmin:x:122:hizo
lxd:x:133:hizo
hizo:x:1000:
sambashare:x:134:hizo
docker:x:999:hizo

Je pense que ce changement de groupe empêche l’ouverture de la base de donnée.

C’était pour tester vu qu’il REFUSAIT de toucher au dossier, comme indiquer dans l’un de mes message s :

docker: Error response from daemon: error while creating mount source path '/var/lib/gladysassistant': mkdir /var/lib/gladysassistant: permission denied.

Le problème viendrait de cette commande ?

docekrd-rootless-setuptool.sh install

Il est vrai que je n’ai pas retesté de ne pas la faire + restart ssh après ajout du groupe.
Mais je comprends que si mon user veut l’utiliser sans droits root, il faut lancer la commande.

Cette commande pas la peine de la faire

Meaculpa, je pensais que c’était nécessaire.

Donc, après une réinstallation complète :

hizo@hizo-minipc:~$ curl -sSL https://get.docker.com | sh
# Executing docker install script, commit: c2de0811708b6d9015ed1a2c80f02c9b70c8ce7b
+ sudo -E sh -c apt-get update -qq >/dev/null
+ sudo -E sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq apt-transport-https ca-certificates curl >/dev/null
+ sudo -E sh -c install -m 0755 -d /etc/apt/keyrings
+ sudo -E sh -c curl -fsSL "https://download.docker.com/linux/ubuntu/gpg" | gpg --dearmor --yes -o /etc/apt/keyrings/docker.gpg
+ sudo -E sh -c chmod a+r /etc/apt/keyrings/docker.gpg
+ sudo -E sh -c echo "deb [arch=amd64 signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu jammy stable" > /etc/apt/sources.list.d/docker.list
+ sudo -E sh -c apt-get update -qq >/dev/null
+ sudo -E sh -c DEBIAN_FRONTEND=noninteractive apt-get install -y -qq docker-ce docker-ce-cli containerd.io docker-compose-plugin docker-ce-rootless-extras docker-buildx-plugin >/dev/null
+ sudo -E sh -c docker version
Client: Docker Engine - Community
 Version:           24.0.2
 API version:       1.43
 Go version:        go1.20.4
 Git commit:        cb74dfc
 Built:             Thu May 25 21:51:00 2023
 OS/Arch:           linux/amd64
 Context:           default

Server: Docker Engine - Community
 Engine:
  Version:          24.0.2
  API version:      1.43 (minimum version 1.12)
  Go version:       go1.20.4
  Git commit:       659604f
  Built:            Thu May 25 21:51:00 2023
  OS/Arch:          linux/amd64
  Experimental:     false
 containerd:
  Version:          1.6.21
  GitCommit:        3dce8eb055cbb6872793272b4f20ed16117344f8
 runc:
  Version:          1.1.7
  GitCommit:        v1.1.7-0-g860f061
 docker-init:
  Version:          0.19.0
  GitCommit:        de40ad0

================================================================================

To run Docker as a non-privileged user, consider setting up the
Docker daemon in rootless mode for your user:

    dockerd-rootless-setuptool.sh install

Visit https://docs.docker.com/go/rootless/ to learn about rootless mode.


To run the Docker daemon as a fully privileged service, but granting non-root
users access, refer to https://docs.docker.com/go/daemon-access/

WARNING: Access to the remote API on a privileged Docker daemon is equivalent
         to root access on the host. Refer to the 'Docker daemon attack surface'
         documentation for details: https://docs.docker.com/go/attack-surface/

================================================================================

hizo@hizo-minipc:~$ docker ps
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied

hizo@hizo-minipc:~$ exit
logout
Connection to 1xxx closed.

ssh 'hizo@192.168.1.12

hizo@hizo-minipc:~$ docker ps
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied

On en est donc toujours au même point… c’est à dire que l’installation de docker ne fonctionne pas sans droits…
docekrd-rootless-setuptool.sh install semble donc nécessaire…

Oui mais si tu as fait une réinstallation complète as tu remis ton utilisateur dans le groupe docker?

Ah ah ah…
Donc au final tu as COMPLÈTEMENT raison.

docekrd-rootless-setuptool.sh install n’est donc pas nécessaire.
=> Du coup, il faudrait vraiment le signaler dans la doc.

et il faut absolument se déconnecter de la connexion ssh.

J’en conclus que cela fonctionne maintenant ?

Ç m’en a tout l’air :slight_smile:

3 « J'aime »

Je ne comprend pas @Hizo, nulle part il n’est fait mention de cette commande ?
En suivant strictement ce qui est indiqué il n’y a pasde soucis non ?

1 « J'aime »

Oui, mais elle est affichée lors de l’installation de docker.
Si je me suis fait avoir, d’autres pourraient se faire avoir aussi.
Je comprenais vraiment que si j’étais pas en root, il me fallait la faire.

Ok, je comprends mieux, tu parles donc plutôt de rajouter une mention dans la Doc qui « conseillerait » de ne suivre que les commandes de la Doc Gladys et de ne pas tenir compte des commandes venant des dépendances installées ?

Oui, juste mettre une sorte de warning après la commande curl -sSL https://get.docker.com | sh
car elle propose la commande docekrd-rootless-setuptool.sh install qui ne doit pas être lancée.
Ce n’est pas lié aux dépendances mais à l’installation de docker.

Par contre j’aurais tendance à indiquer les dépendances nécessaires à l’installation de docker dans la doc aussi.