Connexion impossible suite à installation depuis Docker Compose

Bonjour,

Merci pour le temps que vous aurez pu passer sur mon problème. J’ai des notions de base sur Linux et Docker, mais je cherche aujourd’hui à faire une installation de Kresus sur mon PC linux.
Je rencontre un problème qui semble assez simple, mais je ne trouve pas où dans la procédure d’installation j’ai pu me tromper.

Merci d’avance pour votre aide

Le problème
Après avoir installé Kresus via Docker Compose, je n’arrive pas à me connecter à l’application. La combinason login/mot de passe ne semble pa correct.

Contexte

Hardware: Ordinateur sour  Ubuntu 24.04 LTS Desktop
Docker version: 27.4.1
Docker compose version: Docker Compose version v2.32.1

Scenario de reproduction

Après avoir créé un dossier, téléchargement du répertoire git ( main/34e0022)

mkdir  ~/docker
git clone https://framagit.org/kresusapp/kresus && cd kresus

Entrer dans le dossier support/docker-compose
Generation du password pour l’utilisateur test (j’utilise ici la combinaison login/password test/test)

htpasswd -bn test test |awk -F':' '{print $2}'
$apr1$jVTT0yJO$S.plGlHgF9nKiYQ/ZvrdX0

Edition du fichier .env

MY_DOMAIN=localhost:9876
MY_USERNAME=test
MY_PASSWD=$apr1$jVTT0yJO$S.plGlHgF9nKiYQ/ZvrdX0
PASSWORD_HASH=$apr1$jVTT0yJO$S.plGlHgF9nKiYQ/ZvrdX0

Lancement du docker compose

sudo docker compose up -d

Une fois les dockers lancés, aller à l’adresse localhost:9876
Le navigateur demande login et password
Quand j’entre test/test la popup se rouvre et redemande login et pasword

Dans les logs, on voit les lignes suivantes:

kresus-1   | [2025-01-05T21:36:13.570] [INFO] report-manager - No emailer found, skipping reports management.
kresus-1   | [2025-01-05T21:36:13.570] [INFO] poller - Reports have been sent.
kresus-1   | [2025-01-05T21:36:13.571] [INFO] init - Server is ready, let's start the show!
traefik-1  | 2025-01-05T21:36:31Z DBG github.com/traefik/traefik/v3/pkg/middlewares/auth/basic_auth.go:79 > Authentication failed middlewareName=kresus-auth@docker middlewareType=BasicAuth

Coucou !

Alors je ne maîtrise pas bien ce docker-compose, puisqu’il met en place plein de choses, mais de ce que je comprends : il s’attend à ce que l’utilisateur soit appelé kresus, au vu de la ligne 100, et donc que la commande pour générer le mot de passe soit bien htpasswd -n kresus.

Tu dois pouvoir changer le username, si tu y tiens ; pour cela, il faudra le changer à cette fameuse ligne 100 également. Sinon, je t’invite à garder le username Kresus et à re-tenter avec la ligne htpasswd telle qu’indiquée en haut du fichier.

Bonne chance, tiens-nous au courant :slight_smile:

Bonjour et merci pour ta réponse.

Je n’ai pas de problème avec le fait de conserver le user kresus, j’ai donc réinitialisé la config du .env

J’ai fait plusieurs tentatives:

  1. aucune modification (dans les commentaires du docker compose, le mdp par defaut semble être kresus:foobar
# The default credentials for authentication are kresus:foobar.
  1. J’ai tenté de générer le hash_password du mot de passe « test »
htpasswd -n kresus | awk -F':' '{print $2}'
New password: 
Re-type new password: 
$apr1$QPADnwlP$P33HcHlqCdFYPiQxU4ngw/

Puis je l’ai inséré dans le .env:

PASSWORD_HASH=$apr1$gd/ccfmj$nPPjtPBD7ollzPSupFOm8.

Le résultat est le même dans les 2 cas: lorsque j’accès à localhost:9876 et entre login et mdp (Cas1: kresus/foobar; Cas2 kresus/test), la popup de login se ferme, puis rouvre.

Dans les logs, toujours le même message:

traefik-1  | 2025-01-07T10:29:46Z DBG github.com/traefik/traefik/v3/pkg/middlewares/auth/basic_auth.go:79 > Authentication failed middlewareName=kresus-auth@docker middlewareType=BasicAuth
traefik-1  | 2025-01-07T10:29:47Z DBG github.com/traefik/traefik/v3/pkg/middlewares/auth/basic_auth.go:79 > Authentication failed middlewareName=kresus-auth@docker middlewareType=BasicAuth

Hmm très étrange. Juste pour être sûr : tu as bien recréé tout le cluster docker-compose, avec par exemple docker-compose up -d ou quelque chose de similaire, après avoir changé le .env ?

Pour être sûr de ça : peux-tu docker compose down && docker compose up afin d’être sûr qu’il ait bien pris en compte le changement de contenu du .env ?

J’aurais du le précisé en effet.
Entre chaque test, je supprime le dossier data créé, je stoppe les containers et lance un docker system prune.

Pour clarifier tout mon environnement, voici mes fichiers actuellement:
Le .env

PORT=9876

#PASSWORD_HASH=$apr1$gd/ccfmj$nPPjtPBD7ollzPSupFOm8.
PASSWORD_HASH=$apr1$QPADnwlP$P33HcHlqCdFYPiQxU4ngw/

# Fill the following for email alerts
EMAIL_TRANSPORT=smtp
EMAIL_FROM=
EMAIL_HOST=
EMAIL_PORT=587
EMAIL_USER=
EMAIL_PASSWORD=

Et le docker-compose.yml

#################################################
# Docker compose for kresus
#################################################
version: '3'

services:
  traefik:
    image: "traefik"
    restart: always
    command:
      - "--log.level=DEBUG"
      - "--api.dashboard=true"
      - "--api.insecure=true"
      - "--providers.docker"
      - "--providers.docker.exposedbydefault=false"
      - "--entryPoints.web.address=:9876"
    ports:
      - "8080:8080"
      - "${PORT}:9876"
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"

  db:
    image: "postgres"
    restart: always
    environment:
      - POSTGRES_USER=kresus
      - POSTGRES_PASSWORD=OeSoh9Dob6phahWa
      - POSTGRES_DB=kresus
    volumes:
      - ./data:/var/lib/postgresql/data

  apprise:
    restart: always
    image: "caronc/apprise"

  kresus:
    image: "bnjbvr/kresus"
    restart: always
    environment:
      - LOCAL_USER_ID=1000
      - KRESUS_DB_TYPE=postgres
      - KRESUS_DB_HOST=db
      - KRESUS_DB_PORT=5432
      - KRESUS_DB_USERNAME=kresus
      - KRESUS_DB_PASSWORD=OeSoh9Dob6phahWa
      - KRESUS_APPRISE_API_BASE_URL=http://apprise:8000
      - KRESUS_EMAIL_TRANSPORT=${EMAIL_TRANSPORT}
      - KRESUS_EMAIL_FROM=${EMAIL_FROM}
      - KRESUS_EMAIL_HOST=${EMAIL_HOST}
      - KRESUS_EMAIL_PORT=${EMAIL_PORT}
      - KRESUS_EMAIL_USER=${EMAIL_USER}
      - KRESUS_EMAIL_PASSWORD=${EMAIL_PASSWORD}
    labels:
      - "traefik.enable=true"
      - "traefik.http.routers.kresus.rule=Host(`localhost`)"
      - "traefik.http.routers.kresus.entrypoints=web"
      - "traefik.http.services.kresus.loadbalancer.server.port=9876"
      - "traefik.http.routers.kresus.middlewares=kresus-auth"
      - "traefik.http.middlewares.kresus-auth.basicauth.users=kresus:${PASSWORD_HASH}"

Le mot de passe par defaut est-il bien « foobar » comme annoncé dans les commentaires du fichier yml?

Bonjour,

Problème résolu!

Après avoir revu le log, il semble y avoir un problème avec le mot de passe hashé. L’erreur suivante semble indiqué que le système considère les différentes partie du mot de passe comme des variables.

WARN[0000] The "apr1" variable is not set. Defaulting to a blank string. 
WARN[0000] The "QPADnwlP" variable is not set. Defaulting to a blank string. 
WARN[0000] The "P33HcHlqCdFYPiQxU4ngw" variable is not set. Defaulting to a blank string. 
WARN[0000] The "apr1" variable is not set. Defaulting to a blank string. 
WARN[0000] The "QPADnwlP" variable is not set. Defaulting to a blank string. 
WARN[0000] The "P33HcHlqCdFYPiQxU4ngw" variable is not set. Defaulting to a blank string. 
WARN[0000] The "apr1" variable is not set. Defaulting to a blank string. 
WARN[0000] The "QPADnwlP" variable is not set. Defaulting to a blank string. 
WARN[0000] The "P33HcHlqCdFYPiQxU4ngw" variable is not set. Defaulting to a blank string. 
WARN[0000] The "apr1" variable is not set. Defaulting to a blank string. 
WARN[0000] The "QPADnwlP" variable is not set. Defaulting to a blank string. 
WARN[0000] The "P33HcHlqCdFYPiQxU4ngw" variable is not set. Defaulting to a blank string. 

Après avoir retravaillé le .env, j’ai mis le mot de passe hashé entre single quote et j’ai pu accéder à l’appli.
J’aurais dû m’en douté en voyant la coloration qui avait été donnée dans le .env de mon post précédent. Le .env qui fonctionne donc:

PORT=9876

PASSWORD_HASH='$apr1$QPADnwlP$P33HcHlqCdFYPiQxU4ngw/'

# Fill the following for email alerts
EMAIL_TRANSPORT=smtp
EMAIL_FROM=
EMAIL_HOST=
EMAIL_PORT=587
EMAIL_USER=
EMAIL_PASSWORD=

Je recommande de corriger le .env d’exemple pour qu’il reflète un .env qui fonctionne. Je vais voir pour créer une issue dans le .git.

Désolé pour le dérangement et merci de m’avoir soutenu dans mon installation!