Installer Ubooquity sur Yunohost

Comment j’ai installé Ubooquity sur Yunohost

Pourquoi Ubooquity

Afin de pouvoir facilement télécharger mon ebooks, BD ou Manga sur ma liseuse j’avais besoin de les rendre accessible via internet.
En fouillant un peu, j’ai fini par choisir d’utiliser Ubooquity.

Avantages

  • facile à installer
  • supporte tous les formats qui m’intéresse (ebooks, manga et BD)
  • permet de lire ses livres en ligne
  • a une interface suffisamment minimale pour être lisible sur une liseuse

Inconvénients

  • pas open source
  • en java (je ne vois pas exactement ce qu’il y a dedans)
  • contient son propre serveur

Prérequis

Ubooquity a besoin d’avoir accès aux documents que vous voulez partager.
En ce qui me concerne, je stock tous mes bouquins chez moi, sur mon NAS. Mon Yunohost, en revanche, se trouve sur mon serveur Kimsuffi.
Pour synchroniser les deux, j’ai opté pour Syncthing, qui était déjà installé pour d’autres usages.

Pour faire tourner Ubooquity, vous aurez également besoin du JRE 8. Attention, les versions supérieurs ne sont pas encore supportées.

Pour le nom de domaine, j’ai organisé mes services comme telle: nomDuService.monDomaine.tld.
J’ai donc ajouté ubooquity.monDomaine.tld dans mes DNS.

Enfin, je n’ai pas beaucoup d’expérience en tutorial pour linux, aussi ce document s’adresse aux personnes qui savent ce qu’elles font sur leur serveurs !

L’Installation proprement dite

Mon but final est le suivant: avoir Ubooquity qui tourne en local sur le serveur. Passer par Nginx pour accéder à Ubooquity, en étant identifié par Yunohost.
Pour cela, j’utiliserai donc la Redirect App.

Tester ubooquity en ligne de commande

En suivant les instructions sur le site officiel j’'ai fait comme suit.

  • Connectez vous à votre serveur en ssh
  • Allez dans votre répertoire home en faisant cd ~
  • Créez un nouveau dossier pour Ubooquity: mkdir ubooquity, puis aller dedans cd ./ubooquity
  • Téléchargez Ubooquity en faisant wget http://vaemendis.net/ubooquity/service/download.php -O ubooquity.zip
  • Dézippez l’archive unzip ubooquity, que vous pouvez ensuite supprimer rm ubooquity.zip

Vous devez maintenant avoir le fichier Ubooquity.jar présent.

Vous pouvez maintenant lancer Ubooquity en faisant ceci:
java -jar Ubooquity.jar --headless --libraryport 2202 --adminport 2203 --host 127.0.0.1

Qu’est-ce que cela signifie?

  • -jar Ubooquity.jar vous demandez à Java de lancer Ubooquity
  • --headless Ubooquity sera lancé sans interface graphique
  • --libraryport et --adminport Ubooquity écoute les requêtes clients sur deux ports, un pour afficher vos livre, et l’autre pour accéder à l’administration. Les ports par défaut sont 2202 et 2203, mais vous pouvez choisr ceux que vous souhaiter.
  • --host 127.0.0.1 Ubooquity n’écouter les requêtes que depuis la machine local.

Vous devriez voir une série de log apparaître, vous confirmant qu’ubooquity a bien démarré.
Tant que votre terminal sera ouvert, Ubooquity continuera à fonctionner. Pour l’arrêter, appuyez simplement sur q puis Enter.

Accéder à Ubooquity depuis l’extérieur

Section “Library”

Pour le moment, Ubooquity n’est pas accessible. Nous allons utiliser la Redirect App pour pouvoir régler ce problème.

Aller dans votre administration de Yunohost, installer l’app sur le nom de domaine que vous avez choisi.
Voici comment l’app est configurée dans mon cas:

  • Redirect Path: je choisis ici d’avoir Ubooquity accessible directement depuis mon sous domaine
  • Redirect destination path: faites bien attention à utiliser le même port que celui choisit pour --libraryport plus haut
  • Redirect Type: Nous utilisons Nginx comme proxy, c’est donc le premier choix qui nous intéresse

Une fois cela fait, rendez vous sur l’url que vous avez choisi. Vous devriez avoir accès à Ubooquity.

Section “Administration”

Comme j’ai installé l’App Redirect au root de mon sous domaine, je ne peux pas installer d’autre app dessus. Pour accéder à l’administration via ubooquity.monDomaine.tld/admin il me faut donc aller bidouiller la configuration Nginx de l’app.

Dans un nouveau terminal (souvenez vous, dans l’autre terminal, Ubooquity est toujours en train de tourner!), rendez vous dans la configuration nginx de l’app.

  • Faites cd /etc/nginx/conf.d/ubooquity.monDomaine.tld.d (remplacez mondDomaine.tld par votre propre domaine.
  • Vous trouverez ici le fichier de onfiguration de l’App Redirect, redirect.conf
  • Faites en une copie: sudo cp redirect.conf redirect-admin.conf
  • Éditez ce nouveau fichier via votre éditeur de choix, par exemple: sudo nano redirect-admin.conf
  • Changez la premiére ligne, remplaçant location / par location /admin
  • Changez le port du proxy_pass, remplaçant proxy_pass http://127.0.0.1:2202; par proxy_pass http://127.0.0.1:2203;. Attention, utilisez bien le port que vous avez spécifié dans --adminport plus haut!

Ensuite, rechargé la configuration de Nginx par la commande sudo service nginx reload.
Allez sur ubooquity.monDomaine.tld/admin: vous devriez avoir accès à Ubooquity. Vous pouvez commencer à faire vos réglages si vous le souhaitez.

Transformer Ubooquity en service

Tout ça c’est bien, mais pour l’instant Ubooquity tourne uniquement lorsque vous le démarrer depuis votre terminal.
Pour pouvoir le laisser tourner tout le temps, il suffit de créer un service, qui tournera en même temps que tous les autres déjà présents sur votre serveur.

Pour ce faire, je me suis inspiré de ce document.

Déplacer Uboooquity

Pour l’instant, Ubooquity se trouve dans votre dossier home. Nous allons le déplacer ailleurs.

  • Arrêtez ubooquity s’il tourne encore dans votre terminal (tapez q puis enter)
  • Allez dans votre dossier home cd ~
  • Déplacer le dossier d’Ubooquity dans le dossier opt: sudo mv ./ubooquity /opt
  • Assurez vous que le dossier ubooquity soit bien attribué à l’utilisateur et au groupe root, en faisant ls -l /opt

Créer un service

Nous allons créer un service qui se chargera de lancer Ubooquity au démarrage de votre serveur, et permettra l’utilisation des commandes suivantes

service ubooquity start
service ubooquity stop
service ubooquity status
  • Allez dans votre dossier init/d: cd /etc/init/d
  • Créez un nouveau fichier : sudo touch ubooquity
  • Rendez ce fichier exécutable sudo chmod 755 ubooquity
  • Utilisez votre éditeur préféré, et ajouter ceci dans votre fichier:
Fichier du service Ubooquity
#!/bin/sh

### BEGIN INIT INFO
# Provides:          ubooquity
# Required-Start:    $local_fs $remote_fs $network $syslog
# Required-Stop:     $local_fs $remote_fs $network $syslog
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# X-Interactive:     true
# Short-Description: Start/stop ubooquity server
### END INIT INFO

UBOOQUITY_PORT=2202
UBOOQUITY_ADMIN_PORT=2203
# Uncomment the following line to allocate more memory to Ubooquity
#MEM_OPT=-Xmx512m

cd /opt/ubooquity

case "$1" in
    start)
      count=`pgrep -fc Ubooquity.jar`
            if [ "$count" -gt "0" ];
                then
                    echo Ubooquity is already running;
                else
                    rm nohup.out
                    nohup java -jar /opt/ubooquity/Ubooquity.jar $MEM_OPT --headless --libraryport $UBOOQUITY_PORT --adminport $UBOOQUITY_ADMIN_PORT --host 127.0.0.1  2>&1 &
                    echo Ubooquity has been started;
            fi
      ;;

    stop)
      count=`pgrep -fc Ubooquity.jar`
            if [ "$count" -gt "0" ];
                then
                    echo stopping Ubooquity...
                    pkill -f "Ubooquity.jar"
                    echo Waiting 10 seconds before checking the server stopped...;
                    sleep 10

                    count=`pgrep -fc Ubooquity.jar`
                    if [ "$count" -gt "0" ];
                        then
                            echo Failed to stop Ubooquity: you can either wait a few more seconds or kill it manually;
                        else
                            echo Ubooquity has been stopped;
                    fi
                else
                    echo Ubooquity is NOT running, no need to stop it;
            fi
      ;;

    status)
      count=`pgrep -fc Ubooquity.jar`
            if [ "$count" -gt "0" ];
                then
                    echo Ubooquity is RUNNING;
                else
                    echo Ubooquity is NOT running;
            fi
      ;;

    *)
      echo $"Usage: $0 {start|stop|status}"
      exit 1

esac

Pensez bien à remplacer, au début du fichier, les ports que vous souhaitez utiliser pour la partie principale et l’administration d’Ubooquity.

  • Ajouter votre nouveau service en faisant sudo insserv ubooquity
  • Puis installez le en faisant sudo update-rc.d ubooquity defaults
  • Enfin, démarrez le avec sudo service ubooquity start

Vous devriez de nouveau avoir accès à Ubooquity via ubooquity.monDomaine.tld !

Conclusion

J’espère que ceci pourra être utile à tous ceux qui veulent accéder à leurs eBooks, Manga, BD et Comics de n’importe ou.

Je n’ai pas spécialement de connaissance en matière de script init.d, aussi, si vous avez des conseils je suis tout ouïe.
Par exemple, pour le moment les logs sont écrits dans /var/log/daemon.log. S’il y a moyen de les mettre ailleurs, je suis preneur!
De la même manière, Ubooquity tourne directement avec root. S’il y a moyen de sécuriser un peu tout ça, ça m’intéresse.

2 Likes

I am newbie here, great detail information for me, thank you