CodiMD

Connexion au conteneur

Se connecter au conteneur codimd sur troll3:

  sudo lxc-attach --name codimd

Ou alors directement en SSH après avoir ajouté sa clef SSH dans `/root/.ssh/authorized_keys` du conteneur :

  ssh -J root@troll3.parinux.org root@192.168.1.86

Maintenance

Consulter les logs

journalctl | grep yarn

Arrêter/Démarrer le service

Avec SystemD:

su - codimd
systemctl --user start codimd # Démarrer le service
systemctl --user stop codimd # Arrêter le service

Installation du service CodiMD

Installation des paquets

Paquets standards sous Debian Stretch

apt-get install sqlite curl apt-transport-https git bzip2

Paquets non-standards

NPM

il faut utiliser les backports:

apt-get -t stretch-backport install npm

NodeJs

La version 8.5 ou supérieure étant requise, il passer par une installation manuelle en s’inspirant de cette page:

curl -sSL https://deb.nodesource.com/gpgkey/nodesource.gpg.key | apt-key add -
VERSION=node_13.x # Désignation de la version de NodeJS, ici la dernière au moment de l'écriture de ce wiki
DISTRO=stretch
echo "deb https://deb.nodesource.com/$VERSION $DISTRO main" >> /etc/apt/sources.list.d/nodesource.list
echo "deb-src https://deb.nodesource.com/$VERSION $DISTRO main" >>  /etc/apt/sources.list.d/nodesource.list
apt-get update
apt-get install nodejs

Yarn

D'après cette procédure du projet yarn:

curl -sS https://dl.yarnpkg.com/debian/pubkey.gpg | apt-key add -
echo "deb https://dl.yarnpkg.com/debian/ stable main" >> /etc/apt/sources.list.d/yarn.list
apt update && apt install yarn

Création de l'utilisateur CodiMD

Lancer la commande de création d'utilisateur codimd avec son répertoire /opt/codimd

useradd -m -d /opt/codimd/ -s /bin/bash codimd

Se connecter comme utilisateur codimd

Rester dans la session de l'utilisateur codimd pour la suite:

su - codimd

Récupération du dépôt git

Récupérer le dépôt git sous le répertoire /opt/codimd/

git clone https://github.com/codimd/server.git

Installation des dépendances par yarn

Aller dans le dossier server pour lancer l'installation de ces dépendances:

cd server
bin/setup

Configuration générale du service

Modifier le bloc production du fichier config.json

  "production": {
      "domain": "codimd.parinux.org",
      "email": false,
      "allowEmailRegister": false,
      "protocolUseSSL": true,
      "loglevel": "info",
      "sessionSecret": "<sessionSecret>",
      "allowGravatar": false,

Configuration de l'accès à la base de donnée

Création de l'utilisateur sur Postgres

Se connecter au conteneur postgres et faire la création de l'utilisateur codimd:

su - postgres
createuser --pwprompt codimd # Attention à définir son mot de passe ensuite!
createdb -O codimd codimd

Configuration du service

Sur le conteneur codimd, modifier le bloc db comme suit:

      "db": {
          "password": "<Mot de passe>",
          "database": "codimd",
          "host": "<Nom ou IP de la BDD>",
          "port": "5432",
          "dialect": "postgres"
          

Mise en place de l'authentification avec Keyclock

FIXME Prendre cette page

Configuration de authentification SAML

Prendre cette page

FIXME Faire une conf adapté

Configuration de authentification LDAP

D'après cette page cette page:

"ldap": {                                                                                          
    "url": "ldap://<Adresse IP du serveur LDAP>:389",
    "bindDn": "uid=codimd,ou=applications,dc=parinux,dc=org",                                      
    "bindCredentials": "<Mot de passe de la branche>",
    "searchBase": "ou=people,dc=parinux,dc=org",                                                   
    "searchFilter": "(&(objectClass=inetOrgPerson)(|(uid={{username}})(mail={{username}})))",      
    "usernameField": "uid",                                                                        
    "useridField": "uid"                                                                           
    }

Compilation du front-end

yarn --cwd /opt/codimd/server --prod run build

Lancement du serveur en mode manuel

yarn --cwd /opt/codimd/server --prod run start

Lancement du serveur avec SystemD

Ce paragraphe s'est inspiré de cette page. Le wiki de ArchLinux fourni une page détaillée.

Lancer sous root cette commande au préalable pour activer le lancement du service au boot:

loginctl enable-linger codimd

Ensuite, se connecter sous l'utilisateur codimd.

Créer d'abord le fichier /opt/codimd/.config/systemd/user/codimd.service sous l'utilisateur codimd :

[Unit]
Description=CodiMD Server
After=network.target

[Service]
ExecStart=/usr/bin/yarn --cwd /opt/codimd/server --prod run start

[Install]
WantedBy=multi-user.target

Ensuite, activer le service codimd.service:

systemctl --user enable codimd.service

Il ne reste plus qu'à lancer le service:

systemctl --user start codimd.service

Instance de dev 'codimd-plus'

Particularités

  • Version expérimentale pour l'implémentation de fonctions supplémentaires (support des modèles avec auto-complétion)
  • Utilisateur en codimd-plus, avec appel service différent (systemctl –user <opération> codimd-plus)
  • Pas de connexion au LDAP
  • Une base de donnée séparée codimd-plus

Création et montage initial du volume LVM

mkdir /var/lib/lxc/codimd-plus
lvcreate -L10G -n lxc_codimd-plus troll3-vg
mkfs.ext4 /dev/mapper/troll3--vg-lxc_codimd--plus
mount /dev/troll3-vg/lxc_codimd-plus /var/lib/lxc/codimd-plus/

Déclaration du montage dans '/etc/fstab'

Ajout de la ligne correspondante avec vim:

/dev/troll3-vg/lxc_codimd-plus /var/lib/lxc/codimd-plus/ ext4 defaults 0 2

Clonage de l'instance de production

FIXME: Commande à éviter car elle oblige à arrêter l'instance de prod:

lxc-clone -o codimd -n codimd-plus 

Création du conteneur de dev

sudo lxc-create -n codimd-plus -t debian -- -r jessie

Choisir l'IP à mettre en listant les IPs déjà pris

lxc-ls -f --fancy-format ipv4 | sort -h

Modifier le fichier '/var/lib/lxc/codimd-plus/config' issu de la copie de '/var/lib/lxc/codimd-plus/config'

Modifier les champs suivants: lxc.network.hwaddr et lxc.network.ipv4

Lance, puis arrêter le conteneur de dev pour générer les fichiers d'init.

lxc-start -d --name codimd-plus
lxc-stop --name codimd-plus 

Copie avec rsync

ATTENTION: Mettre bien nice pour ne pas perturber les services déjà déployés.

nice -n 15 rsync -av /var/lib/lxc/codimd/rootfs/ /var/lib/lxc/codimd-plus/rootfs/

Création de la table séparée dans 'postgres'

createuser --pwprompt codimd-plus
createdb -O codimd-plus codimd-plus

Modification du hostname

TODO

Ajout zone DNS

TODO

Ajout proxy

TODO

Ajouter la variable d'environnement 'XDG_RUNTIME_DIR' pour couvrir un bug

Vu sur le forum de ArchLinux: ajouter cette ligne dans /opt/codimd/.bashrc

export XDG_RUNTIME_DIR=/run/user/$UID

Renommage du service

mv .config/systemd/user/codimd{,-plus}.service
 
/var/lib/dokuwiki/data/pages/si/codimd.txt · Dernière modification: 2020/04/13 16:27 par vodkra
Recent changes RSS feed Creative Commons License Donate Powered by PHP Valid XHTML 1.0 Valid CSS Debian Driven by DokuWiki