Installer do•doc sur un serveur dédié

Bonjour,

suite à de nombreuses demandes, voici un tutoriel pour vous aider à installer do•doc (ou un autre logiciel libre de l’Atelier des chercheurs comme Les Cahiers du Studio, Plateau ou Millefeuille par exemple. Le premier sujet est un tutoriel maintenu à jour expliquant pas à pas comment procéder pour l’installation en particulier pour do•doc. Les autres outils possèdent leur spécificité mais sont quasiment identiques à installer. Une mention spéciale à Jean-Luc de la DSI de Paris qui a essuyé les plâtres de la première installation à distance l’année dernière :slight_smile:

NOTE IMPORTANTE : si vous souhaitez uniquement mettre en ligne des contenus pour consultation, ce tuto n’est pas le bon. Rendez-vous ici pour les explications (nettement plus simples) : TUTO : mettre en ligne des médias et des publications

N’hésitez pas à répondre dans ce sujet si vous rencontrez des soucis ou pour poster des retours d’expérience avec les hébergeurs, par exemple.


:warning: ATTENTION :warning:

Configurer et maintenir un serveur dédié nécessite de réaliser des manipulations techniques assez délicates, comme l’utilisation de lignes de commande. Si vous n’avez jamais ouvert un terminal de commande et géré de serveurs de ce type auparavant nous vous recommandons chaudement de vous familiariser avec tout ça avant de vous y attaquer. Nous ne pourrons être tenus responsables si votre serveur se fait pirater et que les contenus qui s’y trouvent finissent dans la nature.


Installer do•doc sur un hébergement dédié et le protéger par un mot de passe

Le but de ce tutoriel est de créer une instance du logiciel do•doc accessible par le navigateur à tout appareil connecté au web (en particulier ordinateurs, smartphones et tablettes).

Dernière mise à jour le 03/03/2020

Étape 1 : réservez un serveur dédié en ligne

Un serveur de type VPS simple suffit pour un do•doc partagé entre quelques dizaines de personnes.
Par exemple, chez OVH ou phpnet, pour 3 à 10 euros par mois vous pouvez réserver une machine virtuelle avec 1 cœur, 2 go de RAM et 20 à 25 go d’espace disque.
En terme de puissance ça devrait bien tourner, mais l’espace disponible est un peu juste. 40 ou 50go sont plus confortables.
À titre d’exemple et pour ce tutoriel je prends chez OVH un serveur VPS 2018 SSD 1 sous Ubuntu 18.04 à 4 euros par mois.

Étape 2 : s’y connecter

Vous pouvez ensuite vous connecter à votre serveur en utilisant un terminal, en SSH. Plus d’infos à ce sujet : https://docs.ovh.com/fr/dedicated/ssh-introduction/
Je vous recommande chaudement d’ajouter également des clés SSH pour sécuriser votre connexion au serveur : https://docs.ovh.com/fr/public-cloud/creation-des-cles-ssh/
Pour plus d’informations générales sur les VPS, une dernière référence : https://docs.ovh.com/fr/vps/debuter-avec-vps/

Récupérez donc l’accès à votre serveur dans le mail signalant son activation : il devrait s’y trouver son adresse IP (au format XX.XX.XX.XX) ainsi qu’un nom d’utilisateur type « root ».

Ouvrez une fenêtre de terminal (appli PowerShell sous Windows, Terminal sous macOS) puis entrez la commande en remplaçant la partie avant le @ par le nom d’utilisateur et celle après le @ avec votre adresse IP. Dans mon cas de figure ça donne :

  • ssh root@51.75.69.173

Un message indique que des mises à jour sont disponibles, vous pouvez les réaliser en lançant successivement les deux lignes suivantes et en acceptant les messages de confirmations qui apparaissent :

  • sudo apt-get update

puis

  • sudo apt upgrade

À cette étape-là ça a du sens de sécuriser votre serveur : créer un autre utilisateur non-root dont les droits sont limités, installer un pare-feu type ufw, etc.
Ce n’est pas le sujet de ce tuto donc je ne détaille pas cette partie là.

Étape 3 : installer les outils nécessaires

Pour faciliter la mise à jour et le déploiement de do•doc, il faut installer git, nvm et python 2.7.

git

Le logiciel git est pré-installé sur les serveurs d’OVH. Il a pour but (notamment) de récupérer le code source des logiciels, de facilement rapatrier les derniers changements, voir de proposer d’autres modifications si vous souhaitez faire du développement.

Pour vérifier sa présence, tapez la commande suivante :

  • git --version

Si celle-ci n’affiche pas un numéro de version, alors il faut installer git :

  • sudo apt-get install git-core

nvm

nvm (pour node version manager) permet d’installer plusieurs versions de node.js et de basculer de l’une à l’autre. Node.js est la plate-forme qui gère l’exécution du code côté serveur, en particulier le stockage des contenus de do•doc.
Pour installer nvm lancez les commandes suivantes dans l’ordre :

  • sudo apt-get install build-essential libssl-dev

  • sudo wget -qO- https://raw.githubusercontent.com/nvm-sh/nvm/v0.35.2/install.sh | bash

  • source ~/.bashrc

À cette étape là vous devriez pouvoir envoyer des commandes à nvm. La ligne suivante installe la version 8.9.3 de Node.js :

  • nvm install v8.9.3

Puis pour l’utiliser, et la régler par défaut :

  • nvm use 8.9.3

  • nvm alias default 8.9.3

En tapant la commande nvm ls vous pouvez voir la version de Node.js active sur la première ligne, ainsi que toutes celles actuellement installées sur la machine. Pour plus d’infos sur nvm vous pouvez retrouver un chapitre à ce sujet sur le site de Thomas Parisot : https://oncletom.io/node.js/chapter-02/#nvm

Histoire d’être bien sur, vous pouvez taper node -v pour vérifier que node est bien installé et que la version actuelle est bien la 8.9.3.

python

python est nécessaire pour certaines dépendances de do•doc (en particulier sharp) que nous installerons par la suite

  • apt-get install python2.7
  • ln -s /usr/bin/python2.7 /usr/bin/python

Dépendances de Puppeteer

Pour pouvoir exporter en PDF et un image les contenus de la marmite, il faut installer les paquets suivantes :

  • sudo apt-get install libx11-xcb1 libxcomposite1 libxi6 libxext6 libxtst6 libnss3 libcups2 libxss1 libxrandr2 libasound2 libpangocairo-1.0-0 libatk1.0-0 libatk-bridge2.0-0 libgtk-3-0

Étape 4 : récupérer et installer do•doc

Pour ces étapes là il faut connaître quelques commandes pour naviguer dans le disque dur de votre serveur avec le terminal. La base, c’est :

  • cd /le-chemin/vers-le-dossier
    pour naviguer vers un dossier précis

  • cd mon-sous-dossier
    pour naviguer vers un sous-dossier du dossier courant

  • cd ../ pour remonter dans le dossier parent

  • ls pour lister tout le contenu du dossier courant

Rendez-vous dans le dossier home de votre serveur en tapant :

  • cd /home

Listez ensuite son contenu pour voir ce qui s’y trouve :

  • ls

Un dossier intitulé ubuntu se trouve sur ce serveur. Nous allons installer do•doc dedans (mais vous pouvez le placer ailleurs si vous préférez).

Nous pouvons rapatrier l’intégralité du code source de do•doc en une fois avec git en tapant :

  • git clone https://github.com/l-atelier-des-chercheurs/dodoc.git

Cela va automatiquement créer un dossier du nom de dodoc dans le dossier courant (ici, le dossier dont le chemin est /home/ubuntu).

Ouvrez ce dossier en tapant :

  • cd dodoc

Il existe de nombreuses versions de do•doc et le code source est par défaut réglé sur la version application (celle que vous pouvez télécharger sur le site de l’Atelier des chercheurs). Il faut donc basculer vers une version spécifiquement adaptée aux contraintes des serveurs dédiés.

Pour changer de version (branche, en langage git) : git checkout nom-de-la-branche. À savoir qu’il y a deux branches possibles :

  • dodoc2-node est la dernière version stable du logiciel
  • dodoc2-dev-node est la dernière version expérimentale, qui contient des modifications peu testées encore.

Il est possible de passer de l’une à l’autre mais cela comporte le risque de ne plus pouvoir accéder à certains contenus (par exemple, une nouvelle recette de la marmite qui ne sera pas présente sur la version stable si vous revenez en arrière). Les versions expérimentales sont en règle général assez stable (nous les utilisons en atelier tout le temps) mais il existe toujours le risque d’un soucis important encore non détecté… Bref, à vous de voir :slight_smile:

Dans notre cas, nous allons installer la branche dev :

  • git checkout dodoc2-dev-node

Git devrait vous répondre ensuite Switched to a new branch 'dodoc2-dev-node'

Il nous faut maintenant installer les dépendances de do•doc. Il y en a plusieurs dizaines pour la partie serveur et pour la partie client (la gestion des données et l’interface graphique de do•doc).

Commencez par taper la commande qui indique de récupérer toutes les dépendances de la partie serveur. Cela peut prendre de 2 à 5 minutes en fonction de la puissance et de la vitesse de la connexion internet de votre serveur (et non la votre).

  • npm install

Rendez-vous dans le sous-dossier public et réitérez l’opération :

  • cd public

  • npm install

Puis lancez la création du code JavaScript « client » pour les navigateurs :

  • npm run build

Si vous changez de branche, n’oubliez pas de relancer les 4 étapes précédentes : npm install dans le dossier principal et dans /public, puis npm run build dans le dossier /public.

Revenez maintenant dans le dossier principal de do•doc :

  • cd ../

Étape 5 : exécuter do•doc

Vous devriez pouvoir lancer do•doc avec la commande :

  • npm run debug

Un certain nombre de lignes apparaissent, elles permettent de « débugger » do•doc (pratique pour le développement). Si tout se passe bien la dernière ligne devrait être Server up and running. Go to https://localhost:8080.

Ouvrez votre navigateur web et connectez-vous à votre serveur en tapant https://XX.XX.XX.XX:8080/
(dans mon cas de figure, avec un serveur sur l’IP 51.75.69.173 ça donne https://51.75.69.173:8080/).

Un avertissement vous signale qu’il n’y a pas de certificat (ce qui est obligatoire pour une connexion en HTTPS), mais vous pouvez le contourner et continuer vers le site. Et voilà !

Pour stopper do•doc, appuyez sur les touches Ctrl + C du clavier. À noter que si vous fermez le terminal, cela arrêtera aussi do•doc. La prochaine étape est d’installer un gestionnaire de processus qui s’assurera que do•doc reste lancé même si nous fermons le terminal et la connexion par SSH.

Installer et utiliser pm2

PM2 est un gestionnaire d’application (process manager) écrit entièrement en Node.js. Le code est open source et disponible sur Github et il existe une documentation complète. Il va nous permettre de garantir que notre application continue d’être exécutée après avoir fermé la connexion SSH (plus d’informations sur openclassrooms).

Pour installer pm2 sur votre serveur :

  • npm install pm2 -g

Vous pouvez ensuite créer un processus faisant tourner do•doc en lançant la commande suivante :

  • pm2 start npm --name "dodoc" -- run start

(la commande start tout à la fin de la ligne démarre do•doc en mode normal et pas en mode debug)
L’écran suivant devrait s’afficher :

Quelques commandes de base avec pm2 :

  • arrêter le processus nommé dodoc : pm2 stop dodoc
  • le relancer : pm2 restart dodoc
  • le supprimer de la liste : pm2 delete dodoc
  • lister les processus dans pm2 : pm2 ls
  • lancer automatiquement pm2 au redémarrage du serveur : pm2 startup
  • enregistrer la liste des processus et leur état, pour qu’ils soient restaurés au redémarrage du serveur : pm2 save

En règle général c’est une bonne idée à cette étape de réaliser un pm2 save puis pm2 startup, histoire que pm2 relance dodoc tout seul si le serveur redémarre (suite à un plantage ou à une grosse mise à jour par exemple).

Rattacher un nom de domaine et un certificat

À venir


Maintenance, options et améliorations

Changer le port par défaut, l’emplacement du stockage, etc.

Les règlages les plus couramment modifiés sont stockés dans un fichier nommé settings_base.json (vous pouvez le consulter sur github ici https://github.com/l-atelier-des-chercheurs/dodoc/blob/dodoc2-master/settings_base.json).

Vous pouvez consulter son contenu avec l’éditeur texte nano en tapant :

nano settings_base.json

Vous pourriez modifier directement les valeurs (par exemple en changeant la valeur associée à userDirname pour dire à dodoc de stocker les contenus ailleus que dans le dossier « dodoc2 » qui est réglé par défaut). Mais cela est fortement déconseillé, car lorsque vous mettrez à jour ce dodoc avec git il y a toute les chances pour que ces modifications soient écrasées et annulées.

Pour éviter ce désagrément et modifier malgré tout ces valeurs, réalisez les opérations suivantes :

  1. quittez nano avec les touches Ctrl + X

  2. copiez le fichier nommé settings.example.json en renommant la copie settings.json

cp settings.example.json settings.json

  1. ouvrez la copie

nano settings.json

  1. vous pouvez ici modifier le port utilisé par dodoc, l’emplacement de stockage, ou réécrire n’importe quelle valeur du fichier settings_base.json : celles de settings.json auront toujours la priorité.

Cela est utile par exemple pour gérer plusieurs instances de do•doc en parallèle : chacune doit tourner sur un port différent, et stocker les contenus dans un dossier différent.

Voici un exemple de modifications de ce type :

image

Quittez ensuite nano (Ctrl + X), qui vous demandera si vous souhaitez enregistrer vos modifications (touche Y puis entrée) ou non (touche N puis entrée). Relancez dodoc pour que ces modifications soient prises en compte.

À noter : le champ qui gère le port s’appelle desired_port car ce n’est qu’une préférence : si un autre logiciel occupe déjà ce port, alors do•doc prendra le prochain disponible (par exemple, le 8071 si le 8070 est occupé) et démarrera quand même.

Lancer plusieurs dodoc en parallèle

À venir

Sauvegarder les contenus

À venir

Mettre à jour et changer de branche

À venir

Mot de passe global

À venir

bonjour
j’ai installé la version serveur, juste une question
la partie « à venir » mot de passe global (dernier chapitre) permettra-t-elle de sécuriser l’accès au site tel qu’il est, car pour le moment, mon dodoc serveur installé est accessible, la seule restriction est si j’attribue un mot de passe au projet, mais quiconque désirant devenir auteur ou lancer un projet peut le faire.
Mon fils propose de vous envoyer un tuto pour " Rattacher un nom de domaine et un certificat" car il l’a fait. J’entends par là qu’il propose son aide pour le tutoriel, hein pas qu’il vuille vous apprendre à le faire lool

Bonjour !

Chouette :slight_smile: Pas de difficulté dans le tuto ?

C’est bien ça. Exemple : https://dodoc.latelier-des-chercheurs.fr/
Pas de mot de passe global, pas d’accès.

Ha mais oui ! Avec grand plaisir :slight_smile: Mettez-le dans une réponse à ce sujet et je peux le copier-coller dans mon post ci-dessus.