Hello,

Je ne sais pas si il y en a beaucoup qui maitrisent Traefik et qui du coup vont pouvoir m'aider:
J'ai installé ubooquity en container, traefik gère la partie reverse proxy.
Jusqu'à présent, j'utilise le docker-compose ci dessous pour ubooquity.

  ubooquity:
    image: linuxserver/ubooquity
    container_name: ubooquity
    restart: always
    ports:
      - 2203:2203
    volumes:
      - /home/user/docker/ubooquity:/config
      - /home/user/Media/Ebooks/Livres:/books
      - /home/user/Media/Ebooks/BD:/comics
    labels:
      - traefik.backend=ubooquity
      - traefik.frontend.rule=Host:ubooquity.mondomaine.fr
      - traefik.port=2202
      - traefik.frontend.entryPoints=http,https
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=Europe/Paris
      - MAXMEM=1024

En soit cela fonctionne mais j'aimerai optimiser car les chemins d'accès à ubooquity sont assez chiants:
http://serveur:2202/ubooquity/ pour le portail de lecture
http://serveur:2203/ubooquity/admin/ pour le portail d'admin

A ce jour, j'ai réussi à rediriger ubooquity.mondomaine.fr vers serveur:2202
il faut que je rajoute /ubooquity derriere et pour le portail d'admin bah faut que je renseigne le port bref c'est galère.
Ma premiere question est donc:
puis je créer une autre serie de label qui mapperait adminubooquity.mondomaine.fr vers serveur:2203 ??
j'ai un peu creusé et j'avour que je ne pige pas comment gérer un second frontend et evidemment le port associé.

Ma seconde est:
quitte à faire les choses bien, je me suis dit que ubooquity.mondomaine.fr pourrait renvoyer vers monserveur:2202/ubooquity/, bref eviter d'ajouter le chemin en plus.
En lisant la doc de traefik, j'ai vu qu'on pouvait utiliser AddPrefix de manière à rajouter /ubooquity.
Cela fonctionne à moitié, je suis bien redirigé vers la bonne page mais par contre aucune icone/photo de la page ne se charge, je me trouve juste avec le texte, j'avoue ne pas comprendre. Si quelqu'un a eu une idee...

Merci

Salut,

Mon docker-compose:

version: '2.3'

services:
  ubooquity:
    restart: always
    image: zerpex/ubooquity-docker
    container_name: stream-comics_Ubooquity
    hostname: library
    labels:
    - traefik.enable=true
    - traefik.frontend.rule=Host:bd.domain.tld
    - traefik.backend.port=2202
    - traefik.admin.frontend.rule=Host:bdadm.domain.tld
    - traefik.admin.backend.port=2502
    - traefik.docker.network=traefik_proxy
    volumes:
      - /data/media/Bibliotheque:/media:rw
      - ./files/ubooquity/conf:/config:rw
      - /etc/localtime:/etc/localtime:ro
    environment:
      - UID=1069
      - GID=1069
      - TZ=Europe/Paris
    networks:
      - traefik_proxy

networks:
  traefik_proxy:
    external:
      name: traefik_proxy

    zer Super cela semble répondre à mon point 1.
    Je teste cela.
    Petite question: à quoi correspond traefik.docker.network=traefik_proxy?
    c'est quoi le plus ?
    J'ai ajmais touché aux options/fonctions networks.

    As tu essayé la fonction AddPrefix pour eviter l'ajout de /ubooquity et /ubooquity/admin??

    Merci

    • zer a répondu à ça.

      christophebe ça sert à spécifier à traefik quel réseau il doit utiliser 😉

      Pas besoin d'addprefix, tu peux le changer directement dans l'interface d'admin d'Ubooquity: c'est plus propre 😉

      A tout hazard, si quelqu'un trouve une alternative open-source et non java à Ubooquity, je suis preneur !

        8 mois plus tard

        Salut à tous,

        Je fais remonter le topic, car j'ai un souci avec docker et ubooquity. Je n'arrive seulement à y avoir accès via 'url: nomdedomaine:2202/ubooquity et nomdedomaine:2203/ubooquity/admin et ceux qu'importe l'image docker (linuxserver ou zerpex)
        Pourtant dans mon docker-compose, j'ai renseigné les bons labels...
        ubooquity:
        image: linuxserver/ubooquity
        container_name: ubooquity
        restart: unless-stopped
        labels:
        - traefik.enable=true
        - traefik.frontend.rule=Host:ubooquity.${FQDN}
        - traefik.port=2202
        - "traefik.admin.frontend.rule=Host:ubooquity.${FQDN}; PathPrefix:/admin,/admin-res,/admin-api"
        - traefik.admin.port=2203
        - traefik.docker.network=proxy
        volumes:
        - ${RTORRENT_DIR}Ebooks/:/media
        - ${CONFIG_DIR}ubooquity/:/config
        - /etc/localtime:/etc/localtime:ro
        environment:
        - UID=1000
        - GID=1000
        - MAXMEM=1024
        ports:
        - 2202:2202
        - 2203:2203
        networks:
        - proxy

        Mais quand j'essaie d'avoir accès via l'url ubooquity.nomdomaine.com, j'ai une erreur 404 et via l'admin panel: ubooquity.nomdomaine.com/admin j'ai un erreur 500:
        HTTP ERROR 500
        Problem accessing /admin. Reason:
        Could not find matching provider (wrong URL)

        Je ne vois pas du tout où est l'erreur...

        EDIT: En modifiant le fichier preferences.json: "reverseProxyPrefix" : "ubooquity", -> "reverseProxyPrefix" : "", , j'arrive à accéder à ubooquity.nomdomaine.com/admin, mais pas à ubooquity.nomdomaine.com.
        EDIT2: C'est bon, j'y suis arrivé, j'avais oublié un truc. J'ai modifié:
        traefik.frontend.rule=Host:ubooquity.${FQDN}
        traefik.port=2202

        en
        traefik.app.frontend.rule=Host:ubooquity.${FQDN}
        traefik.app.port=2202

        EDIT3: J'ai supprimé:
        ports:
        2202:2202
        2203:2203

        Sinon, j'avais toujours accès depuis nomdomaine.com:2202 ou 2203

        Je pige plus rien avec tes edits.. ça fonctionne ou non ? 😃

          Oui oui ça fonctionne. Il fallait juste que je supprime le chemin dans le fichier json d'Ubooquity reverseProxyPrefix

          10 mois plus tard

          zer Merci pour ton image qui fonctionne nickel, juste une question concernant les variables environnement. UID et GID ne semble avoir aucun impact sur les droits, notamment si je souhaite appliquer les droits d'un utilisateur. Du coup le dossier config monté sur l'hôte reste en root. Est il nécessaire de les conserver?

          Merci

          • zer a répondu à ça.

            laster13 Je t'avoue que je n'ai pas mis les pieds dans cette image depuis quelques mois... Faut dire que le dev n'est vraiment pas prolifique et refuse toujours d'ouvrir le code.
            Après, Ubooquity fonctionne bien et je n'ai toujours pas trouvé mieux ATM.

            J'essaye de trouver le temps de regarder ce we et je te répond plus sérieusement 🙂

            10 jours plus tard

            @laster13

            Désolé, j'ai mis un peu plus de temps que prévus, mais j'ai enfin regardé mon code, et effectivement, je ne gère pas l'UID.

            Après archéologie dans ma mémoire, j'avais choisi de le faire délibérément car je voulais le faire le plus simple possible et gérer l'UID et le GID oblige à rajouter des fichiers supplémentaires (script de lancement, fichiers service....). Là, il n'y a qu'un seul Dockerfile.

            Par contre, je me rend compte effectivement que je fais tout en root comme un sale. Je vais rajouter la création d'un utilisateur normal dans le container et démarrer le service avec histoire de nettoyer ça ^^

            Je fais ça asap.

            C'est fait, je créé un utilisateur ubooquity (id 1042) dans le container.
            J'ai rencontré un soucis auquel je ne me serai pas attendu et n'ai pas trouvé de réelle solution, en gros, quand docker-compose créé les volumes partagés, il le fait avec l'utilisateur exécutant docker.

            Afin d'éviter une erreur de droits lors de l'exécution, il faut bien vérifier que le dossier "config" appartienne à l'utilisateur "1042" avant exécution !

                mkdir /PATH/TO/UBOOQUITY/CONFIG
                chown -R 1042:1042 /PATH/TO/UBOOQUITY/CONFIG

            Si quelqu'un a une solution plus automatique, je suis preneur !
            Pour le reste, ça a l'air de fonctionner.

            z.

            4 jours plus tard

            Bonjour,

            Désolé de te répondre tardivement, je viens de tester avec tes consignes préalable et ça fonctionne. Je vais voir s'il y a moyen de pouvoir forcer un utilisateur lambda, si je trouve je reviens vers toi 😉

            Encore merci

            Répondre…