Hubzilla est une plate-forme Web open source pour créer des sites Web connectés en interne. Dans l'écosystème de Hubzilla, un serveur exécutant Hubzilla est appelé "hub" et un groupe de plusieurs hubs est appelé "grid". Les hubs au sein d'une grille communiquent entre eux pour partager des informations telles que les identités. Tout le monde peut publier des contenus publiquement ou en privé en utilisant un "canal", qui peut être une personne, un blog ou un forum. Il utilise un framework Zot basé sur JSON pour implémenter des communications et des services décentralisés sécurisés. Hubzilla regorge de fonctionnalités telles que les fils de discussion sur les réseaux sociaux, le stockage de fichiers dans le cloud, le calendrier et les contacts, l'hébergement de pages Web avec un système de gestion de contenu, un wiki et bien plus encore.
Conditions préalables
- Une instance de serveur Vultr Ubuntu 16.04.
- Un utilisateur sudo .
- Un nom de domaine pointé vers l'instance.
Pour ce didacticiel, nous utiliserons hubzilla.example.com
le nom de domaine pointé vers l'instance Vultr. Veuillez vous assurer de remplacer toutes les occurrences de l'exemple de nom de domaine par celui réel.
Mettez à jour votre système de base à l'aide du guide Comment mettre à jour Ubuntu 16.04 . Une fois votre système mis à jour, procédez à l'installation des dépendances.
Installer Nginx
Nginx est un serveur Web de production pour exécuter des applications Web.
Installez Nginx.
sudo apt -y install nginx
Démarrez Nginx et activez-le pour s'exécuter automatiquement au démarrage.
sudo systemctl start nginx
sudo systemctl enable nginx
Installez PHP 7.1
Hubzilla prend en charge les versions PHP supérieures à 5.6. Nous installerons PHP 7.1 pour garantir une vitesse, une sécurité et une compatibilité maximales. Ajoutez le référentiel Ubuntu pour PHP 7.1.
sudo add-apt-repository --yes ppa:ondrej/php
sudo apt update
Installez PHP version 7.1 avec les modules requis par Hubzilla.
sudo apt -y install php7.1 php7.1-mysql php7.1-curl php7.1-json php7.1-cli php7.1-gd php7.1-xml php7.1-mbstring php7.1-fpm imagemagick php7.1-zip
Modifiez le fichier de configuration PHP.
sudo nano /etc/php/7.1/fpm/php.ini
Trouvez la ligne suivante. Décommentez-le et définissez le fuseau horaire approprié.
date.timezone = Asia/Kolkata
;Replace "Asia/Kolkata" with your appropriate time zone
Définissez une limite de mémoire appropriée sur la configuration suivante. Le paramétrer sur -1
donnera une quantité de mémoire disponible illimitée à un script. Augmentez également les limites maximales de téléchargement de fichiers.
memory_limit = -1
upload_max_filesize = 100M
post_max_size = 100M
Ensuite, recherchez la ligne suivante et définissez sa valeur sur 0
après la décommentation.
cgi.fix_pathinfo=0
Démarrez-le php7.1-fpm
et activez-le pour qu'il démarre automatiquement au démarrage.
sudo systemctl restart php7.1-fpm
sudo systemctl enable php7.1-fpm
Créez un répertoire de session et fournissez des autorisations d'écriture.
sudo mkdir /var/lib/php/session
sudo chmod -R 777 /var/lib/php/session
Maintenant, passez à l'installation de MariaDB.
Installer MariaDB
MariaDB est un fork de MySQL. Ajoutez le référentiel MariaDB à votre système, car le référentiel Ubuntu par défaut contient une ancienne version de MariaDB.
sudo apt-key adv --recv-keys --keyserver hkp://keyserver.ubuntu.com:80 0xF1656F24C74CD1D8
sudo add-apt-repository 'deb [arch=amd64,i386,ppc64el] http://mirror.nodesdirect.com/mariadb/repo/10.2/ubuntu xenial main'
sudo apt update
Installez MariaDB.
sudo apt -y install mariadb-server
Fournissez un mot de passe fort pour l'utilisateur root MariaDB lorsque vous y êtes invité. Démarrez MariaDB et activez-le pour démarrer automatiquement au démarrage.
sudo systemctl start mariadb
sudo systemctl enable mariadb
Avant de configurer la base de données, vous devrez sécuriser MariaDB. Vous pouvez le sécuriser en exécutant le mysql_secure_installation
script.
sudo mysql_secure_installation
Le mot de passe root de MariaDB vous sera demandé. Fournissez le mot de passe que vous avez défini lors de l'installation. Il vous sera demandé si vous souhaitez modifier le mot de passe existant de l'utilisateur root de votre serveur MariaDB. Vous pouvez ignorer la définition d'un nouveau mot de passe, car vous avez déjà fourni un mot de passe fort lors de l'installation. Répondez " Y
" à toutes les autres questions posées.
Connectez-vous au shell MySQL en tant que root.
mysql -u root -p
Fournissez le mot de passe pour que l'utilisateur root MariaDB se connecte.
Exécutez les requêtes suivantes pour créer une base de données et un utilisateur de base de données pour l'installation de Hubzilla.
CREATE DATABASE hubzilla_data;
CREATE USER 'hubzilla_user'@'localhost' IDENTIFIED BY 'StrongPassword';
GRANT ALL PRIVILEGES ON hubzilla_data.* TO 'hubzilla_user'@'localhost';
FLUSH PRIVILEGES;
EXIT;
Vous pouvez remplacer le nom hubzilla_data
et le nom d' utilisateur de la base de données hubzilla_user
selon votre choix. Veuillez vous assurer de changer StrongPassword
pour un mot de passe très fort.
Installer Hubzilla
Installez Git. Git est requis pour cloner le référentiel Hubzilla de Github.
sudo apt -y install git
Basculez vers le répertoire racine Web et clonez le référentiel Hubzilla.
cd /var/www
sudo git clone https://github.com/redmatrix/hubzilla.git hubzilla
Créez un nouveau répertoire pour stocker les données Hubzilla.
cd hubzilla
sudo mkdir -p "store/[data]/smarty3"
sudo chmod -R 777 store
Clonez et installez les modules complémentaires Hubzilla.
sudo util/add_addon_repo https://github.com/redmatrix/hubzilla-addons.git hzaddons
sudo util/update_addon_repo hzaddons
Fournissez la propriété du répertoire et des fichiers à l'utilisateur Nginx.
sudo chown -R www-data:www-data /var/www/hubzilla
Créer un hôte virtuel
Il est important d'avoir SSL installé sur un site Hubzilla, car les connexions et autres données peuvent être compromises si elles ne sont pas cryptées. Dans ce didacticiel, nous utiliserons des certificats SSL obtenus par l'autorité de certification Let's Encrypt.
Ajoutez le référentiel Certbot.
sudo add-apt-repository --yes ppa:certbot/certbot
sudo apt-get update
Installez Certbot, qui est l'application cliente de Let's Encrypt CA.
sudo apt -y install certbot
Remarque: Pour obtenir des certificats de Let's Encrypt CA, le domaine pour lequel les certificats doivent être générés doit être dirigé vers le serveur. Sinon, apportez les modifications nécessaires aux enregistrements DNS du domaine et attendez que le DNS se propage avant de refaire la demande de certificat. Certbot vérifie l'autorité de domaine avant de fournir les certificats.
Générez les certificats SSL.
sudo certbot certonly --webroot -w /var/www/html -d hubzilla.example.com
Les certificats générés sont susceptibles d'être stockés dans /etc/letsencrypt/live/hubzilla.example.com/
. Le certificat SSL sera stocké sous fullchain.pem
et la clé privée sera stockée sous privkey.pem
.
Les certificats Let's Encrypt expirent dans 90 jours, il est donc recommandé de configurer le renouvellement automatique des certificats à l'aide des tâches Cron.
Ouvrez le fichier de tâche cron.
sudo crontab -e
Ajoutez la ligne suivante à la fin du fichier.
30 5 * * * /usr/bin/certbot renew --quiet
La tâche cron ci-dessus s'exécutera tous les jours à 5h30. Si le certificat doit expirer, il sera automatiquement renouvelé.
Créez un nouveau fichier de configuration pour Hubzilla Server.
sudo nano /etc/nginx/sites-available/hubzilla
Remplissez le fichier.
server {
listen 80;
server_name hubzilla.example.com;
index index.php;
root /var/www/hubzilla;
rewrite ^ https://hubzilla.example.com$request_uri? permanent;
}
server {
listen 443 ssl;
server_name hubzilla.example.com;
ssl on;
ssl_certificate /etc/letsencrypt/live/hubzilla.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/hubzilla.example.com/privkey.pem;
ssl_session_timeout 5m;
ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA:ECDHE-RSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-RSA-AES256-SHA256:DHE-RSA-AES256-SHA:ECDHE-ECDSA-DES-CBC3-SHA:ECDHE-RSA-DES-CBC3-SHA:EDH-RSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:DES-CBC3-SHA:!DSS;
ssl_prefer_server_ciphers on;
fastcgi_param HTTPS on;
index index.php;
charset utf-8;
root /var/www/hubzilla;
access_log /var/log/nginx/hubzilla.log;
client_max_body_size 20m;
client_body_buffer_size 128k;
location / {
if ($is_args != "") {
rewrite ^/(.*) /index.php?q=$uri&$args last;
}
rewrite ^/(.*) /index.php?q=$uri last;
}
location ^~ /.well-known/ {
allow all;
rewrite ^/(.*) /index.php?q=$uri&$args last;
}
location ~* \.(jpg|jpeg|gif|png|ico|css|js|htm|html|map|ttf|woff|woff2|svg)$ {
expires 30d;
try_files $uri /index.php?q=$uri&$args;
}
location ~* \.(tpl|md|tgz|log|out)$ {
deny all;
}
location ~* \.php$ {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/run/php/php7.1-fpm.sock;
include fastcgi_params;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~ /\. {
deny all;
}
location ~ /store {
deny all;
}
}
Activez la configuration.
sudo ln -s /etc/nginx/sites-available/hubzilla /etc/nginx/sites-enabled/hubzilla
Testez la configuration du serveur Web Nginx.
sudo nginx -t
Vous verrez la sortie suivante.
user@vultr:~$ sudo nginx -t
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok
nginx: configuration file /etc/nginx/nginx.conf test is successful
Si vous ne voyez aucune erreur dans la configuration, redémarrez Nginx pour que la nouvelle configuration puisse prendre effet.
sudo systemctl restart nginx
Emballer
Accédez à l' https://hubzilla.example.com
aide de votre navigateur préféré et vous verrez la page Web montrant l'interface "vérification du système". Vous verrez que chaque exigence réussit lors de la vérification du système. Sur l'interface suivante, fournissez les détails de la base de données que vous avez créés précédemment. Ensuite, fournissez l'adresse e-mail de l'administrateur, l'URL du site Web et le fuseau horaire. Hubzilla est maintenant installé sur votre serveur, vous pouvez continuer à créer l'utilisateur administrateur avec l'e-mail administrateur que vous avez utilisé lors de l'installation.
Enfin, vous devrez configurer cron pour exécuter les tâches planifiées toutes les dix minutes.
Créez un nouveau fichier pour le travail cron.
sudo nano /etc/cron.d/hubzilla
Remplissez le fichier avec les éléments suivants.
*/10 * * * * www-data cd /var/www/hubzilla; /usr/bin/php Zotlabs/Daemon/Master.php Cron
Redémarrez le service cron.
sudo systemctl restart cron
Si vous souhaitez créer un ensemble local de documentation, exécutez les commandes suivantes.
cd /var/www/hubzilla
util/importdoc
sudo chown www-data:www-data -R /var/www/hubzilla
Hubzilla est maintenant installé et configuré, vous pouvez inviter vos amis et utiliser la plateforme comme vous le souhaitez.