Exemples de services WEB
Cette section propose des exemples de services que vous pouvez auto-héberger.
⚠ Puisque les applications sont régulièrement mises à jour, il conviendra de ne pas reproduire tête baissée les procédures indiquées, et de vérifier que la démarche correspond à la version du service que vous souhaitez installer.
Après l'installation, il est vivement conseillé de suivre les publications et nouveautés concernant ces applications pour mettre à jour vers les versions plus récentes disponibles.
Comme vous le constaterez, la méthode d'installation est sensiblement toujours la même:
- 1. On crée un dossier pour le nouveau site dans /var/www/htdocs ;
- 2. On télécharge l'application, souvent sous forme d'archive que l'on décompresse ;
- 3. On déplace les fichiers de l'application dans le dossier prévu à cet effet ;
- 4. On change les permissions sur les fichiers : # chown -R www:daemon /var/www/htdocs/lesite
- 5. On ajoute une section dans /etc/httpd.conf. Il faut alors bien lire la documentation de l'application (ou en fouillant dans un éventuel fichier "htaccess") à la recherche d'accès à interdire). Dans ce cas, on ajoute dans la configuration une directive "block". Par exemple : "location "/data" {block}" ;
- 6. On recharge httpd avec rcctl reload httpd ;
- 7. On termine l'installation en allant sur le nouveau site.
⚠ On suppose ici que vous avez déjà procédé à l'installation de httpd et de PHP.
Un cloud avec NextCloud
NextCloud est un service qui vous permet de synchroniser vos documents, contacts, rendez-vous sur n'importe quelle machine grâce à ses multiples clients. Vous pouvez bien entendu installer entièrement nextcloud à partir de l'archive publiée sur leur site, mais on va présenter l'installation à partir du port OpenBSD qui dispose de quelques révisions de sécurité, bien que peut-être un peu moins à jour.
NextCloudInstallation de Nextcloud
Installez le paquet nextcloud, puis lisez le contenu de /usr/local/share/doc/pkg-readme/nextcloud. 😁
Ok, je détaille. 😊 Notez que sera en fait répété ici le contenu du fichier ci-dessus.
Nextcloud est maintenant installé dans /var/www/nextcloud.
On peut désormais éditer le fichier /etc/httpd.conf afin d'ajouter une section pour nextcloud qui permet d'augmenter la taille maximale des données uploadées. Cette configuration est longue, mais assure une sécurité optimale pour limiter les accès à votre installation.
server "cloud.chezmoi.tld" { listen on * port 80 block return 301 "https://$SERVER_NAME$REQUEST_URI" } server "cloud.chezmoi.tld" { listen on egress tls port 443 root "/htdocs/nextcloud" directory index index.php hsts tls { certificate "/etc/ssl/chezmoi.tld.crt" key "/etc/ssl/private/chezmoi.tld.key" } # Set max upload size to 513M (in bytes) connection max request body 537919488 connection max requests 1000 connection request timeout 3600 connection timeout 3600 block drop # Ensure that no '*.php*' files can be fetched from these directories location "/nextcloud/config/*" { block drop } location "/nextcloud/data/*" { block drop } # Note that this matches "*.php*" anywhere in the request path. location "/nextcloud/*.php*" { root "/nextcloud" request strip 1 fastcgi socket "/run/php-fpm.sock" pass } location "/nextcloud/apps/*" { root "/nextcloud" request strip 1 pass } location "/nextcloud/core/*" { root "/nextcloud" request strip 1 pass } location "/nextcloud/settings/*" { root "/nextcloud" request strip 1 pass } location "/nextcloud" { block return 301 "$DOCUMENT_URI/index.php" } location "/nextcloud/" { block return 301 "$DOCUMENT_URI/index.php" } location "/.well-known/carddav" { block return 301 "https://$SERVER_NAME/nextcloud/remote.php/dav" } location "/.well-known/caldav" { block return 301 "https://$SERVER_NAME/nextcloud/remote.php/dav" } location "/.well-known/webfinger" { block return 301 "https://$SERVER_NAME/nextcloud/public.php?service=webfinger" } location match "/nextcloud/oc[ms]%-provider/*" { directory index index.php pass } location "/.well-known/acme-challenge/*" { root "/acme" request strip 2 } }
Éditez la configuration de php dans /etc/php-*.ini pour y mettre :
opcache.enable=1 opcache.enable_cli=1 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=10000 opcache.memory_consumption=128 opcache.save_comments=1 opcache.revalidate_freq=1
Configurez une base de données. Ici, on part du principe que cette base sera SQLite. Vous n'avez rien de plus à faire que configurer php en conséquence.
Pour configurer nextcloud, retenez que les chemins ne doivent pas tenir compte de /var/www puisque l'installation est dans un chroot.
*/15 * * * * su -m www -c "/usr/local/bin/php-7.4 -f /var/www/nextcloud/cron.php"
Enfin, installez redis
# pkg_add redis # rcctl enable redis # rcctl start redis
puis ajoutez les lignes suivantes dans /var/www/nextcloud/config/config.php, juste avant le dernier "),"
'filelocking.enabled' => true, 'memcache.local' => '\OC\Memcache\Redis', 'memcache.locking' => '\OC\Memcache\Redis', 'redis' => array( 'host' => 'localhost', 'port' => 6379, 'timeout' => 0.0, 'password' => '', // Facultatif
Enfin, créez le fichier "CAN_INSTALL" pour permettre l'installation de nextcloud à partir d'un navigateur :
# touch /var/www/nextcloud/config/CAN_INSTALL
Rechargez httpd et php
# rcctl reload httpd # rcctl restart php73_fpm
Pour terminer l'installation, ouvrez un navigateur à l'adresse de votre cloud, par exemple https://cloud.chezmoi.tld/nextcloud.
Si vous avez des erreurs à propos de l'UTF-8 qui apparaissent, lancez les commandes suivantes pour résoudre ce problème dû au chroot :
# mkdir -p /var/www/usr/share/locale/UTF-8/ # cp /usr/share/locale/UTF-8/LC_CTYPE /var/www/usr/share/locale/UTF-8/
Autre remarque, afin d'augmenter la limite en taille des fichiers que vous aurez à envoyer, vous devez modifier le fichier /etc/php-7.3.ini pour changer les valeurs dans les variables suivantes :
post_max_size = 513M upload_max_filesize = 513M
Ces limites sont relativement élevées. N'hésitez pas à réduire ces valeurs selon vos besoins.
Si vous voulez utiliser un accès webdav, c'est bien expliqué dans le manuel d'utilisation de Nextcloud.
https://docs.nextcloud.com/server/stable/user_manual/files/access_webdav.htmlAvec l'installation décrite ci-dessus, ça revient à utiliser cette URL :
https://cloud.chezmoi.tld/nextcloud/remote.php/webdav/
Webmail avec RainLoop
Le webmail vous servira à consulter votre messagerie à partir d'un navigateur web.
RainLoop est un excellent webmail qui est facile à installer et à mettre à jour. Il permet non seulement de consulter les messages présents sur votre serveur mais aussi ceux présents chez d'autres hébergeurs, un peu comme le fait Thunderbird. De plus, il intègre par défaut un support pour le chiffrement PGP, bien que partiel.
RainLoopThunderbird
Pour que RainLoop fonctionne correctement, vous devrez installer l'extension php-curl et l'activer comme avant.
Nous allons mettre RainLoop dans un dossier /var/www/htdocs/webmail que nous allons créer et dans lequel nous nous plaçons :
# mkdir -p /var/www/htdocs/webmail # cd /var/www/htdocs/webmail
On télécharge l'archive puis on la décompresse :
# ftp "https://www.rainloop.net/repository/webmail/rainloop-community-latest.zip" # unzip rainloop*.zip
Afin d'attribuer des permissions raisonnables aux fichiers de RainLoop, on exécute les commandes suivantes :
find . -type d -exec chmod 755 {} \; find . -type f -exec chmod 644 {} \; chown -R www:daemon .
Il ne nous reste plus qu'à configurer httpd. Comme d'habitude, on rajoute dans le fichier /etc/httpd.conf une nouvelle section :
server "webmail.chezmoi.tld" { listen on * tls port 443 root "/htdocs/webmail" directory index index.php # 35M maxi, la valeur par défaut de smtpd connection max request body 36700160 hsts tls { certificate "/etc/ssl/chezmoi.tld.crt" key "/etc/ssl/private/chezmoi.tld.key" } location "/data*" { block } location "/*.php*" { fastcgi socket "/run/php-fpm.sock" } }
On recharge httpd : rcctl reload httpd puis on ouvre dans un navigateur la page d'administration du webmail située à l'adresse suivante : https:/chezmoi.tld/?admin.
Par défaut, le login administrateur est admin et le mot de passe 12345. Changez-les tout de suite.
Pour la gestion des pièces jointes, qui est maximum de 35M par défaut avec le serveur mail smtpd, vous devriez changer les valeurs suivantes dans la configuration avancée de php du fichier php-*.ini.
post_max_size = 35M upload_max_filesize = 35M
RainLoop permet de consulter des messages provenant de serveurs différents. La configuration se déroule à l'adresse chezmoi.tld/?admin. Ainsi, si vous vous dirigez dans l'onglet "Domains", vous pouvez en voir plusieurs pré-configurés.
Nous ajoutons un nouveau domaine (le vôtre) en cliquant sur "+ Add Domain".
Une fenêtre s'ouvre. Complétez le champ "Name" avec le nom de domaine de votre serveur. Pour la configuration IMAP et SMTP, vous pourriez réaliser la même configuration que pour n'importe quel client. J'indique ici une configuration qui fonctionnera avec la mise en place d'un serveur mail telle que décrite dans le présent document.
Cliquez sur "Test" Afin de vérifier que tout fonctionne comme prévu.
Dirigez-vous maintenant vers la page principale (sans le ?admin) de votre webmail pour vous y connecter. Attention, il faut rentrer votre adresse mail complète comme login :
Blog et CMS
Blogotext
Blogotext est un moteur de blog léger et un peu plus 😉. Il pourra vous permettre en outre d'envoyer et partager des fichiers, faire office d'agrégateur de flux RSS, marque page de liens, prise de notes... C'est un outil génial et complet !
https://blogotext.org/Son installation est très simple et ne nécessite que peu de dépendances, à savoir le paquet sqlite3. Vous y ajouterez php-curl* et php-intl* s'ils ne sont pas déjà installés.
Pour télécharger blogotext, on peut utiliser ftp :
# ftp -o /tmp/blogotext.tar.gz "https://api.github.com/repos/BlogoText/blogotext/tarball/3.7.6"
On décompresse l'archive à partir du dossier /var/www/htdocs :
# cd /var/www/htdocs # tar xvzf /tmp/blogotext.tar.gz
Un dossier blogotext-3.7.6 est créé. On le renomme en blogotext pour plus de simplicité :
# mv Blogotext-blogotext* blogotext
Maintenant, on modifie les permissions pour que ces nouveaux fichiers appartiennent au serveur web :
# chown -R www:daemon /var/www/htdocs/blogotext
On peut alors éditer le fichier /etc/httpd.conf afin d'ajouter une section pour blogotext :
server "blog.chezmoi.tld" { listen on * port 80 block return 301 "https://$SERVER_NAME$REQUEST_URI" } server "blog.chezmoi.tld" { listen on * tls port 443 root "/htdocs/blogotext" directory index index.php # taille maximale que l'on peut envoyer en bytes connection max request body 136700160 hsts tls { certificate "/etc/ssl/chezmoi.tld.crt" key "/etc/ssl/private/chezmoi.tld.key" } location "/*.php*" { fastcgi socket "/run/php-fpm.sock" } }
Pour prendre en compte ces changements, on recharge httpd avec
# rcctl reload httpd
Vous pouvez maintenant terminer l'installation dans un navigateur à l'adresse de votre blog https://blog.chezmoi.tld/.



Pour poster de nouveaux articles et administrer votre blog, rendez-vous à l'adresse https://blog.chezmoi.tld/admin/auth.php. Notez que par sécurité, vous pouvez renommer le dossier admin sur votre serveur.
Dotclear
Dotclear est un autre moteur de blog. Vous pouvez utiliser n'importe quelle base de données avec ce dernier, mais SQLite reste un choix prudent et simple en auto-hébergement.
Pour installer dotclear, nous allons commencer par préparer la configuration du serveur web (http). À nouveau, nous supposons que vous avez déjà installé PHP.
Dans le fichier /etc/httpd.conf, ajoutez un nouveau site :
server "blog.chezmoi.tld" { listen on * port 80 block return 301 "https://$SERVER_NAME$REQUEST_URI" } server "blog.chezmoi.tld" { listen on * tls port 443 root "/htdocs/dotclear" directory index index.php # taille maximale que l'on peut envoyer en bytes connection max request body 136700160 hsts tls { certificate "/etc/ssl/chezmoi.tld.crt" key "/etc/ssl/private/chezmoi.tld.key" } location "/*.php*" { fastcgi socket "/run/php-fpm.sock" } }
Ensuite, on crée le dossier qui va accueillir dotclear.
# mkdir -p /var/www/htdocs/dotclear
On télécharge le fichier d'installation de dotclear :
# ftp -o /var/www/htdocs/dotclear/dotclear-loader.php https://download.dotclear.org/loader/dotclear-loader.php
Modifiez les permissions sur le dossier qui contiendra dotclear puis rechargez httpd :
# chown -R www:daemon /var/www/htdocs/dotclear # rcctl reload httpd
Terminez l'installation dans un navigateur à l'URL suivante :
http://blog.chezmoi.tld/dotclear-loader.php
Si vous avez choisi SQLite, il faudra juste compléter le nom du fichier pour la base en le baptisant à votre souhait.
Vous pouvez lire la documentation officielle de dotclear concernant l'installation.
https://fr.dotclear.org/documentation/2.0/admin/installUne fois celle-ci terminée, pensez à supprimer le fichier d'installation :
# rm /var/www/htdocs/dotclear/dotclear-loader.php
PluXML
PluXML est une application très légère qui ne nécessite aucune base de données mais qui pourtant s'avère efficace dans la création d'un site.
http://www.pluxml.org/Son installation est des plus simples comme vous pourrez le constater.
On commence par télécharger l'archive contenant PluXML après s'être placés dans un dossier temporaire :
# cd /tmp # ftp -o pluxml.zip "https://www.pluxml.org/download/pluxml-latest.zip"
Vous avez récupéré une archive .zip que l'on décompresse :
# unzip pluxml.zip
Cela nous permet maintenant de déplacer le dossier contenant PluXML à un emplacement approprié pour httpd :
# mv PluXml /var/www/htdocs/pluxml
N'oublions pas de modifier les permissions :
# chown -R www:daemon /var/www/htdocs/pluxml
Il ne nous reste plus qu'à ajouter un nouveau site dans la configuration de httpd. Éditez le fichier /etc/httpd.conf pour y mettre :
server "chezmoi.tld" { listen on * port 80 block return 301 "https://$SERVER_NAME$REQUEST_URI" } server "chezmoi.tld" { listen on * tls port 443 root "/htdocs/pluxml/" directory index index.php hsts tls { certificate "/etc/ssl/chezmoi.tld.crt" key "/etc/ssl/private/chezmoi.tld.key" } location "*.php*" { fastcgi socket "/run/php-fpm.sock" } # Permet l'envoi de fichier de 35M (en bytes) connection max request body 36700160 # On cache le fichier version: location "/version" { block } # Ligne très importante pour éviter le vol de mot de passe location "/data/configuration/users.xml" { block } }
Parfait ! Maintenant, il ne vous reste plus qu'à recharger httpd puis à consulter votre site dans un navigateur pour achever l'installation :

Une fois terminée, pensez à supprimer le fichier d'installation de PluXML :
# rm /var/www/htdocs/pluxml/install.php
Vous pouvez désormais ajouter de nouveaux articles ou des pages statiques pour créer votre site. N'hésitez pas à échanger avec la communauté sur le forum de PluXML.
forum de PluXMLCardDAV et CalDAV avec Baïkal
Baïkal est un serveur Cal et CardDAV permettant de synchroniser votre calendrier et vos contacts. Il ne fait que ça, c'est pourquoi il le fait bien tout en restant léger.
BaïkalVous aurez besoin pour l'utiliser de PHP et de SQLite.
Vérifiez quelle est la dernière version de Baikal. Vous pouvez ensuite la télécharger avec ftp:
https://github.com/fruux/Baikal/releases# ftp -o /tmp/baikal.zip "https://github.com/fruux/Baikal/releases/download/0.7.2/baikal-0.7.2.zip"
On se déplace dans le dossier web pour décompresser baikal et modifier les droits sur les fichiers :
# cd /var/www/htdocs/ # unzip /tmp/baikal.zip # chown -R www:daemon baikal
Ajoutez une nouvelle section dans le fichier /etc/httpd.conf pour configurer httpd. Notez qu'on ne configure ici qu'un accès via une adresse en "https" :
server "dav.chezmoi.tld" { listen on * tls port 443 root "/htdocs/baikal/html" directory index index.php hsts tls { certificate "/etc/ssl/chezmoi.tld.crt" key "/etc/ssl/private/chezmoi.tld.key" } location "/.well-known/caldav" { block return 301 "https://$SERVER_NAME/dav.php" } location "/.well-known/carddav" { block return 301 "https://$SERVER_NAME/dav.php" } location "/.ht*" { block } location "/Core*" { block } location "/Specific*" { block } location "*.php*" { fastcgi socket "/run/php-fpm.sock" } }
Reste à recharger httpd avec rcctl reload httpd. Vous pouvez désormais vous rendre à l'adresse https://dav.chezmoi.tld pour terminer l'installation.



Baïkal et Thunderbird
Pour utiliser votre calendrier, vous pouvez récupérer l'excellente extension lightning pour Thunderbird.
https://addons.mozilla.org/en-US/thunderbird/addon/lightning/Enregistrez le fichier .xpi puis ouvrez-le dans Thunderbird à partir du menu des modules accessible dans le menu de Thunderbird remarquable par ses 3 traits horizontaux en haut à droite.

Il faudra cliquer sur le petit engrenage pour choisir d'installer à la main l'extension précédemment téléchargée :

Ci-dessous, vous pourrez lire des instructions issues de guillaume-leduc.fr pour utiliser votre instance de Baïkal avec Thunderbird.
guillaume-leduc.frVous pouvez créer un nouvel agenda en faisant un clic-droit dans la zone où sont listés tous les calendriers.

Lors de la configuration de votre agenda CalDAV, vous devrez renseigner l'adresse suivante pour un agenda "sur le réseau" :
https://dav.chezmoi.tld/cal.php/calendars/UTILISATEUR/ID_AGENDA/
Vous remplacerez UTILISATEUR et ID_AGENDA selon l'adresse visible dans votre navigateur. N'oubliez pas le / final. Dans l'exemple ci-dessous, ça donne une URL qui se termine par /toto/default/ :

Pour un carnet d'adresses, l'URL à renseigner est la suivante :
https://dav.chezmoi.tld/card.php/addressbooks/UTILISATEUR/CARNET/
Baïkal et RainLoop
Si vous utilisez le webmail RainLoop, sachez qu'il est possible d'utiliser la synchronisation des contacts avec votre instance de Baïkal.
Dans l'interface d'administration de Rainloop, allez dans l'onglet "Contacts" puis cochez "Enable contacts" et "Allow contact sync" :

Ensuite, connectez-vous en simple utilisateur. Dans les paramètres de ce dernier accessibles en haut à droite, vous trouverez un onglet "Contact" permettant de préciser l'adresse de votre instance Baïkal sur le même modèle que pour Thunderbird, autrement dit :
https://dav.chezmoi.tld/card.php/addressbooks/UTILISATEUR/CARNET/


Wiki
Il existe tellement de moteurs de wiki qu'il est difficile de faire un choix. Ces derniers sont souvent très configurables et permettent parfois d'en faire des blogs voire des sites complets.
Nous allons nous intéresser ici à l'installation de dokuwiki, un des moteurs les plus connus et les plus pratiques grâce à ses multiples extensions et le peu de dépendances qu'il nécessite : PHP (c'est tout 😋.). Notez qu'il est présent dans les ports et peut-être installé comme n'importe quel paquet.
dokuwikiL'installation est semblable à la plupart des sites web comme vous pourrez le voir, c'est pourquoi elle ne sera pas exhaustive.
Téléchargement de dokuwiki :
# ftp -o /tmp/dokuwiki.tgz "http://download.dokuwiki.org/src/dokuwiki/dokuwiki-stable.tgz"
Extraction de l'archive :
# cd /var/www/htdocs # tar xvzf /tmp/dokuwiki.tgz
On renomme le dossier et on change les droits :
# mv dokuwiki-* wiki # chown -R www:daemon wiki
La configuration de httpd peut se réaliser ainsi dans le fichier /etc/httpd.conf:
server "wiki.chezmoi.tld" { listen on * port 80 block return 301 "https://$SERVER_NAME$REQUEST_URI" no log } server "wiki.chezmoi.tld" { listen on * tls port 443 root "/htdocs/wiki" directory index doku.php # Set max upload size to 35M (in bytes) connection max request body 36700160 hsts tls { certificate "/etc/ssl/chezmoi.tld.crt" key "/etc/ssl/private/chezmoi.tld.key" } location "*.php*" { fastcgi socket "/run/php-fpm.sock" } location "/data*" { block } location "/conf*" { block } location "/bin*" { block } location "/inc*" { block } location "/vendor*" { block } }
Ajustez les permissions par sécurité :
# chmod 0700 bin/ conf/ data/ inc/ vendor/
Rechargez httpd avec rcctl reload httpd, puis ouvrez dans un navigateur l'adresse de votre wiki vers le fichier install.php pour terminer l'installation.

Une fois l'installation terminée, supprimez le fichier install.php
# rm /var/www/htdocs/wiki/install.php
Lecteur de flux RSS
Vous pouvez installer sur votre serveur un outil qui vous permettra de lire en un seul endroit les nouveautés publiées sur vos sites favoris grâce à leurs flux RSS. C'est nettement plus pratique que consulter les pages WEB une par une.
RSSKrISS : simple mais efficace
KrISS est un lecteur de flux qui tient en un seul fichier PHP. Oui, un seul ! Pourtant, il est complet et rapide, tout ce qu'il faut pour une utilisation personnelle.
Ceux qui souhaiteraient proposer un service d'agrégateur de flux à plusieurs personnes pourront très bien installer KrISS dans différents dossiers, un par utilisateur.
L'installation est simple comme tout, il faut télécharger le fichier de KrISS puis le placer sur votre serveur web (http).
- Préparez votre serveur pourPHP et ajoutez-y l'extension curl. Réalisez aussi la configuration relative au chroot afin de pouvoir résoudre les noms de domaine.
- Téléchargez KrISS : ftp -o /tmp/index.php https://raw.github.com/tontof/kriss_feed/master/index.php
- Créez le dossier qui contiendra KrISS : # mkdir -p /var/www/htdocs/kriss
- Déplacez le fichier index.php à l'endroit souhaité : # mv /tmp/index.php /var/www/htdocs/kriss
- Ajustez les permissions : # chown -R www:daemon /var/www/htdocs/kriss
- Ajustez éventuellement la configuration de /etc/httpd.conf, mais ça a sûrement déjà été fait lors de la configuration de PHP :
server "chezmoi.tld" { root "/htdocs/kriss" listen on * tls port 443 hsts tls { certificate "/etc/ssl/chezmoi.tld.crt" key "/etc/ssl/private/chezmoi.tld.key" } location "*.php*" { fastcgi socket "/run/php-fpm.sock" } location "/kriss/" { directory index index.php } }
Relancez httpd avec rcctl reload httpd puis ouvrez votre navigateur sur l'emplacement de KrISS afin de terminer l'installation.
Profitez 😉

FreshRSS
Voici une autre application pour lire les flux RSS. Plus complète, elle reste légère et pratique à installer. Elle peut fonctionner avec n'importe quelle base de données. Ici, je choisis SQLite.
https://www.freshrss.org/On télécharge l'archive, on la décompresse dans /var/www/htdocs/rss puis on ajuste les propriétaires. LA dernière version peut se trouver ici :
https://github.com/FreshRSS/FreshRSS/releases/latest# cd /tmp # ftp https://github.com/FreshRSS/FreshRSS/archive/1.17.0.tar.gz # tar xvzf 1.17.0.tar.gz # mv FreshRSS-*/ /var/www/htdocs/rss # chown -R www:daemon /var/www/htdocs/rss # cd /var/www/htdocs/rss # find . -type d -exec chmod 750 {} \; # find . -type f -exec chmod 640 {} \; # find data -type f -exec chmod 660 {} \;
La documentation indique clairement que seul le dossier "p" doit être exposé. La configuration dans httpd ressemblera donc à ceci :
server "rss.chemoi.tld" { root "/htdocs/rss/p" listen on * tls port 443 hsts tls { certificate "/etc/ssl/chezmoi.tld.crt" key "/etc/ssl/private/chezmoi.tld.key" } directory index index.php location "*.php*" { fastcgi socket "/run/php-fpm.sock" } }
L'installation ressemble à ça :





Statistiques des visites sur vos sites
Webalizer
Malheureusement, webalizer ne semble plus mis à jour, mais il continue de bien fonctionner.
WebalizerWebalizer est un outil qui peut générer graphiques et tableaux à partir des logs (journaux) de votre serveur. En un clin d'oeil vous pourrez trouver à propos de votre site :
- Horaires de visites ;
- Nombre de clics ;
- Quantité de données chargées ;
- Pages 404 (pratique pour traquer les liens morts) ;
- D'où viennent les visiteurs...
D'autres outils similaires existent, en particulier matomo. Ce dernier est toutefois moins facile à mettre en place (base de données MySQL) et nécessite l'insertion de code html dans toutes vos pages web. Il est aussi moins efficace si les visiteurs utilisent des addons Firefox comme noscript ou μblock. Cependant, les données récoltées sont plus pertinentes. Vous voudrez donc peut-être compléter l'installation de webalizer avec matomo.
matomoQuoi qu'il en soit, nous allons voir ici une méthode pour obtenir de belles statistiques avec webalizer.
Comme d'habitude, on commence par l'installer avec la commande magique :
# pkg_add webalizer
Pour le configurer, nous allons utiliser comme base le modèle fourni. On le copie par exemple dans /etc/ :
# cp /usr/local/share/examples/webalizer/sample.conf /etc/webalizer.chezmoi.tld.conf
Éditez ce nouveau fichier pour l'adapter à vos besoins. Voici quelques options pratiques que vous voudrez certainement changer :
- LogFile /var/www/logs/access.log : Emplacement des journaux du serveur web.
- OutputDir /var/www/htdocs/chezmoi.tld/stats : Vous choisissez où seront enregistrées les pages html générées. Référez-vous à la partie sur httpd pour configurer votre serveur web (http) et accéder aux statistiques avec un navigateur. Attention de bien créer ce répertoire au préalable, sinon Webalizer plantera avec un message d'erreur.
- HideSite *chezmoi.tld et HideReferrer chezmoi.tld/ : On cache les liens provenant des clics réalisés sur votre site vers votre site.
- HideURL *.css , HideURL *.woff : On cache les extensions de fichiers non souhaitées.
- IgnoreURL /favicon.ico : On ignore certaines URL lorsque les statistiques sont générées.
- Color* : Pour changer les couleurs, car le thème par défaut, n'est pas très attrayant tout de même.
- HTMLHead ... : tout ce qui sera rajouté dans l'entête de la page html générée. Vous pouvez de cette façon ajouter quelques lignes CSS pour modifier l'apparence, par exemple :
HTMLHead HTMLHead body { HTMLHead background: radial-gradient(circle,#2569A0,#000046); HTMLHead } HTMLHead
Vous trouverez un exemple de configuration de webalizer à la fin du document.
Vous pouvez générer une première fois les statistiques avec la commande suivante :
# webalizer -c /etc/webalizer.chezmoi.tld.conf
Et hop, toutes les pages html et les graphiques sont dans le dossier défini par la variable OutputDir, il suffit de vous y rendre avec un navigateur web pour les étudier.
Cependant, vous devrez régler encore quelques petits détails. Par exemple, la partie des "Referers" qui recense les sites sur lesquels le votre est cité doit être bien maigre. Il faut régler la façon dont httpd produit les logs. Rien de bien compliqué, il faut juste ajouter dans le fichier /etc/httpd.conf la ligne suivante dans le site pour lequel on veut des statistiques : log style combined.
Euh, on peut avoir un exemple siouplé? 😎Voici :
server "chezmoi.tld" { listen on * tls port 443 root "/htdocs/chezmoi.tld" directory index index.html log style combined hsts tls { certificate "/etc/ssl/chezmoi.tld.crt" key "/etc/ssl/private/chezmoi.tld.key" } }
N'oubliez pas de recharger httpd avec rcctl reload httpd.
Mais on doit lancer la commande webalizer manuellement ? C'est nul ce truc !
On n'en reste pas là bien entendu. Afin que les statistiques soient générées par exemple tous les jours, nous pourrions profiter du fichier /etc/daily.local.
De plus, il faut éviter que les logs n'aient été archivés avant d'avoir été traités par webalizer. Nous allons donc modifier la configuration de l'outil qui compresse les logs régulièrement. Il s'agit de newsyslog. On édite le fichier /etc/newsyslog.conf qui ressemble à ça :
# $OpenBSD: newsyslog.conf,v 1.34 2015/10/14 20:54:07 millert Exp $ # # configuration file for newsyslog # # logfile_name owner:group mode count size when flags /var/cron/log root:wheel 600 3 10 * Z /var/log/aculog uucp:dialer 670 7 * 24 Z /var/log/authlog root:wheel 640 7 * 168 Z /var/log/daemon 640 5 30 * Z /var/log/lpd-errs 640 7 10 * Z /var/log/maillog 640 7 * 24 Z /var/log/messages 644 5 30 * Z /var/log/secure 600 7 * 168 Z /var/log/wtmp 644 7 * $W6D4 B /var/log/xferlog 640 7 250 * Z /var/log/pflog 600 3 250 * ZB "pkill -HUP -u root -U root -t - -x pflogd" /var/www/logs/access.log 644 4 * $W0 Z "pkill -USR1 -u root -U root -x httpd" /var/www/logs/error.log 644 7 250 * Z "pkill -USR1 -u root -U root -x httpd"
C'est l'avant-dernière ligne que nous allons changer afin de lancer webalizer avant de faire tourner les logs du serveur web (http). Elle ressemblera à :
/var/www/logs/access.log 644 4 * $W0 Z "/usr/local/bin/webalizer -c /etc/webalizer.chezmoi.tld.conf && pkill -USR1 -u root -U root -x httpd"
Pour vérifier que tout fonctionne bien, lancez newsyslog en le forçant à archiver les logs et en le faisant parler. Vous devriez obtenir quelque chose de la sorte :
# newsyslog -vF /var/cron/log ♥Z>: size (KB): 7.24 [10] --> trimming log.... /var/log/authlog <7Z>: age (hr): 88 [168] --> trimming log.... /var/log/daemon <5Z>: size (KB): 0.41 [30] --> trimming log.... /var/log/lpd-errs <7Z>: size (KB): 2.02 [10] --> trimming log.... /var/log/maillog <7Z>: age (hr): 16 [24] --> trimming log.... /var/log/messages <5Z>: size (KB): 0.45 [30] --> trimming log.... /var/log/secure <7Z>: age (hr): -1 [168] --> trimming log.... /var/log/wtmp <7B>: --> trimming log.... /var/log/xferlog <7Z>: size (KB): 0.00 [250] --> trimming log.... /var/log/pflog ♥ZB>: size (KB): 64.26 [250] --> trimming log.... /var/www/logs/access.log <4Z>: --> trimming log.... /var/www/logs/error.log <7Z>: size (KB): 212.87 [250] --> trimming log.... /var/www/logs/mateteestmalade.log <7Z>: size (KB): 3.93 [250] --> trimming log.... Webalizer Xtended RB30 (06-Apr-2014) / [OpenBSD https://www.openbsd.org/] 5.9 amd64 / English Copyright 2005-2014 by Patrick K. Frei Based on Webalizer V2.23-08 Using logfile /var/www/logs/access.log (clf) Using GeoIP Country Edition (/var/db/GeoIP/GeoIP.dat) GEO-106FREE 20151201 Build 1 Copyright (c) 2015 MaxMind Inc All Rights Reserved Creating output in /var/www/htdocs/chezmoi.tld/stats Hostname for reports is 'chezmoi.tld' Reading history file... webalizer.hist Skipping bad record (1) No valid records found! Generating summary report
Il y a les messages de webalizer qui montrent qu'il a été exécuté.
Et voilà, les statistiques sont générées régulièrement et avant que les logs ne soient archivés.
goaccess
Plus proche de webalizer que de Matomo dans son fonctionnement, goaccess propose une interface plus moderne. Il peut en outre générer des rapports au format html, mais aussi vous laisser consulter les statistiques dans terminal en temps-réel.
goaccess# pkg_add goaccess
On va éditer le fichier de configuration pour goaccess situé dans /etc/goaccess/goaccess.conf. Vous pouvez lire des exemples pour des logs enregistrés au format "combined" "default". Voici ce à quoi la configuration peut ressembler pour httpd au format combined :
# format des [logs #logs] time-format %T %z date-format %d/%b/%Y log-format %v %h %^ %^ [%d:%t] "%r" %s %b "%R" "%u" # Base de donnees pour la geolocalisation geoip-database /var/db/GeoIP/GeoLite2-Country.mmdb # ne stoppe pas après une erreur num-tests 0 # Dossier où seront enregistrees les statistiques db-path /var/goaccessdb/ persist true restore true
On crée le dossier qui contiendra les données de goaccess : mkdir -p /var/goaccessdb/.
Ensuite, vous pouvez générer les statistiques. Pensez à le faire avant la rotation des logs (voir le paragraphe sur webalizer.
goaccess /var/www/logs/chezmoi.tld.log -o /var/www/htdocs/chezmoi.tld/stats.html