[Résolu] Problème lancement Fabmanager sur le navigateur

Bonsoir tout le monde!
@Sylvain, @sleede
J’ai lancé la mise en production de fabmanager sur notre serveur: Debian Jessie. C’est après le test en développement réussi. Je me suis bloqué au niveau de la génération du certificat SSL par letsencrypt. Après l’exécution de la commande docker-compose up -d, j’exécute la commande systemctl start letsencrypt.service, mais une erreur apparaît dont je n’arrive pas à bien interpréter:

Job for letsencrypt.service failed. See ‹ systemctl status letsencrypt.service › and ‹ journalctl -xn › for details. Et voici ce que journalctl -xn m’affiche :

– Logs begin at ven. 2017-10-20 11:05:34 WAT, end at lun. 2017-10-30 18:02:00 WAT. –
oct.
30 18:01:59 vm-fablab kernel: aufs au_opts_verify:1570:dockerd[24021]:
dirperm1 breaks the protection by the permission bits on the lower
branch
oct. 30 18:01:59 vm-fablab kernel: device veth528e285 entered promiscuous mode
oct. 30 18:01:59 vm-fablab kernel: IPv6: ADDRCONF(NETDEV_UP): veth528e285: link is not ready
oct. 30 18:02:00 vm-fablab kernel: IPv6: ADDRCONF(NETDEV_CHANGE): veth528e285: link becomes ready
oct. 30 18:02:00 vm-fablab kernel: br-e21ef55ad198: port 5(veth528e285) entered forwarding state
oct. 30 18:02:00 vm-fablab kernel: br-e21ef55ad198: port 5(veth528e285) entered forwarding state
oct.
30 18:02:00 vm-fablab dockerd[471]:
time=« 2017-10-30T18:02:00.363191495+01:00 » level=error msg=« containerd:
notify OOM events » error="cgroup path
oct. 30 18:02:00 vm-fablab kernel: br-e21ef55ad198: port 5(veth528e285) entered disabled state
oct. 30 18:02:00 vm-fablab kernel: device veth528e285 left promiscuous mode
oct. 30 18:02:00 vm-fablab kernel: br-e21ef55ad198: port 5(veth528e285) entered disabled state

J’ai également vérifié le fichier de log de letsencrypt, sans trouver
une solution à apporter. Voici le contenu du fichier de log:

2017-10-30 11:06:09,144:DEBUG:certbot.main:certbot version: 0.10.2
2017-10-30 11:06:09,144:DEBUG:certbot.main:Arguments: [‹ -q ›]
2017-10-30 11:06:09,145:DEBUG:certbot.main:Discovered plugins: PluginsRegistry(PluginEntryPoint#apache,PluginEntryPoint#webroot,PluginEntryPoint#null,PluginEntryPoint#manual,PluginEntryPoint#standalone)
2017-10-30 11:06:09,155:DEBUG:parsedatetime:parse (top of loop): [30 days][]
2017-10-30 11:06:09,165:DEBUG:parsedatetime:CRE_UNITS matched
2017-10-30 11:06:09,165:DEBUG:parsedatetime:parse (bottom) [][30 days][][]
2017-10-30 11:06:09,165:DEBUG:parsedatetime:weekday False, dateStd False, dateStr False, time False, timeStr False, meridian False
2017-10-30 11:06:09,165:DEBUG:parsedatetime:dayStr False, modifier False, modifier2 False, units True, qunits False
2017-10-30 11:06:09,166:DEBUG:parsedatetime:_evalString(30 days, time.struct_time(tm_year=2017, tm_mon=10, tm_mday=30, tm_hour=11, tm_min=6, tm_sec=9, tm_wday=0, tm_yday=303, tm_isdst=0))
2017-10-30 11:06:09,166:DEBUG:parsedatetime:_buildTime: [30 ][][days]
2017-10-30 11:06:09,166:DEBUG:parsedatetime:units days → realunit days
2017-10-30 11:06:09,166:DEBUG:parsedatetime:return
2017-10-30 11:06:09,166:INFO:certbot.renewal:Cert not yet due for renewal
2017-10-30 11:06:09,166:DEBUG:certbot.renewal:no renewal failures

NB: Je ne comprends pas bien : Important: app must be run on http before starting letsencrypt

Quelqu’un pour m’aider? D’avance, merci!
Je voudrais vous informer que j’utilise notre propre infrastructure d’hébergement.

Salut,

Tes messages d’erreur ne me disent rien … Toutefois, le warning « app must be run on http … » me laisse penser que tu devrais déjà essayer de faire fonctionner ton fab-manager sans SSL, vérifier que tout fonctionne correctement avant d’ajouter let’s encrypt. Dans les tous les cas, pour la première configuration de let’s encrypt, le serveur devra tourner sans SSL (en http simple) pour que le service puisse valider que tu es bien le propriétaire du domaine.

Essaye déjà comme ça et tiens nous au courant,
Bonne journée,

Sylvain

Bonsoir @Sylvain,
Je me réjouis de ta prompte réaction. En effet, je ne sais pas comment faire fonctionner fabmanager puisqu’il ne s’ouvre pas sur le navigateur. La commande docker-compose ps me donne comme résultat :
root@vm-fablab:/opt/fabmanager# docker-compose ps
Name Command State Ports
---------------------------------------------------------------------------------------------
fabmanager_elasticsearch_1 /docker-entrypoint.sh elas … Up 9200/tcp, 9300/tcp
fabmanager_fabmanager_1 /usr/bin/supervisord Up 3000/tcp
fabmanager_nginx_1 nginx -g daemon off; Restarting
fabmanager_postgres_1 docker-entrypoint.sh postgres Up 5432/tcp
fabmanager_redis_1 docker-entrypoint.sh redis … Up 6379/tcp

Je ne sais pas si c’est le fait que le statut de nginx est à OFF que fabmanager ne tourne pas sur le navigateur. J’ai déjà fouillé un peu partout dans les fichier d’aide et readme en vain. Je compte sur tout le monde pour résoudre ce problème qui me hante :smile:.
Bonne soirée!

Salut,
Effectivement le fait que nginx ne fonctionne pas est surement la raison pour laquelle tu ne peux pas accéder à fab-manager dans ton navigateur. Et nginx ne fonctionne probablement pas à cause de ta configuration let’s encrypt.
As-tu essayé de la supprimer et de relancer nginx ?
Tiens moi au courant,
Bonne journée

Salut,
J’ai effectivement réglé quelques paramètres et fabmanager démarre. Mais en http, je n’arrive pas encore à le faire tourner en https. Merci pour vos contributions. Voici mon fichier config:

upstream puma {
  server fabmanager:3000;
}

server {
  listen 80;
  server_name ongolafablab.cm, www.ongolafablab.cm;
  root /usr/src/app/public;

  location ^~ /assets/ {
    gzip_static on;
    expires max;
    add_header Cache-Control public;
  }

  try_files $uri/index.html $uri @puma;
  location @puma {
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header Host $http_host;
    proxy_redirect off;
    proxy_pass http://puma;
  }

  client_max_body_size 4G;
  keepalive_timeout 10;

  error_page 500 502 504 /500.html;
  error_page 503 @503;

  # Return a 503 error if the maintenance page exists.
  if (-f /usr/src/app/public/maintenance.html) {
    return 503;
  }

  location @503 {
    # Serve static assets if found.
    if (-f $request_filename) {
      break;
    }

Une aide SVP !!!

Hello,

Afin de générer le tout premier certificat via Letsencrypt et partant du principe que ton application fonctionne parfaitement sur HTTP, il faut alors suivre les étapes suivantes :

1ère étape : il faut ajouter ceci à ton fichier de configuration nginx :

required by letsencrypt to generate the certificat

location /.well-known/acme-challenge {
root /etc/letsencrypt/webrootauth;
default_type « text/plain »;
}

2ème étape, il faut suivre les étapes de la doc sur cette partie : fab-manager/docker at master · sleede/fab-manager · GitHub
Donc :

  • création du fichier dhparam.pem
  • création des dossiers nécessaires à Letsencrypt
  • création du fichier webrootauth avec le nom de domaine cible (avec et sans www) (et alias si nécessaire) dont tu souhaites générer un SSL. Attention, le premier domaine indiqué dans le fichier webrootauth sera le domaine principal.
  • récupérer l’image letsencrypt et créer le service permettant de le lancer.

=> A ce stade, il faut redémarrer les services afin de prendre en compte les modifications. (docker-compose down puis docker-compose up -d)
Attention, bien vérifier que le fichier docker-compose possède bien le montage du volume suivant (${PWD}/letsencrypt/etc:/etc/letsencrypt)

3ème étape, lancer le service letsencrypt afin de générer le certificat SSL.
Si tout va bien, la commande ne doit pas retourner d’erreur et un dossier « live » doit être créé dans /apps/fabmanager/letsencrypt/etc comportant le certificat SSL notamment.
Si erreur, il faudra poster les logs sur le forum (logs de systemctl + /apps/fabmanager/log/letsencrypt…

4ème étape : modifier le fichier nginx de l’app et activer le SSL (voir fichier d’exemple https://github.com/LaCasemate/fab-manager/blob/master/docker/nginx_with_ssl.conf.example)
=> il suffit donc d’ajouter les instructions SSL (listen 443 ssl_certificate, ssl_*). Attention à bien customiser le path vers les certificats SSL (/etc/letsencrypt/live/MAIN_DOMAIN/privkey.pem; MAIN_DOMAIN doit être remplacé par le premier domaine indiqué dans le fichier webrootauth, ce sera le domaine principal)

Puis de créer éventuellement une redirection 301 du domaine HTTP vers HTTPS (mieux) puis de relancer tous les services Dockers.

5ème étape: ajouter le service letsencrypt.timer (voir la doc) afin d’automatiser la renouvellement du certificat SSL (expire au bout de 90 jours)

Bonjour,
Je reviens pour remercier tous ceux qui ont participé à la résolution de mon (mes) problème(s). Tout est enfin en ordre, je m’attelle maintenant à paramétrer fabmanager.
Quelqu’un pourrait me donner un coup de pousse pour m’expliquer pourquoi fabmanager n’envoie pas de mail à mes utilisateurs?
Un autre souci: Fabmanager génère les factures pdf en € alors que l’interface web affiche en FCFA comme j’ai configuré. Une aide ?
Merci ! :slight_smile:

Hello,

Difficile de répondre sur le problème des emails sans plus d’informations.
A minima, il faut vérifier les logs, et les paramètres SMTP dans les variables d’environnements (fabmanager requiert un service externe permettant d’envoyer les emails).
En étant connecté en tant qu’admin à Fabmanager, il est aussi possible de voir l’état du traitement des emails et éventuellement les erreurs via une interface : www.ongolafablab.cm/admin/sidekiq

Concernant le pb de la devise sur le PDF, peut être que @Sylvain a une idée ?

A+

1 « J'aime »

Bonjour,
Merci pour l’aide. J’attends la réaction de @Sylvain pour résoudre le problème de devise sur la facture pdf.
Bon après-midi.

Bonjour @bmohamet,

Les devises affichés dans l’interface et les devises utilisées pour la génération de facture sont configurées via deux variables différentes, comme expliqué ici.

RAILS_LOCALE configure la devise utilisée pour la génération de factures,
ANGULAR_LOCALE configure la devise utilisée dans l’interface.

Pour savoir quelle valeur configurer dans RAILS_LOCALE, tu peux regarder la clef number.currency.format.unit dans les fichiers config/locales/rails.*.yml.

Si aucun fichier ne contient la devise attendue, il va te falloir le créer en faisant un fork du projet (sur github) puis, une fois ton fichier créé, en ouvrant une pull request pour que ton fichier soit intégré à l’image docker.

Bonjour @Sylvain,
Merci pour ce coup de pousse. Je viens de créer un fock de fab-manager. J’ai de ce fait, créé un fichier rails.fr-CM.yml sur la base de rails.fr.yml dans lequel j’ai ajouté la devise FCFA au niveau de unit. J’ai alors fait un pull request et j’attends l’intégration afin que je fasse un pull de fabmanager.
Je te remercie pour l’aide que tu continues de m’apporter pour la mise en œuvre de fabmanager pour notre fablab.
A bientôt.

1 « J'aime »

Salut, j’ai intégré ton fichier à la branche dev ce matin. Il me reste encore quelques changements à intégrer mais je devrais publier la nouvelle version intégrant ta devise vers la fin de la semaine, ou semaine prochaine au plus tard.
Bonne journée

Bonjour @Sylvain,
Je l’ai constaté ce matin et j’en suis fier.
Je tiens à informer toute la communauté que je viens d’employer la méthode conseillée pour l’envoi de mails via smtp et tout roule à merveille.
Voici ma config:
DELIVERY_METHOD=smtp
SMTP_ADDRESS=domaine_mon_serveur_smtp
SMTP_PORT=25
SMTP_USER_NAME=
SMTP_PASSWORD=
NB: quelques modifications dans mon serveur smtp auraient été nécessaires pour permettre l’envoi des mails. Tout dépend de la politique de sécurité du serveur.
Merci à tous pour votre contribution.
Lien fabmanager: Ongola Fablab

2 « J'aime »

Salut @sleede,
Cette proposition de solution m’a beaucoup aidé à résoudre mon problème. Le certificat a été bien généré et tout marche à merveille.
:smile:
MERCI

Salut @bmohamet,

Je viens juste de publier la release stable 2.6.1 (un peu tard j’en convient :grin:) qui contient, entre autres améliorations, la devise FCFA.
Tu peux procéder à la mise à jour en suivant la procédure décrite ici.
Bonne journée

Salut @Sylvain,
Je suis ravis, je saute tout de suite sur la mise à jour!
Merci et bonne journée! :slight_smile:

1 « J'aime »