Humhub

De Reliable Brain

J'ai recherché récemment un outil permettant de créer un petit réseau social au niveau du boulot.

L'outil devait permettre le travail collaboratif, l'échange de documents, de gérer des groupes.

Je suis tombé sur HumHub que je n'avais jamais testé, et pour cause, l'outil est jeune mais extrêmement prometteur.

Installation

Depuis Ubuntu Server 18.04

  1. Installer Apache2
    apt install apache2
  2. installer php et ses extensions
    apt install php-gmagick php-imagick php-gd php-curl php-zip php-mysql php-ldap php-intl php-apcu php-sqlite3</source
    # Installer serveur SQL <source>apt install mariadb-server
  3. Redémarrer Apache pour intégrer toutes les extensions PHP
    service apache2 restart
  4. Se connecter au serveur SQL
    mysql -u root
  5. Sécuriser et créer la base de données
    use mysql;<source>
    update user set plugin='' where User='root';
    flush privileges;
    \q
  6. Sécuriser le serveur SQL
    mysql_secure_installation
  7. Valider sans mot de passe, pour répondre Y à Set root password? [Y/n]
  8. Saisir 2 fois le mot de passe root
  9. Accepter "Remove anonymous users? [Y/n] Y"
  10. Accepter "Disallow root login remotely? [Y/n] Y"
  11. Accepter "Remove test database and access to it? [Y/n] Y"
  12. Accepter "Reload privilege tables now? [Y/n] Y"
  13. Se reconnecter avec le compte root
    mysql -u root -p
  14. Créer la base de données
    CREATE DATABASE `humhub` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
  15. Donner les droits à un compte créé à la volée
     GRANT ALL ON `humhub`.* TO `humhub_dbuser`@localhost IDENTIFIED BY '<motdepasse>';
  16. Recharger les privilèges
    FLUSH PRIVILEGES;
  17. Et sortir
    exit;
  18. Suivre la procédure d'installation

XSendFile : Téléchargement des PJ

Voilà l'un des points qui nous a donné le plus de fil à retordre. S'il est facile d'uploader sur HumHub, le download ne se faisait pas. Les images n'apparaissent pas, et le téléchargement proposait des fichiers de 0Kb.

Il faut procéder en 3 temps :

  1. Installer le composant XSendFile si ce n'est pas déjà fait
  2. Activer l'option dans "Administration" > "Réglages" > "Fichiers" puis cocher la case "Activer le support X-Sendfile"
  3. Modifier le fichier de configuration d'Apache ou le .htaccess
  4. ajouter :
XSendFile On
XSendFilePath /path/to/humhub/uploads

Relancer Apache :

 /etc/init.d/apache2 restart

Normalement, tout devrait être OK.


Erreur SQLSTATE[HY000] [2002] No such file or directory

EtherPad

Ce module est génial, car il permet un vrai travail collaboratif, et un Chat. De plus, avec l'installation d'AbiWord, il devient possible d'importer et d'exporter des documents Microsoft Office ou LibreOffice, en plus des .rtf et .txt

Installation d'EtherPad

La démarche est ici : https://github.com/humhub/humhub-modules-notes/blob/master/README.md, mais plus précisément décrite ici : https://github.com/ether/etherpad-lite#installation

Ce qui donne, pour un serveur Debian sur lequel on en profitera pour installer node.js si ce n'est pas déjà fait :

apt-get install gzip git curl python libssl-dev pkg-config build-essential
apt-get install curl
curl -sL https://deb.nodesource.com/setup | bash -
apt-get install -y nodejs build-essential

# Création d'un user ether pad
adduser etherpad
cd /home/etherpad

# Installation d'Etherpad via git
git clone git://github.com/ether/etherpad-lite.git

Il est possible de tester immédiatement :

bin/run.sh

Ouvrir un navigateur avec http://@IP:9001 pour tester si Etherpad permet de créer des notes. Faire Ctrl-C pour stopper EtherPad.

  1. Avec phpmyadmin, j'ai créé un user etherpad avec sa base de données éponyme, au format MyISAM
  2. Aussitôt après, modifier le fichier /home/etherpad/etherpad-lite/settings.json pour indiquer l'utilisation de cette base de données,
  3. Désactiver "dbType" : "dirty" au profit de "dbType" : "mysql"
  4. compléter les champs en dessous avec le nom de la base et du compte etherpad et mot de passe associé
  5. En profiter aussi pour modifier les paramètres suivants du fichier settings :
    1. "ip" : "Adresse IP de la machine"
    2. "sessionKey" : créer un code de 10 caractères de long ou plus
    3. "abiword" : normalement, une fois que ce module est installé, le chemin doit être "/usr/bin/abiword". A vérifier avec la commande "which abiword"
  6. Désactiver les /* et */ autour du bloc "users" afin de permettre l'utilisation des comptes user et admin surtout pour l'ajout de plugin en mode Web.
  7. Enregistrer le fichier settings.json
  8. Ouvrir le fichier APIKEY.txt, copier le contenu dans un presse-papier
  9. installer le module EtherPad dans HumHub depuis l'interface d'administration, puis l'activer, et le configurer
  10. Coller le presse-papier dans le champ APIKEY du module Etherpad dans l'interface d'administration de HumHub

quelques optimisations

  1. Open your settings.json file
    1. Set maxAge to a LARGE value such as 99999999
    2. Set minify to true
  2. Utiliser impérativement une base de donnée en lieu et place du module DirtyDB
  3. Utiliser le moteur de base MyISAM en lieu et place de InnoDB
  4. Supprimer les plugins inutiles

Source : https://github.com/ether/etherpad-lite/wiki/Optimizing-Etherpad


Ajouter Abiword

Abiword est un traitement de texte, mais il sera ici utilisé comme un service par etherpad.

sudo apt-get install abiword

Relancer Etherpad

Lancer etherpad comme un service

Suivre le document suivant : https://github.com/ether/etherpad-lite/wiki/How-to-deploy-Etherpad-Lite-as-a-service

#!/bin/sh

### BEGIN INIT INFO
# Provides:          etherpad-lite
# 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
# Short-Description: starts etherpad lite
# Description:       starts etherpad lite using start-stop-daemon
### END INIT INFO

PATH="/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/opt/node/bin"
LOGFILE="/var/log/etherpad/etherpad.log"
EPLITE_DIR="/usr/share/etherpad"
EPLITE_BIN="bin/safeRun.sh"
USER="etherpad"
GROUP="etherpad"
DESC="Etherpad"
NAME="etherpad"

set -e

. /lib/lsb/init-functions

start() {
  echo "Starting $DESC... "
  
	start-stop-daemon --start --chuid "$USER:$GROUP" --background --make-pidfile --pidfile /var/run/$NAME.pid --exec $EPLITE_DIR/$EPLITE_BIN -- $LOGFILE || true
  echo "done"
}

#We need this function to ensure the whole process tree will be killed
killtree() {
    local _pid=$1
    local _sig=${2-TERM}
    for _child in $(ps -o pid --no-headers --ppid ${_pid}); do
        killtree ${_child} ${_sig}
    done
    kill -${_sig} ${_pid}
}

stop() {
  echo "Stopping $DESC... "
  if test -f /var/run/$NAME.pid; then
    while test -d /proc/$(cat /var/run/$NAME.pid); do
      killtree $(cat /var/run/$NAME.pid) 15
      sleep 0.5
    done
    rm /var/run/$NAME.pid
  fi
  echo "done"
}

status() {
  status_of_proc -p /var/run/$NAME.pid "" "etherpad" && exit 0 || exit $?
}

case "$1" in
  start)
	  start
	  ;;
  stop)
    stop
	  ;;
  restart)
	  stop
	  start
	  ;;
  status)
	  status
	  ;;
  *)
	  echo "Usage: $NAME {start|stop|restart|status}" >&2
	  exit 1
	  ;;
esac

exit 0

Désormais, etherpad se lance, se stoppe et se relance comme apache : /etc/init.d/etherpad restart


Ajout de plugins

Se rendre sur la page <@IP du serveur>:9001/admin et s'authentifier.

Mettre à jour

Faire un backup des bases de données et des fichiers

git pull
/var/www/<nom du répertoire contenant HumHub>/protected/yiic update