Komga - app api use

Salut
J’essaye de refaire fonctionner l’application Komga.
Sauf que je n’arrive pas à régler un problème d’autorisation sur son api…

Un peu de contexte.
Actuellement cette application est “cassée” au si bien sur une installation que sur une mise à jours.

Dans un premier temps je me concentre sur installation.

L’installation se passe sans problème mais lorsque l’on essaye d’accéder à l’application on a une page de login alors qu’on a pas encore créé d’utilisateur.
Etrange car théoriquement on devrait avoir la page permettant de créer un utilisateur administrateur.

(Note : Paramètre d’installation : « Qui doit avoir accès à cette application ? » = « Visiteurs »)

Si on a un éclaire de génie à ce moment là, on ouvre les outils de débug notre navigateur web favoris, on voit ce genre de choses:

GET https://mondomaine.fr/komga/api/v2/users/me 401 (Unauthorized)
GET https://mondomaine.fr/komga/api/v1/oauth2/providers 401 (Unauthorized)
GET https://mondomaine.fr/komga/api/v1/claim 401 (Unauthorized)
Uncaught (in promise) Error: An error occurred while trying to retrieve oauth2 providers
Uncaught (in promise) Error: An error occurred while trying to retrieve claim status

Il y a donc un problème avec l’accès à l’api.
En fouinant dans la documentation yunohost et en comparant avec d’autres applications, il devrait visiblement avoir quelque chose comme ce qui suit dans le manifest.

[resources.permissions]
main.url = "/"
api.url = "/api"
api.show_tile = false
api.allowed = "visitors"
api.auth_header = false

On réinstalle … il y a du mieux on a la page pour créer l’utilisateur administrateur.
Mais !
En cliquant sur le bouton « Create user account » ca gueule :
GET https://mondomaine.fr/komga/api/v2/users/me?remember-me=false 401 (Unauthorized)
Mais !
Si on retente « Create user account » (par ce que pourquoi pas!)
An error occurred while trying to claim server: This server has already been claimed
Oké !
On test https://mondomaine.fr/komga
Page de login « nomal », on renseigne l’adresse courriel et le mot de passe de notre utilisateur
Invalid authentication: Request failed with status code 401
Gné !
Bon documentation et tout ca …

# /usr/bin/java -jar -Xmx1g /var/www/komga/komga.jar --server.port=53112 --server.servlet.context-path=/komga/ --komga.config-dir=/home/yunohost.app/komga/ --list-users | grep ‘o.g.k.i.apprunner.ListUsersRunner’
main] o.g.k.i.apprunner.ListUsersRunner        : Here is a list of all users: [admin@mondomaine.fr]
# /usr/bin/java -jar -Xmx1g /var/www/komga/komga.jar --server.port=53112 --server.servlet.context-path=/komga/ --komga.config-dir=/home/yunohost.app/komga/ --reset=test@mondomaine.fr --newpassword=YourNewPassword
main] o.g.k.i.apprunner.PasswordResetRunner    : Reset password for user: test@mondomaine.fr
main] o.g.k.domain.service.KomgaUserLifecycle  : Changing password for user test@mondomaine.fr
main] o.g.k.domain.service.KomgaUserLifecycle  : Expiring all sessions for user: test@mondomaine.fr

On retente le login via la page web …
Invalid authentication: Request failed with status code 401
C’est quoi de délir ?

curl -kL -X POST 'https://mondomaine.fr/komga/api/v2/users' -H 'Accept: application/json'  -H 'X-Komga-Email: test@mondomaine.fr' -H 'X-Komga-Password: YourNewPassword' 
{"timestamp":"2025-02-19T02:27:11.411+00:00","status":401,"error":"Unauthorized","message":"Unauthorized","path":"/komga/api/v2/users"}

Il doit y avoir une erreur avec

[resources.permissions]
main.url = "/"
api.url = "/api"
api.show_tile = false
api.allowed = "visitors"
api.auth_header = false

J’ai tenté avec api.url = "/api/*" et d’autres paramètres mais je trouve pas la bonne combinaison.
Si vous l’avez je suis preneur (avec explication si possible).

Sur ce A+

PS: vu l’heure où je poste ce message, ca sera uniquement en francais mais réponse en anglais acceptée.

Merci pour l’information et bravo (!) pour toutes ces recherches !
Tu es vraiment sur la bonne voie.

J’ai installé l’application pour voir, j’arrive aux mêmes problèmes que toi.
Si tu ouvres l’application dans une fenêtre privée, ça devrait fonctionner : c’est parce que tu es connecté à Yunohost en même temps. Tu confirmes ?

À la place de mettre :

Tu peux juste essayer de mettre

main.url = "/"
main.auth_header = false

Je n’ai pas essayé mais ça devrait le faire.
Je te laisse faire une PR vu que tu as fait tout le boulot ?

Merci mais non ca fonctionne toujours pas.

J’ai ré-installlé avec

main.url = "/"
main.auth_header = false

Mais

  • quand tu essaie d’aller https://mondomaine.fr/komga en navigation privée tu as toujours https://mondomaine.fr/komga/api/v2/users/me [HTTP/2 401 3ms]
  • Quand tu tente de te connecter avec l’utilisateur que tu viens de créer
    • Message de la page web Invalid authentication: Request failed with status code 401
    • Dans la console GET https://mondomaine.fr/komga/api/v2/users/me?remember-me=false [HTTP/2 401 10ms]

Bonsoir,
J’ai aussi des observations similaires (mais moins poussee que @gannonwoto) sur l’installation que j’ai de Komga :

  • Le site a beau être en accès visiteur, impossible de passer la page de connexion komga (erreur 401). Les logs de komga ne mentionnent aucune connexion ratée d’ailleurs.
  • L’application quand on la lance depuis la liste des app yunohost met dans les logs que notre utilisateur yunohost a essaye de se connecter sans succès. Comme si komga utilisait le Single Sign On (sso)
  • En utilisant les scripts suivant, GitHub - PhilippKammann/Komga-Scripts: Collection of scripts, il est possible de changer le mdp d’un utilisateur MAIS PAS QUE! en modifiant un peu le script il est possible de mettre un nom d’utilisateur different (sans être un email). (ampoule s’allume) et si je met mon nom d’utilisateur yunohost et sont mdp dans la base de donnée komga? BOOM ca marche avec le sso.
  • Par le passe il était possible de déconnecter son utilisateur de yunohost et komga n’avais pas de conflit (cookies navigateur?). Ce n’est plus possible aujourd’hui, 401 a tous les coups.
  • J’avais commence a m’intéresser au histoire de proxy nginx en voyant les issues du repo de komga sans piste qui m’ai inspirée.

Voila j’espere que ca aide un peu, au moins j’ai acces avec l’utilisateur sso mais c’est pas prevu comme ca chez komga surtout pour s’interfacer avec d’autre apps
Je suis content de voir que d’autres ont le souci, On va regler ca! :sunglasses:
edit : c’est vraiment comme si le security listener n’acceptait que des connection du sso et rien d’autre quand on voit les logs.

Salut,

C’est bien ce qui me posait problème dans mes précédents essaies de debug. Mais quand on regarde les logs côté navigateur c’est logique.
L’erreur 401 indique qu’on a pas les droits pour faire l’action voulu, donc la requete ne va même pas jusqu’a Komga. Ca serait plus du côté des logs nginx qu’il y aurait peut être quelque chose.

Dans quel log ? De mémoire j’avais rien du tout.

???
J’avais pas encore regardé la BDD.
T’es sûre que ca fonctionne avec le sso ou ca fonctionne avec un utilisateur local à Komga qui à le même identifiant et le même mot de passe que t on utilisateur yunohost ?

Et tu as plus d’erreur 401 ? L’application fonctionne corectement ?
bizarre!
Tu as quoi dans ton manifest au niveau des permissions ?

?

En passant si besoin il y a un swagger : https://mondomaine.fr/komga/swagger-ui/index.html mais vu que l’authentification ne fonctionne pas, ca va pas servir à grand chose!

Salut

Dans l’interface admin les log Tools > Services > Komga, la section logs. Il y a une ligne qui apparaît quand on fait la procedure suivante: deco de yunohost > connexion > on click sur komga et la il y a un truc qui se passe, une ligne qui est formatée comme ca :

o.g.k.i.security.LoginListener           : AuthenticationActivity(userId=0123456789, email=user, ip=1.1.1.1, userAgent=randomBrowser, success=true, error=null, dateTime=today, source=Password)

(Ici ca met success=true mais ca peu etre false si le yunohost user est pas le meme que celui de komga)
La tu sais que komga reçois la tentative de connection. Sinon en visiteur sur le login komga, bah il reçois rien et ne dis meme pas un petit success=false. Il n’y a que yunohost qu’il ecoute j’ai l’impression.

Pardon, je pense que j’utilise mal le terme sso, l’observation que j’ai c’est que ca fonctionne quand on met le meme identifiant utilisateur local a komga (dans la db) que l’identifiant utilisateur yunohost comme tu le decrit. :smiley:

Pas d’erreur et l’app fonctionne seulement via yunohost (ca dépanne, mais je préférerais y avoir accès en visiteur perso). Si on veux se connecter sans être connecte a yunohost, toujours le 401.

J’ai pas touche au manifest, je savais pas qu’on pouvais faire ca avant de lire vos poste.

Déso, j’ai été trop vite…
Pouvez-vous essayer une mise à jour via :
sudo yunohost app upgrade komga -u https://github.com/thovi98/komga_ynh/tree/master --debug ?

1 Like

Salut
ce serait donc ca qui block tout? :thinking:

ynh_app_setting_set --key=protect_against_basic_auth_spoofing --value=False

Le fail2ban attrape quand meme les mauvaise tentatives avec cette option?

Je ne sais pas grand chose de plus.
Je pense que ça n’a aucune incidence sur Fail2Ban.

1 Like

Je vien de test ca marche! YAY :partying_face:
C’est quoi les etapes suivantes? PR et ca va en prod? on dois faire quelque chose si on a cette version la pour avoir l’upgrade officielle? :thinking:
Edit : j’oublie de le dire mais le pense!: merci beaucoup pour l’aide, ca fait plaisir d’avoir le komga de retour sur les rails :smiley:

1 Like

Merci pour ton retour !

Ma PR est passée en testing et devrait bientôt aller en master pour proposer une mise à jour à tous les utilisateurs.

Merci de nous avoir fait savoir qu’il y avait un problème avec cette app !

J’ai activé le suivi des mises à jours. Une PR va arriver automatiquelent après une mise à jour de Komga désormais. N’hésite pas à suivre et à te proposer (co-)mainteneur de l’app si tu es intéressé (les mises à jours devraient en général être assez simples).

1 Like

Désolé de casser l’ambiance mais non ca fonctionne pas.
Du moins pas avec une installation et pas avec une mise à jour.

Je viens de tester avec https://github.com/thovi98/komga_ynh et ça me demande toujours un utilisateur et un mot de passe alors que j’en ai toujours pas créé.


Correction ca me demande bien de créer un utilisateur en navigation privée.
On a un message d’erreur lors de la création de l’utilisateur, dans les logs du navigateur on a une 401 sur komga/api/v2/users/me?remember-me=false.
Cepandant l’utilisateur semble bien créé vu que en essayant de créer un utilisateur une deuxième fois on a un message indiquant que le serveur à déjà été utilisé.
Mais quand on tente de se connecter avec l’utilisateur en question, message d’erreur avec dans les logs du navigateur toujours la 401 évoquée plus haut.


Dans les log nginx:

[20/Feb/2025:21:08:06 +0100] "GET /komga/api/v2/users/me?remember-me=false HTTP/2.0" 401 0 "https://mondomaine.internal/komga/login?redirect=%2Fdashboard" "Mozilla/5.0 (X11; Linux x86_64; rv:135.0) Gecko/20100101 Firefox/135.0"

La mise à jour sera disponible dans max 4h en version stable. Pourras-tu réessayer ? Pas mal de changements ont eu lieu depuis lors

J’ai beau ne pas dormir beaucoup voir trop peu, dans 3h30 4h j’espère bien ne pas être devant mon ordi :smiley:
Mais oui je testerai demain.

Oui j’ai vu, même un peu trop. Je repartirai de la master si ca déconne car là avec mon forck , ca va etre compliqué de s’y retrouver.


En passant:

Permissions
Configure the SSO permissions/tiles. Typically, webapps are expected to have a ‘main’ permission mapped to ‘/’, meaning that a tile pointing to the $domain/$path will be available in the SSO for users allowed to access that app.

Donc … si on utilise pas le sso (cf ci dessous), pas besoin de configurer quoi que ce soit dans cette partie non ? ( à part main.url="/")

[integration]
ldap = false
sso = false

Je confirme aussi que ce n’est pas parfait encore,

Comme je l’avais dis, j’ai (attention gros mot!) bidouillé la base de données komga pour avoir le meme user sur yunohost et komga.
Une autre personne qui utilise mon server n’as pas la meme experience:
Comme son user n’est pas defini dans komga (mais il a bien un user different pour komga), j’observe dans les logs d’acces de komga que ses tentative sont en fait des tentative faite avec les info de son compte yunohost!

De plus, si je veux tester un autre utilisateur que le mien, je dois me deconnecter de komga ET de yunohost pour eviter que komga ne recoivent les infos de mon user sur le loginListener…

Edit: du coup je ne vois pas ce qui envoie les info des user yunohost a komga?
Je remetterai des edit si j’ai + d’observation

Nop, fonctionne pas.
Je n’ai même pas la page pour créer l’utilisateur admin.

https://mondomaine.fr/komga/api/v2/users/me -> 401
https://mondomaine.fr/komga/api/v1/claim  -> 401
https://mondomaine.fr/komga/api/v1/client-settings/global/list  -> 401

Error: An error occurred while trying to retrieve global client settings
Uncaught (in promise) Error: An error occurred while trying to retrieve claim status

Toujours des problèmes de droits sur l’api.


Oups non, c’est un problème de cache navigateur, mais ca fonctionne toujours pas correctement:

  • installation avec la branche main actuelle → RAS tout est OK
  • Si on rafraichi juste la page du portaille des application et que l’on va sur Komga, c’est le comportement décrit ci-dessus.
  • Si l’on vadans une navigation privée directement à https://mondomaine.fr/komga
    • On arrive bien à la page de création de l’utilisateur admin avec cepandant une erreur 401 sur https://mondomaine.fr/komga/api/v2/users/me
    • lorsque l’on créer l’utilisateur:
      • message d’erreur " Invalid authentication: Request failed with status code 401 "
      • et erreur 401 sur mondomaine.fr/komga/api/v2/users/me?remember-me=false
    • Cepandant, l’utilisateur est bien créé, en effet, lorsque l’on tente de relancer la création de l’utilisateur:
      • message " An error occurred while trying to claim server: This server has already been claimed "
      • requette POST sur mondomaine.fr/komga/api/v1/claim; code retour 400
    • A ce point si on va sur mondomaine.fr/komga: une 401 sur /komga/api/v2/users/me mais la page de login s’affiche correctement.
    • Si l’on tente de se connecter avec l’utilisateur que l’on vient de créer: erreur " Invalid authentication: Request failed with status code 401 " et donc 401 sur mondomaine.fr/komga/api/v2/users/me?remember-me=false

Il y a donc bien un pb avec les droits sur l’api mais je trouve pas comment le régler.

Bizarre, quand j’ai fait mes tests ça fonctionnait impeccablement. Dès que possible je regarderai à nouveau

J’ai fait quelques tests.
Bizarrement, quand j’installe l’application, j’ai aussi le problème du 401.

Mais lorsque je la mets à jour
sudo yunohost app upgrade komga -u https://github.com/Thovi98/komga_ynh/tree/master --debug --force
Le problème disparaît, je ne sais pas ce qui change

Ca fonctionne quand tu tentes de t’y connecter une seconde fois ? Avec ou sans la navigation privée STP ?

Personellemeent:

  • installe ok
  • page de création de l’utilisateur admin ok
  • creation de l’utilisateur admin message d’erreur avec une 401 mais l’utilisateur est bien créé.
  • tentative de connection avec l’utilisateur admin dans une fenêtre normal ko 401 (sur komga/api/v2/users/me?remember-me=false )
  • tentative de connection avec l’utilisateur admin dans une fenêtre en navigation privée … la première fois c’est passé mais pas la seconde fois …

Je ne comprend vraiement pas.
En tout ca le message d’erreur concerne toujours (sur komga/api/v2/users/me?remember-me=false )

Dans toutes les fenêtres (privées comme non-privées), maintenant j’arrive tout le temps à me connecter