Closed jlnbdt closed 3 years ago
Bonjour @jlnbdt,
Merci pour le rapport de bug, et désolé pour le délai de réponse. Alors en effet, il y avait un bug dans dato que ça m'a permis de corriger.
Si tu mets l'application à jour (version 1.5.16), ça devrait fonctionner.
Une note sur les utilisateurs.
L'utilisateur administrateur de couchdb devrait pouvoir accéder à tout, sans avoir besoin de lui attribuer aucun rôle, il me semble, mais je n'ai jamais testé. Si tu peux ouvrir la console du navigateur et envoyer les logs peut-être je peux essayer de comprendre pourquoi ça bloque au chargement de l'application. Mais je te déconseille de te loguer sur dato avec l'utilisateur admin de couchdb, à part sur la page "/users/".
Merci pour la patience que tu as eu devant la suite de problèmes :) Tes retours sont bien utiles pour le développement ;)
Bonjour @eauchat,
C'est moi qui te remercie pour ces explications claires et tout ce travail !
La bonne nouvelle est qu'effectivement, la page /users/ fonctionne bien désormais. Elle m'affiche les utilisateurs pré-existants (que j'avais créés manuellement) et j'ai pu en créer un nouveau.
La moins bonne nouvelle est que je ne parviens à me connecter avec aucun de ces utilisateurs, puisque j'obtiens le message Internal error attempting to login to dato
. J'ai remarqué que lorsque je lançais sudo yunohost service reload dato
j'obtenais un log plutôt instructif :
Sep 08 22:52:44 dato[5344]: username: 'julien',
Sep 08 22:52:44 dato[5344]: status: 'error',
Sep 08 22:52:44 dato[5344]: couchResponse: {
Sep 08 22:52:44 dato[5344]: error: 'forbidden',
Sep 08 22:52:44 dato[5344]: reason: 'You are not allowed to access this db.'
Sep 08 22:52:44 dato[5344]: }
Sep 08 22:52:44 dato[5344]: }
Sep 08 22:52:44 dato[5344]: electrode | [GET] /login/?status=error&url=/
Sep 08 22:54:24 dato[5344]: electrode | [POST] /login/?url=/
Sep 08 22:54:24 dato[5344]: electrode | ✖ Unknown error trying to login 'jln':
Sep 08 22:54:24 dato[5344]: {
Sep 08 22:54:24 dato[5344]: username: 'jln',
Sep 08 22:54:24 dato[5344]: status: 'error',
Sep 08 22:54:24 dato[5344]: couchResponse: {
Sep 08 22:54:24 dato[5344]: error: 'forbidden',
Sep 08 22:54:24 dato[5344]: reason: 'You are not allowed to access this db.'
Sep 08 22:54:24 dato[5344]: }
Sep 08 22:54:24 dato[5344]: }
Sep 08 22:54:24 dato[5344]: electrode | [GET] /login/?status=error&url=/
Bien sûr, mes utilisateurs ont bien le rôle dato
Si je tente d'accéder à l'app avec le compte admin de couchdb, je retombe sur la page qui tourne "en boucle" indiquant "Loading dato app". La console du navigateur indique ceci :
Je lis "Could not find configuration for database dato", mais il n'y a effectivement aucune base nommée ainsi sur mon serveur CouchDB. C'est d'ailleurs un truc que je n'ai pas compris : l'installation de dato avec Yunohost demande de renseigner l'adresse du serveur si l'on veut activer l'autosync, mais pas le nom de la base à créer ou utiliser.
J'espère que ces quelques infos seront de nature à t'aider :-)
Edit : alors en fait, la connexion avec "admin" se passe très bien si je ne suis pas dans un onglet privé ! En revanche, avec "admin-dato" (créé lors de l'installation de l'app dato avec Ynh) ou bien avec les deux autres utilisateurs qui n'ont que le rôle "dato" (jln et julien), le problème demeure.
Alors, j'ai l'impression qu'il y a plus d'un problème, selon ce que tu décris.
Les logs côté serveur:
Sep 08 22:54:24 dato[5344]: electrode | ✖ Unknown error trying to login 'jln':
Sep 08 22:54:24 dato[5344]: {
Sep 08 22:54:24 dato[5344]: username: 'jln',
Sep 08 22:54:24 dato[5344]: status: 'error',
Sep 08 22:54:24 dato[5344]: couchResponse: {
Sep 08 22:54:24 dato[5344]: error: 'forbidden',
Sep 08 22:54:24 dato[5344]: reason: 'You are not allowed to access this db.'
Sep 08 22:54:24 dato[5344]: }
Sep 08 22:54:24 dato[5344]: }
Je pense que cette erreur vient d'un changement dans couchdb. Avant par défaut un utilisateur pouvait accéder à son propre profil dans la database "_users", ce n'est plus le cas par défaut. J'ai posté une mise à jour de dato pour que l'application l'active lors de l'installation.
Mettre à jour l'app ne le fera pas, donc tu peux soit désinstaller et réinstaller dato, soit tu peux faire le changement manuellement, il suffit d'éditer le fichier /opt/couchdb/etc/local.d/dato.ini
et d'y ajouter les lignes suivantes:
[couchdb]
users_db_security_editable = true
et ensuite ajouter les rôles "dato" et "dato-admin" à la section "members" des permissions de la base de donnée "_users" (en utilisant fauxton ou curl).
Les logs côté navigateur:
Alors, côté navigateur, il y a un autre soucis. C'est un bug que je connais, mais auquel je n'ai pas encore trouvé de solution. J'ai l'impression que c'est un bug du navigateur, mais peut-être y a quelque chose que je ne comprends pas quelque part.
C'est le indexed_db_went_bad
. Il semble que la base de donnée se soit corrompue et ne marche plus. Ça m'arrive de temps en temps. La seule solution que j'ai trouvé jusqu'à présent c'est d'aller dans les préférences de firefox, ouvrir "Privacy & Security > Cookies and Site Data > Manage Data" et de supprimer les données pour l'url de dato. À faire avec précaution, parce que ça supprime toutes les données créées dans dato. D'où l'intérêt quelles soient toujours synchronisées vers couchdb, ce qui permettra au navigateur de réimporter tout au prochain login.
Additionnellment, tu peux aussi recharger l'application avec ctrl+shift+r pour supprimer le cache.
Sinon, le fait que tu ne doive pas renseigner de database est normal. Quand tu créera une base de donnée dans dato, en bas de la fenêtre tu verra qu'il rempli automatiquement l'addresse de la base de donnée correspondante sur couchdb, et il la crée automatiquement dans couchdb avec comme nom "username--dbname".
Malheureusement ça ne fonctionne toujours pas après la mise à jour de l'application (désinstallation/réinstallation ; users_db_security_editable
est bien à true
)
J'ai nettoyé CouchDB de ses utilisateurs et bases existants (sauf le compte admin
bien sûr).
Premier constat : l'utilisateur admin_dato
créé lors de l'installation (il apparaît bien dans la base _users
) n'a toujours pas accès à la page /users/
; les logs sont inchangés
Sep 09 11:13:59 dato[5196]: electrode | [POST] /login/?url=/users/
Sep 09 11:13:59 dato[5196]: electrode | ✖ Unknown error trying to login 'admin_dato':
Sep 09 11:13:59 dato[5196]: {
Sep 09 11:13:59 dato[5196]: username: 'admin_dato',
Sep 09 11:13:59 dato[5196]: status: 'error',
Sep 09 11:13:59 dato[5196]: couchResponse: {
Sep 09 11:13:59 dato[5196]: error: 'forbidden',
Sep 09 11:13:59 dato[5196]: reason: 'You are not allowed to access this db.'
Sep 09 11:13:59 dato[5196]: }
Sep 09 11:13:59 dato[5196]: }
Sep 09 11:13:59 dato[5196]: electrode | [GET] /login/?status=error&url=/users/
Deuxième constat : je peux accéder à /users/
avec admin
et y créer des utilisateurs (qui apparaissent bien dans _users
également), mais ceux-ci n'ont toujours pas accès à l'appli (même logs que précédemment)
sudo yunohost service restart couchdb
je pense. (Au cas où couchdb n'as pas pris en compte les changements.)indexed_db_went_bad
dans le navigateur, est-ce que tu peux essayer avec un autre navigateur voir si c'est différent ? (Ou même juste ouvrir firefox avec un autre profile.)about:serviceworkers
dans firefox et clique "unregister" sur le worker de dato pour ton domaine ça le forcera à rerécupérer l'application complète depuis le serveur. Je ne pense pas que ce soit hyper utile avec les problèmes que tu as, mais on sait jamais. C'est un moyen de forcer une mise à jour / rafraîchissement de l'interface navigateur avec la dernière version présente sur le serveur.Si tu ouvres la database "_users" dans fauxton et que tu vas dans "permissions", il y'a bien les rôles "dato" et "dato-admin" listés dans la section membres (en bas à droite) ? Si c'est pas le cas, ajoute les (et si tu peux me le dire c'est cool, parce que j'ai du merder quelque chose dans le dernier patch).
Effectivement, ces rôles n'y sont pas ! Mais j'ai un message d'erreur si je veux les ajouter :
Est-ce que tu peux recharger couchdb, tu devrais pouvoir le faire avec:
sudo yunohost service restart couchdb
je pense. (Au cas où couchdb n'as pas pris en compte les changements.)
Je tenterai cela lorsque j'aurais résolu le problème précédent :)
Si tu as toujours le log
indexed_db_went_bad
dans le navigateur, est-ce que tu peux essayer avec un autre navigateur voir si c'est différent ? (Ou même juste ouvrir firefox avec un autre profile.)
Après plusieurs tests, je te confirme ce que j'avais indiqué plus haut : ce problème ne survient (et ne continu à survenir) que sous un profil privé, et non pas sous un profil normal.
Ça ne devrait pas avoir d'impact dans cette situation je pense, mais je le dis au cas où: si tu ouvres l'"url"
about:serviceworkers
dans firefox et clique "unregister" sur le worker de dato pour ton domaine ça le forcera à rerécupérer l'application complète depuis le serveur. Je ne pense pas que ce soit hyper utile avec les problèmes que tu as, mais on sait jamais. C'est un moyen de forcer une mise à jour / rafraîchissement de l'interface navigateur avec la dernière version présente sur le serveur.
Je note cela pour plus tard, quand le problème de droits sera résolu. Merci pour cette astuce que je ne connaissais pas !
Alors si couchdb te laisses pas changer les permissions de la database "_users" ça veut dire qu'il a pas encore pris en compte users_db_security_editable = true
.
Donc il faut faire: sudo yunohost service restart couchdb
et après il te laissera changer les permissions dans "_users".
Après ça, tu devrais pouvoir te loguer normalement.
À noter que, sur le navigateur que j'utilise en général, pas mal de choses sont bloquées et j'ai pas mal d'add-on. Notamment par exemple les service-workers sont bloqués. Pour dato, j'utilise donc un autre navigateur ou profil sans tous ces blocages, parce que sinon l'appli ne fonctionne pas offline notamment. Donc selon les extensions que tu as, peut-être certaines choses empêchent dato de fonctionner normalement. Perso je n'ai jamais investigué quelles extensions posaient problème et pourquoi, je me contente d'utiliser un navigateur clean pour dato. Mais c'est parce que je connais l'app, lui fait confiance, et parce que je l'utilise beaucoup, donc c'est pas gênant pour moi d'avoir à ouvrir un autre navigateur. Après j'ai des amis qui utilisent l'app avec leur navigateur classique pleins d'extensions sans problèmes, donc à toi d'investiguer spécifiquement ton navigateur et extensions.
Ça fonctionne 😄
Je ne suis pas parvenu à relancer le service couchdb (ça échoue et les logs sont obscures), mais en relançant directement /opt/couchdb/bin/couchdb ça a fait l'affaire. C'est un souci qu'il faudra que je ré-investigue…
Mais désormais, j'ai pu accéder à la page users
avec l'utilisateur admin_dato
, créer un utilisateur julien
puis accéder à l'app avec cet utilisateur.
En revanche, ce que je ne pige pas désormais, c'est qu'après avoir créé un nouveau type dans dato, la base julien--dato
demeure entièrement vide (sauf erreur de ma part, elle devrait contenir le type, non ?) Sur la page des types, l'icône de synchro (les deux flèches formant un cercle) est grisée et un clic dessus m'indique "The database haven't been set to synchronize with any remote database."
Par ailleurs, sur "Data Home Settings", l'adresse du serveur distant est incorrect car il manque un slash entre le nom de domaine et le nom de la base (https://monserveurcouchd.netjulien--dato au lieu de https://monserveurcouchdb.net/julien--dato).
Enfin, lorsque j'ouvre une base nouvellement créée dans dato, la synchro ne fonctionne pas.
Peut-être préfères-tu que j'ouvre d'autres tickets pour traiter cela…
En réinstallant dato et en n'omettant pas le slash final lors de la saisie du serveur couchdb, tout semble être rentré dans l'ordre ;-)
Ok, super que ça marche. Merci pour le retour sur l'url. J'ai posté un patch pour supporter aussi le fait de mettre une url sans slash final.
J'espère que toutes ces modifs que j'ai fait sur dato et le paquet dato_ynh fonctionnent bien dans yunohost, parce que je ne suis pas en mesure de tester la partie yunohost actuellement à cause de problèmes avec mon environnement de développement yunohost.
J'espère que toutes ces modifs que j'ai fait sur dato et le paquet dato_ynh fonctionnent bien dans yunohost, parce que je ne suis pas en mesure de tester la partie yunohost actuellement à cause de problèmes avec mon environnement de développement yunohost.
Quelques petits retours là-dessus ci cela peut t'aider : lorsque tu as mis à jour le paquet dato pour Yunohost hier ou avant-hier, je n'ai pas vu cette mise à jour disponible lors d'un update du système. J'ai donc réinstallé l'appli en indiquant directement l'adresse de ce dépôt Github. Toutefois, ce matin, l'update de 1.5.16 vers 1.5.17 est bien apparue dans Yunohost.
J'ai testé de nouveau une installation "fraîche" après avoir pris soin de nettoyer couchdb de ses bases et de ses utilisateurs. J'obtiens différents warnings lors de l'installation de dato, dont un qui peut "faire peur" :
Warning: [Error] There was an error enabling dato users to access their user profile in couch. You will have to do it manually (check the 'Configure couchdb so that it accepts requests from dato' section in the following page for instructions: https://squeak.eauchat.org/apps/dato/?setups).
Warning: [Error] Here is the error message from couchdb:
Warning: [Error] {"ok":true}
Toutefois l'installation se poursuit sans problème et l'app est bien utilisable.
Il y a d'autres warnings relatifs à quelques dépendances :
Warning: npm WARN deprecated highlight.js@9.18.5: Support has ended for 9.x series. Upgrade to @latest
Warning: npm WARN deprecated uuid@3.2.1: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.
Warning: npm WARN deprecated querystring@0.2.0: The querystring API is considered Legacy. new code should use the URLSearchParams API instead.
Bonne journée
J'ai l'impression qu'au fur et à mesure des différentes installations, les accès par rôles sont redondants :
Alors, pour ce qui est de la première mise à jour qui n'est pas apparue et les suivantes si, c'est normal sans doute parce que j'ai oublié de changer le numéro de version de l'app la première fois, donc le système n'a pas dû détecter qu'il y avait une mise à jour.
Les premiers logs que tu envoie viennent d'une erreur qui devrait être corrigée dans la mise à jour, mais l'erreur était juste de mettre ce log d'erreur alors qu'il n'y a pas d'erreur en fait, donc pas de problème à l'ignorer. — Beaucoup d'erreurs pour une seule phrase ;)
Les warnings lancés par npm ne sont pas un problème, ils viennent de dépendances de dépendances qui ne sont pas à jour. Il faut juste attendre que les mainteneurs des dépendances mettent à jour les paquets qu'ils utilisent.
Et pour le fait que les rôles "dato" et "dato-admin" se rajoutent à chaque installation, oui ce n'est pas très propre, mais c'est la solution temporaire que j'ai choisis. Idéalement il faudrait regarder si les rôles sont déjà présents et ne les ajouter que si nécessaire. Mais je ne pense pas que ce soit un problème pour couchdb, et puis normalement les admin ne devraient pas avoir à installer l'application plusieurs fois. Mais c'est pas super esthétique.
Sinon j'ai finalisé quelques vidéos de tutoriels et uploadé des exemples de configurations. J'écris un post sur le forum yunohost pour l'annoncer tout de suite.
Est-ce que ce ticket peut être fermé du coup ? Si besoin d'autres peuvent être ouverts pour d'autres soucis avec ce paquet.
Ouaip, je clos le ticket. Merci pour ton support !
Bonjour,
J'ai installé avec succès un serveur couchdb (sur couchdb.mondomaine.tld) ainsi que dato (sur dato.mondomaine.tld), avec l'autosync. Si j'ai bien compris, pour utiliser dato, j'ai le choix entre :
dato
Après avoir tenté la première solution, la connexion à dato aboutit à une page tournant en rond, et indiquant "Loading data app…".
Quant à l'accès à dato.mondomain.tld/users/, après saisie du login/mot de passe admin, la page affichée est simplement grise (aucun texte), avec un quart de cercle jaune en bas à droite me permettant de me déconnecter.
Merci :-)