Récupération d'articles d'archives
This commit is contained in:
@@ -0,0 +1,324 @@
|
||||
---
|
||||
comments_url: https://com.richard-dern.fr/post/519
|
||||
date: '2012-02-08 00:34:00'
|
||||
dossier:
|
||||
- Créer son propre Cloud
|
||||
links:
|
||||
- lang: fr
|
||||
name: Page d'origine sur Archive.org
|
||||
url: https://web.archive.org/web/20120221004509/http://ingnu.fr/2012/02/08/communiquer-via-xmpp/
|
||||
tags:
|
||||
- Prosody
|
||||
- XMPP
|
||||
title: Communiquer via XMPP
|
||||
weather:
|
||||
humidity: 68
|
||||
illuminance: 0.0
|
||||
precipitations: false
|
||||
pressure: 1028.9
|
||||
source:
|
||||
- open-meteo
|
||||
temperature: -10.5
|
||||
wind_direction: 57
|
||||
wind_speed: 17.7
|
||||
weight: 7
|
||||
---
|
||||
|
||||
On utilise le protocole [XMPP](https://web.archive.org/web/20120221004509/http://xmpp.org/) notamment dans des applications de messagerie instantanées, mais son ouverture permet de l'embarquer dans à peu près tout type d'applications, y compris des réseaux sociaux.
|
||||
|
||||
Nous allons installer sur notre cloud personnel un serveur XMPP, qui, bien sûr, va nous permettre de communiquer avec le monde entier, mais dont nous nous servirons également à d'autres fins...
|
||||
|
||||
Nous exploiterons le serveur [prosody](https://web.archive.org/web/20120221004509/http://prosody.im/), et son serveur [BOSH](https://web.archive.org/web/20120221004509/http://fr.wikipedia.org/wiki/BOSH), qui va nous permettre de faire appel à une application web pour avoir son propre webchat et créer sa propre communauté.
|
||||
En outre, nous nous en servirons dans un prochain article consacré à un remplaçant pour Google+/facebook/twitter.
|
||||
|
||||
Depuis que j'écris [cette série d'articles consacrés au cloud personnel](https://web.archive.org/web/20120221004509/http://ingnu.fr/category/creer-son-propre-cloud/), j'essaye de proposer des guides mettant en place des solutions évolutives.
|
||||
Notre [serveur mail](https://web.archive.org/web/20120221004509/http://ingnu.fr/2012/02/06/installation-de-son-propre-serveur-mail/) est capable d'accueillir une infinité (virtuelle) de domaines et d'utilisateurs par exemple.
|
||||
J'appliquerai le même principe à prosody : vous pourrez disposer d'un nombre illimité de comptes sur un nombre illimité de domaines.
|
||||
|
||||
L'installation de prosody ne pose aucun problème, à condition de configurer le dépôt :
|
||||
|
||||
```bash
|
||||
echo "deb http://packages.prosody.im/debian stable main" > /etc/apt/sources.list.d/prosody.list
|
||||
apt-get update
|
||||
apt-get install prosody-0.9 liblua5.1-0 liblua5.1-dbi0 liblua5.1-expat0 liblua5.1-filesystem0 liblua5.1-sec0 liblua5.1-socket2 lua-zlib lua5.1
|
||||
```
|
||||
|
||||
Nous utiliserons notre base de données MySQL pour stocker les données de prosody.
|
||||
On va donc devoir créer un utilisateur dédié, que nous nommerons par exemple _XMPP_.
|
||||
[Procédez comme d'habitude](https://web.archive.org/web/20120221004509/http://ingnu.fr/2012/02/07/installation-dun-serveur-http-https/) (générez le mot de passe, définissez l'hôte comme étant "_localhost_", et créez la base de données portant le même nom).
|
||||
|
||||
## Configuration
|
||||
|
||||
On va se passer de la configuration par défaut :
|
||||
|
||||
```bash
|
||||
cd /etc/prosody
|
||||
/etc/init.d/prosody stop
|
||||
mv prosody.cfg.lua prosody.cfg.lua-orig
|
||||
rm conf.avail/* conf.d/*
|
||||
nano prosody.cfg.lua
|
||||
```
|
||||
|
||||
```text
|
||||
storage = "sql"
|
||||
sql = {
|
||||
driver = "MySQL";
|
||||
database = "XMPP";
|
||||
host = "localhost";
|
||||
username = "XMPP";
|
||||
password = "VotreMotDePasse";
|
||||
}
|
||||
|
||||
admins { "contact@exemple.fr" }
|
||||
|
||||
modules_enabled = {
|
||||
"roster";
|
||||
"saslauth";
|
||||
"dialback";
|
||||
"disco";
|
||||
"tls";
|
||||
"private";
|
||||
"vcard";
|
||||
"compression";
|
||||
"legacyauth";
|
||||
"version";
|
||||
"uptime";
|
||||
"time";
|
||||
"ping";
|
||||
"pep";
|
||||
"register";
|
||||
"privacy";
|
||||
"posix";
|
||||
"bosh";
|
||||
"groups";
|
||||
"announce";
|
||||
"watchregistrations";
|
||||
};
|
||||
|
||||
bosh_ports { "http-bind" }
|
||||
cross_domain_bosh = true
|
||||
|
||||
allow_registration = true;
|
||||
|
||||
log = {
|
||||
{ levels = { "error" }; to = "syslog"; };
|
||||
{ levels = { "error" }; to = "file"; filename = "/var/log/prosody/prosody.err"; };
|
||||
{ levels = { min = "info" }; to = "file"; filename = "/var/log/prosody/prosody.log"; };
|
||||
}
|
||||
|
||||
pidfile = "/var/run/prosody/prosody.pid"
|
||||
|
||||
Include "/etc/prosody/conf.d/*.lua"
|
||||
```
|
||||
|
||||
Quelques remarques :
|
||||
|
||||
- La directive _admins_ permet de renseigner prosody des comptes autorisés à accéder aux fonctions d'administrations. Vous devez y mettre l'adresse du compte que vous allez prochainement vous créer. Cette directive permet notamment, grâce au module _watchregistrations_ d'être tenu informé via message instantané de la création de nouveaux comptes, ce qui est utile si vous affectez la valeur _true_ à la directive _allow_registration_. Si vous ne souhaitez pas autoriser les "étrangers"à s'enregistrer sur votre serveur XMPP, supprimez la ligne"_watchregistrations_" et affectez la valeur _false_ à la directive _allow_registration_
|
||||
- L'installation par défaut n'inclue pas la directive _Include_ à la fin du fichier
|
||||
|
||||
Créons ensuite notre premier hôte virtuel :
|
||||
|
||||
```text
|
||||
nano conf.avail/exemple.fr.cfg.lua
|
||||
```
|
||||
|
||||
```text
|
||||
VirtualHost "exemple.fr"
|
||||
enabled = true
|
||||
|
||||
ssl = {
|
||||
key = "/scripts/certificate_authority/prosody/exemple.fr.key";
|
||||
certificate = "/scripts/certificate_authority/prosody/exemple.fr.crt";
|
||||
}
|
||||
|
||||
Component "conference.exemple.fr" "muc"
|
||||
```
|
||||
|
||||
Vu que nous définissons une clé et un certificat, il faut les créer :
|
||||
|
||||
```bash
|
||||
/scripts/certificate_authority/make_request prosody exemple.fr
|
||||
/scripts/certificate_authority/sign_request prosody exemple.fr
|
||||
```
|
||||
|
||||
Warning : Lorsque le _Common Name_ vous sera demandé, indiquez le nom de domaine !
|
||||
Et dans notre cas, acceptez la création d'une clé sans mot de passe !
|
||||
|
||||
De la même manière que la commande _a2ensite_ fournie par apache créé un lien symbolique depuis _/etc/apache2/sites-available/_ vers _/etc/apache2/sites-enabled/_ pour l'hôte virtuel concerné, il faut activer les hôtes virtuels dans prosody.
|
||||
Malheureusement, il n'existe pas de commande du même genre, il faut donc créer ce lien à la main :
|
||||
|
||||
```bash
|
||||
ln -s conf.avail/exemple.fr conf.d/exemple.fr
|
||||
```
|
||||
|
||||
On peut redémarrer prosody :
|
||||
|
||||
```bash
|
||||
/etc/init.d/prosody start
|
||||
```
|
||||
|
||||
Et créer votre premier utilisateur :
|
||||
|
||||
```bash
|
||||
prosodyctl adduser contact@exemple.fr MotDePasse
|
||||
```
|
||||
|
||||
Une fois fait, retournez dans phpMyAdmin pour vérifier que l'utilisateur a été correctement enregistré en base de données.
|
||||
|
||||
## Firewall
|
||||
|
||||
```bash
|
||||
nano /scripts/firewall
|
||||
```
|
||||
|
||||
Entre les lignes :
|
||||
|
||||
```text
|
||||
##### Configuration personnalisée #####
|
||||
```
|
||||
|
||||
Et :
|
||||
|
||||
```text
|
||||
##### Fin : Configuration personnalisée #####
|
||||
```
|
||||
|
||||
Rajoutez les lignes suivantes :
|
||||
|
||||
```text
|
||||
${IPT} -A SERVICES -p tcp --dport 5222 -j ACCEPT
|
||||
${IPT} -A SERVICES -p tcp --dport 5269 -j ACCEPT
|
||||
```
|
||||
|
||||
N'oubliez pas de relancer le script :
|
||||
|
||||
```bash
|
||||
/scripts/firewall
|
||||
```
|
||||
|
||||
## DNS
|
||||
|
||||
Éditons le fichier de configuration de notre zone :
|
||||
|
||||
```bash
|
||||
nano /etc/bind/db.exemple.fr
|
||||
```
|
||||
|
||||
Modifiez l'identifiant du fichier de configuration, comme d'habitude, puis ajoutez les lignes suivantes à la fin du fichier :
|
||||
|
||||
```text
|
||||
_xmpp-client._tcp 86400 IN SRV 20 0 5222 exemple.fr.
|
||||
_xmpp-server._tcp 86400 IN SRV 20 0 5269 exemple.fr.
|
||||
```
|
||||
|
||||
Et redémarrez bind :
|
||||
|
||||
```bash
|
||||
/etc/init.d/bind9 restart
|
||||
```
|
||||
|
||||
Votre serveur est prêt, fonctionnel, et accessible de l'extérieur.
|
||||
|
||||
## Installation d'un client XMPP
|
||||
|
||||
Il existe une grande variété de clients XMPP, qui s'installent tous très facilement : jetez un oeil à la logithèque de votre distribution préférée pour en trouver.
|
||||
[Une liste est disponible](https://web.archive.org/web/20120221004509/http://xmpp.org/xmpp-software/clients/) sur le site officiel du protocole XMPP.
|
||||
Parmi les plus répandus sous GNU/Linux on citera [pidgin](https://web.archive.org/web/20120221004509/http://www.pidgin.im/), [empathy](https://web.archive.org/web/20120221004509/http://live.gnome.org/Empathy), ou encore [kopete](https://web.archive.org/web/20120221004509/http://kopete.kde.org/).
|
||||
|
||||
## Installation du webchat
|
||||
|
||||
Nous installerons [Jappix](https://web.archive.org/web/20120221004509/https://project.jappix.com/).
|
||||
Il va nous permettre un certain nombre de choses, et notamment tester le serveur BOSH.
|
||||
Pour commencer, on va créer un nouveau sous-domaine :
|
||||
|
||||
```bash
|
||||
mkdir-p /var/www/exemple.fr/xmpp/{www,log}
|
||||
nano /etc/apache2/sites-available/xmpp.exemple.fr
|
||||
```
|
||||
|
||||
```text
|
||||
<VirtualHost *:80>
|
||||
ServerName xmpp.exemple.fr.fr
|
||||
Redirect / https://xmpp.exemple.fr/
|
||||
</VirtualHost>
|
||||
|
||||
<VirtualHost *:443>
|
||||
ServerName xmpp.exemple.fr
|
||||
|
||||
DocumentRoot /var/www/exemple.fr/xmpp/www
|
||||
|
||||
SSLEngine On
|
||||
SSLCertificateFile /scripts/certificate_authority/xmpp.exemple.fr.crt
|
||||
SSLCertificateKeyFile /scripts/certificate_authority/xmpp.exemple.fr.key
|
||||
|
||||
ProxyPass /http-bind/ http://127.0.0.1:5280/http-bind/
|
||||
ProxyPassReverse /http-bind/ http://127.0.0.1:5280/http-bind/
|
||||
Header set Access-Control-Allow-Origin "*"
|
||||
</VirtualHost>
|
||||
```
|
||||
|
||||
Comme d'habitude lors de la création d'un site sécurisé, on créé la paire clé/certificat :
|
||||
|
||||
```bash
|
||||
/scripts/certificate_authority/make_request apache xmpp.exemple.fr
|
||||
/scripts/certificate_authority/sign_request apache xmpp.exemple.fr
|
||||
chown www-data:www-data /scripts/certificate_authority/apache/*
|
||||
```
|
||||
|
||||
Warning : Lorsque le _Common Name_ vous sera demandé, indiquez le nom de domaine !
|
||||
Et dans notre cas, acceptez la création d'une clé sans mot de passe !
|
||||
|
||||
```bash
|
||||
a2ensite xmpp.exemple.fr
|
||||
/etc/init.d/apache2 restart
|
||||
```
|
||||
|
||||
On télécharge et on installe Jappix :
|
||||
|
||||
```bash
|
||||
cd /usr/src
|
||||
wget http://codingteam.net/project/jappix/download/file/jappix-spaco-0.9.zip
|
||||
unzip jappix-spaco-0.9.zip
|
||||
```
|
||||
|
||||
Important : Si vous n'avez pas encore installé le paquet _unzip_ et que vous avez une erreur lors de la décompression de l'archive, installez-le :
|
||||
|
||||
```text
|
||||
apt-get install unzip
|
||||
```
|
||||
|
||||
```bash
|
||||
cp -Rv jappix/* /var/www/exemple.fr/xmpp/www/
|
||||
chown -R www-data:www-data
|
||||
```
|
||||
|
||||
Et accédez au site pour le configurer, via `http://xmpp.exemple.fr`.
|
||||
|
||||
La première étape va être de créer l'utilisateur administrateur, alors laissez-vous guider par l'assistant.
|
||||
Vous avez ensuite accès à d'autres options, et particulièrement les hôtes, que vous configurerez comme suit :
|
||||
|
||||
| Hôte principal | exemple.fr |
|
||||
| -------------- | ------------------------------------ |
|
||||
| Hôte de salons | conference.exemple.fr |
|
||||
| Hôte pubsub | pubsub.exemple.fr |
|
||||
| Hôte BOSH | `https://xmpp.exemple.fr/http-bind/` |
|
||||
|
||||
Pensez également à configurer la variable "_Salons à rejoindre_"de l'onglet"_Configuration_", en spécifiant le nom d'un salon quelconque, sous la forme *salon@conference.exemple.fr*.
|
||||
Cochez également les cases relatives au chiffrement et au HTTPS, et la case "_Lien du gestionnaire_".
|
||||
Enfin, décochez la case "_Verrouiller l'hôte_" si vous souhaitez que des comptes non gérés par votre serveur puissent se connecter.
|
||||
|
||||
## Tests
|
||||
|
||||
Testez ensuite une première fois la connexion, en cliquant sur le bouton "_Fermer_" tout en haut à droite.
|
||||
Vous pourrez ensuite revenir à l'interface de configuration depuis le lien "_Gestionnaire_".
|
||||
Cliquez sur le gros bouton "_Connexion_", indiquez vos identifiants (par exemple, *contact@exemple.fr*) et votre mot de passe.
|
||||
La connexion devrait être immédiate.
|
||||
|
||||
Si ce n'est pas le cas, c'est probablement une question de connexion sécurisée.
|
||||
Consultez les fichiers journaux de prosody et apache pour tenter de déterminer d'où vient le problème.
|
||||
|
||||
Important : Le second test est optionnel : il devrait être effectué si vous permettez à des clients qui n'existent pas sur votre serveur de se connecter.
|
||||
|
||||
Si vous avez réussi à vous connecter, nous allons procéder à un second test, visant à vérifier le bon fonctionnement du serveur BOSH pour les clients externes.
|
||||
Si vous disposez déjà d'un compte XMPP ailleurs que sur votre propre serveur, essayez de vous connecter avec ces identifiants.
|
||||
Sinon, vous pouvez vous créer rapidement une adresse sur le site [jabber.org](https://web.archive.org/web/20120221004509/http://register.jabber.org/).
|
||||
Reference in New Issue
Block a user