Soucis installation Docker-compose sur linux

Bonjour,

Je me suis décidé a installer sur mon serveur linux Kresus.
J’ai (j’espere) suivi toute la documentation.
J’ai choisi d’installé via docker-compose.
J’ai crée mon docker-compose.yml et mon fichier .env

Dans le docker-compose j’ai supprimé la partie traefik ainsi que la partie apprise car je n’en ai pas besoin.
J’ai deja un nginx de configurer sur le serveur qui me permet d’exposer certains de mes services donc j’aimerai bien aussi l’utiliser a la place de traefik (est-ce possible ?)

Donc mon docker-compose est le suivant:

version: ‹ 3 ›

services:
db:
image: « postgres »
user: 1000:1000
restart: always
environment:
- POSTGRES_USER=kresus
- POSTGRES_PASSWORD=OeSoh9Dob6phahWa
- POSTGRES_DB=kresus
volumes:
- ./data:/var/lib/postgresql/data
kresus:
image: « bnjbvr/kresus »
ports:
- 9876:9876
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=XXXXXXXXX
- KRESUS_DIR=/home/xavier/XXXXXXXXXX/.kresus
- KRESUS_USER_ID=1000
- HOST=192.168.XXX.XXX
volumes:
- /home/xavier/XXXXXXX/data:/home/user/data
- /home/xavier/XXXXXXX/woob:/woob

J’ai cloné le contenu du git de woob dans le dossier /home/xavier/XXXXXXX/woob

Lorsque je fais « sudo docker compose up -d » tout s’execute mais quand je regarde dans Portainer les logs du container de Kresus j’ai l’erreur suivante:

├─ universalify@0.1.2

├─ utils-merge@1.0.1

├─ uuid@9.0.1

├─ vary@1.1.2

├─ warning@4.0.3

├─ xml2js@0.4.23

├─ xtend@4.0.2

├─ yargs-parser@21.1.1

└─ yargs@17.7.2

Done in 2.18s.

[ENTRYPOINT] Done.

[ENTRYPOINT] Changing rights on user home directory…

[ENTRYPOINT] Running kresus as user.

/usr/local/share/.config/yarn/global/node_modules/streamroller/lib/RollingFileWriteStream.js:282

      throw e;

      ^

Error: EACCES: permission denied, mkdir ‹ /home/xavier/XXXXXXXX/.kresus ›

at Object.mkdirSync (node:fs:1391:3)

at mkdir (/usr/local/share/.config/yarn/global/node_modules/streamroller/lib/RollingFileWriteStream.js:270:19)

at RollingFileStream._renewWriteStream (/usr/local/share/.config/yarn/global/node_modules/streamroller/lib/RollingFileWriteStream.js:299:5)

at new RollingFileWriteStream (/usr/local/share/.config/yarn/global/node_modules/streamroller/lib/RollingFileWriteStream.js:94:10)

at new RollingFileStream (/usr/local/share/.config/yarn/global/node_modules/streamroller/lib/RollingFileStream.js:18:5)

at openTheStream (/usr/local/share/.config/yarn/global/node_modules/log4js/lib/appenders/file.js:64:20)

at fileAppender (/usr/local/share/.config/yarn/global/node_modules/log4js/lib/appenders/file.js:84:16)

at Object.configure (/usr/local/share/.config/yarn/global/node_modules/log4js/lib/appenders/file.js:144:10)

at /usr/local/share/.config/yarn/global/node_modules/log4js/lib/appenders/index.js:117:29

at Object.onlyOnMaster (/usr/local/share/.config/yarn/global/node_modules/log4js/lib/clustering.js:87:50) {

errno: -13,

syscall: ‹ mkdir ›,

code: ‹ EACCES ›,

path: ‹ /home/xavier/XXXXXXXXXX/.kresus ›

}

Node.js v18.20.5

Je n’arrive pas a comprendre, j’ai du surement faire des erreurs mais je n’arrive pas a savoir lesquelles ?
Pourriez vous m’aider ?

Merci !
Xavier

Bonjour, bienvenu par ici :wave:

J’ai deja un nginx de configurer sur le serveur qui me permet d’exposer certains de mes services donc j’aimerai bien aussi l’utiliser a la place de traefik (est-ce possible ?)

Tout à fait possible, je n’utilise que nginx également. Selon si ton nginx est sur l’hôte ou dans une instance docker également, la configuration va changer :

  • si nginx est sur l’hôte, tu auras besoin d’assigner une IP fixe au service kresus dans un réseau pont entre les docker et le réseau de ta machine, puis de faire un upstream vers cette IP fixe sur le port de Kresus (9876 par défaut)
  • si nginx est dans une instance docker aussi, tu auras besoin que les instances de kresus et de nginx soient sur le même réseau docker ; ensuite tu peux configurer un upstream vers le nom de l’instance kresus (plutôt qu’une IP) + le port.

On pourra revenir là-dessus si besoin, en attendant…


Alors il y a un souci de droits :

  • l’image de Kresus, au démarrage, essaie de changer les droits à l’intérieur du container, pour avoir tous les droits sur les fichiers à l’intérieur ; ça permet de mettre à jour woob plus facilement, etc.
  • il semblerait que tu aies instancié l’image de Kresus avec sudo, ou bien qu’il y ait un souci sur /home/xavier/XXXX/.kresus.

Donc, je vois deux pistes :

  • soit /home/xavier/XXXX n’existe pas, et je ne sais plus si dans ce cas-là docker-compose va créer le répertoire : s’il n’existe pas, essaie de le créer à la main au préalable avec mkdir -p /home/xavier/XXXX
  • s’il existe déjà, peut-être qu’il a hérité des droits root, dans ce cas-là, tu peux essayer de le supprimer avec les droits root, et de le recréer dans un second temps :
    # rm -r /home/xavier/XXXX # en root
    $ mkdir -p /home/xavier/XXXX # avec ton user habituel xavier
    

Ensuite, tu peux essayer de lancer l’image avec ton user à toi, plutôt que root ; c’est généralement une bonne pratique d’éviter de lancer docker avec sudo :

  # docker-compose down # en root
  $ docker-compose up -d # avec ton user habituel xavier

Tiens nous au courant :slight_smile:

Bonjour,

Merci beaucoup pour votre retour rapide et tres constructif!
En effet je lance mon docker compose en root car j’avais des soucis de droits quand je le lancais avec mon user (xavier).

J’ai suivi la doc (lien vers doc) et ajouté un group docker que j’ai assigné a mon user xavier. J’ai pu ensuite lancer la commander docker compose avec mon user sans soucis.
Cependant le meme probleme apparait (avec la meme stacktrace).

  1. Petite question: dans la variable « KRESUS_DIR » est-ce qu’il faut que le nom du dossier soit « .kresus » ?
  2. Le dossier .kresus est crée avec xavier:xavier (et il existe avant que je lance le conteneur)
  3. Dans ma variable KRESUS_DIR j’ai mis le path suivant « /home/xavier/Docker_files/kresus-config/.kresus » , le dossier kresus-config est assigné avec les droits de mon user xavier, en revanche j’ai vu que une fois que le docker compose a été lancé le dossier « /home/xavier/Docker_files/kresus-config/data » (qui est mappé a /home/user/data dans le container) n’a plus les droits avec xavier:xavier mais il a xavier:bitwarden (un autre groupe que j’ai dans mon system) et tous les sous-dossiers en ont aussi herité), mais je ne comprends pas comment il arrive a selectionner ce groupe…

J’espere avoir apporté quelques informations supplementaires?

Merci,
Xavier