HumHub, un réseau social open-source
HumHub est un réseau social open-source basé sur le Framework PHP Yii et compatible mobile où l’on retrouve les fonctionnalités de base comme la timeline, les profils utilisateurs, le follow, le like, les notifications, les groupes, les partages de fichiers ou médias, etc … Une suite de modules complémentaires est disponible pour compléter les possibilités comme les sondages, la messagerie privée, le calendrier, la gestion de tâches …
Le réseau social peut être utilisé sur les serveurs de Humhub avec une offre limitée ou installé via une interface intuitive sur votre serveur personnel. La plateforme permet une configuration totalement privée ou de laisser le choix aux utilisateurs de gérer la confidentialité de leur page personnelle.
Le réseau social open-source privé
Le design inspiré d’un mix entre Facebook et Twitter est agréable et responsive, ce qui rend la première utilisation très facile. Simple à installer, Humhub est un réseau social qui intéressera les entreprises, associations ou groupes de personnes qui souhaitent partager leurs données privées avec des amis ou collaborateurs sans être soumis aux abus des plus grands comme Facebook, Twitter ou Google sur les données récoltées.
Il est léger, puissant et est livré avec une interface conviviale. Avec HumHub, vous pouvez créer votre propre réseau social personnalisé, intranet social ou énorme application d’entreprise sociale qui correspond vraiment à vos besoins.
Site : https://www.humhub.org
Installation de Humhub sur Linux Ubuntu Server 20.04.3 LTS
Nous allons utiliser la version LTS de Linux Ubuntu Server 20.04
Configuration requise:
- Serveur Web Apache ou Nginx avec mod_php ou php-fpm
- 64 Mo de mémoire alloués à PHP
- 500 Mo pour les applications
- 100 Mo pour la base de données
- PHP 7.3 ou 7.4
- PHP avec extensions – GD, Curl, MBString, MySQL, ZIP, EXIF, INTL, FileInfo, ImageMagick (facultatif mais recommandé), LDAP, APC et Memcached
- MariaDB 10.1+ ou MySQL 5.7+
Configuration matérielle de la VM:
- 4 vCPU
- 4 Go de RAM
- 60 Go de stockage
- IP fixe
- DNS
Je considère que vous savez installer un serveur Ubuntu , passons directement aux choses sérieuses !

Mise à jour de la liste des paquets et des paquets eux-mêmes:
# apt update && apt upgrade
Installation du serveur web Apache :
#sudo apt install apache2 libapache2-mod-xsendfile php-fpm
Activation des modes FPM et FCGI pour Apache:
#sudo a2enconf php7.4-fpm
#sudo a2enmod proxy_fcgi setenvif
#systemctl restart apache2
Installation de la dernière version de PHP:
#sudo apt install php php-cli php-imagick php-curl php-bz2 php-gd php-intl php-mysql php-zip php-apcu-bc php-apcu php-xml php-ldap
Configuration du PHP.ini pour augmenter les tailles limites de téléchargement et d’exécution des scripts:
#nano etc/php/7.4/cli/php.ini
Modifiez les valeurs correspondants:
post_max_size = 32M
max_execution_time = 120
upload_max_filesize = 32M
Relancez Apache:
#systemctl restart apache2
Installation et la configuration de la base de données MySQL:
#apt install mysql-server mysql-client automysqlbackup
Sécurisation de MySQL:
Supprimez la base de données de démo et les utilisateurs, y compris les accès distants de MySQL.
#mysql_secure_installation
Connexion à MySQL et la création de la base:
Création d’une nouvelle base de données:
CREATE DATABASE `humhub` CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
Création d’un nouvel utilisateur:
CREATE USER 'humhubuser' IDENTIFIED BY 'changeme';
Création des autorisations de gestion de la BDD pour l’utilisateur que nous venons de créer:
GRANT ALL ON humhub.* TO `humhubuser`@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
EXIT;
Téléchargement et l’installation de Humhub:
#cd /tmp
#wget https://www.humhub.com/download/package/humhub-1.9.1.tar.gz
#sudo tar -xvf humhub-*.*.tar.gz
#sudo mv humhub-*.*/ /var/www/humhub
#sudo chown -R www-data: /var/www/humhub
Création de VirtualHost pour Humhub:
#sudo nano /etc/apache2/sites-available/humhub.conf
Ajoutez ceci dans le fichier humhub.conf:
###################################
<VirtualHost *:80>
ServerAdmin admin@hub.dudix.tech
ServerName hub.dudix.tech
ServerAlias www.hub.dudix.tech
DocumentRoot /var/www/humhub
<Directory /var/www/humhub/>
Options -Indexes -FollowSymLinks
AllowOverride All
</Directory>
<DirectoryMatch “/var/www/humhub/(\.|protected|themes/\w+/views|uploads/file)”>
Order Deny,Allow
Deny from all
</DirectoryMatch>
<FilesMatch “^\.”>
Order Deny,Allow
Deny from all
</FilesMatch>
</VirtualHost>
###############################
Suppression du fichier de conf par défaut d’Apache:
#sudo rm /etc/apache2/sites-available/000-default.conf
Activation du VirtualHost que nous venons de créer:
#sudo a2ensite humhub
#systemctl reload apache2
L’installation est terminée. Accédez au serveur selon l’accès que vous avez configuré, ou par son nom de domaine ou l’adresse IP.
Avec la configuration de mon nom de domaine perso de chez OVH hub.dudix.tech, les renvoies du pare-feu pfSense interne et du reverse proxy Squid vers mon serveur Ubuntu (avec un certificat Let’s Encrypt global géré en interne sur Squid), en tapant https://hub.dudix.tech je tombe sur la page de Humhub Configuration Toolbox :

Voici le profil de l’Admin visible par les autres utilisateurs du réseau (après quelques personnalisations)

Pour la gestion des notifications lors des mises à jours des statuts, des commentaires et des « J’aimes » nous devons paramétrer une tache cron comme suit:
#crontab -e -u www-data
Copiez ceci dans le fichier crontab:
* * * * * /usr/bin/php /var/www/humhub/protected/yii queue/run >/dev/null 2>&1
* * * * * /usr/bin/php /var/www/humhub/protected/yii cron/run >/dev/null 2>&1
Si nous souhaitons que notre serveur envoie les mails aux utilisateurs nous devons configurer le serveur SMTP dans le menu Administration > Paramètres > Avancé > E-mail (pensez à ouvrir le port SMTP/SSL 465 sur le pare-feu) :

Dans la parties Modules de nôtre serveur Humhub nous avons un certains nombre de modules que nous pouvons ajouter en un clic:

Un nouvel utilisateur sur notre réseau social Open-source, privé et sécurisé !
Son nom me dit quelque chose…
