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 nouvelles concernant ces applications pour mettre à jour si de nouvelles versions sont disponibles.
Comme vous le constaterez, la méthode d'installation est sensiblement la même pour la plupart des applications :
/var/www/htdocs
;# chown -R www:daemon /var/www/htdocs/lesite
/etc/httpd.conf
;rcctl reload httpd
;On suppose ici que vous avez déjà procédé à l'installation de httpd et de PHP.
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.
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 [1-intro:editfile|é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 * tls port 443 root "/htdocs/nextcloud" directory index index.php hsts tls { certificate "/etc/ssl/chezmoi.tld-fullchain.pem" 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-7.3.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.
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.
Avec l'installation décrite ci-dessus, ça revient à utiliser cette URL :
https://cloud.chezmoi.tld/nextcloud/remote.php/webdav/
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.
Pour que RainLoop fonctionne correctement, vous devrez installer l'extension
php-curl
et l'activer comme décrit plus haut.
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-fullchain.pem" 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.
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 :
Nous allons ici installer le très connu roundcube.
Cette application est complète, toutefois relativement complexe à installer.
Vous voudrez peut-être installer le paquet roundcubemail
déjà tout prêt,
mais peut-être à une version plus ancienne, et lire le fichier
/usr/local/share/doc/pkg-readmes/roundcubemail
. (C'est toujours une bonne idée pour notamment vérifier la sécurité de la configuration d'httpd)
Installons tout d'abord quelques dépendances qu'il faudra activer:
# pkg_add sqlite3 # pkg_add php-pspell-7.3.10 php-zip-7.3.10 libmcrypt # pkg_add php-intl-7.3.10
On doit ensuite modifier la configuration de PHP. On édite le fichier
/etc/php-7.3.ini
pour y mettre à la fin :
[suhosin] suhosin.session.encrypt = 0
Une fois cette modification effectuée, relancez PHP :
# rcctl enable php73_fpm # rcctl restart php73_fpm
On va mettre roundcube dans le dossier /var/www/htdocs/roundcube
.
On télécharge l'archive de roundcube qu'on décompresse :
# cd /var/www/htdocs/ # ftp -o roundcube.tgz https://github.com/roundcube/roundcubemail/releases/download/1.3.8/roundcubemail-1.3.8-complete.tar.gz # tar xvzf roundcube.tgz
Maintenant, on renomme le nouveau dossier roundcubemail*
puis on crée les
dossiers nécessaires au bon fonctionnement de roundcube :
# mv roundcubemail-* roundcube # mkdir -p roundcube/temp roundcube/logs
Nous allons créer la base sqlite pour roundcube. On fabrique un dossier qui contiendra la base de données :
# mkdir /var/www/htdocs/roundcube/db
La commande suivante crée la base :
# cd /var/www/htdocs/roundcube # sqlite3 -init SQL/sqlite.initial.sql db/sqlite.db -- Loading resources from roundcube/SQL/sqlite.initial.sql SQLite version 3.24.0 2018-06-04 19:24:41 Enter ".help" for usage hints. (Tapez .exit pour quitter sqlite3)
Enfin, on modifie les permissions de tous ces nouveaux fichiers :
# cd /var/www/htdocs/ # chown -R www:daemon roundcube # chmod 0775 roundcube/db # chmod 0660 roundcube/db/sqlite.db
On ajoute le nouveau site dans la configuration de httpd. Pour cela, on édite le
fichier /etc/httpd.conf
et on ajoute quelque chose comme :
server "webmail.chezmoi.tld" { listen on * port 80 block return 301 "https://$SERVER_NAME$REQUEST_URI" no log } server "webmail.chezmoi.tld" { listen on * tls port 443 root "/htdocs/roundcube" directory index index.php no log hsts tls { certificate "/etc/ssl/chezmoi.tld-fullchain.pem" key "/etc/ssl/private/chezmoi.tld.key" } location "*.php*" { fastcgi socket "/run/php-fpm.sock" } # Deny Protected directories location "/config*" { block } location "/temp*" { block } location "/logs*" { block } location "/README" { block } location "/INSTALL" { block } location "/LICENSE" { block } location "/CHANGELOG" { block } location "/UPGRADING" { block } location "/bin*" { block } location "/SQL*" { block } location "/db*" { block } location "*.md" { block } location "\.*" { block } }
Rechargez httpd et PHP puis allez à la page d'installation de votre nouveau
webmail avec un navigateur : https://webmail.chezmoi.tld/installer
.
Suivez les indications données. La plupart des choses n'ont pas besoin d'être modifiées. Vérifiez tout de même que :
/
…): htdocs/roundcube/db/sqlite.db
smtp_server
, la valeur doit être localhost
.Dans le navigateur sera générée la configuration. Enregistrez-la dans le fichier
/var/www/roundcubemail/config/config.inc.php
Vérifiez bien qu'il contient au moins ceci (attention au nombre de
/
) :
$config['db_dsnw'] = 'sqlite:////htdocs/roundcube/db/sqlite.db?mode=0660'; $config['smtp_server'] = 'localhost';
Vous avez une dernière page de test, puis vous pouvez allez à l'URL de votre webmail pour voir que tout fonctionne.
Bien que tout semble être en état de marche, n'oublions pas la
sécurité.
Modifiez le fichier config.inc.php
pour
désactiver l'installateur.
$config['enable_installer'] = false;
Puis supprimez le dossier d'installation totalement :
# rm -r /var/www/htdocs/roundcube/installer
Ça y est, votre webmail est prêt!
À l'avenir, pour mettre roundcube à jour, lisez le fichier UPGRADING
et la
section Update manually
.
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 !
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-fullchain.pem" 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 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-fullchain.pem" 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.
Une fois celle-ci terminée, pensez à supprimer le fichier d'installation :
# rm /var/www/htdocs/dotclear/dotclear-loader.php
Wordpress est un moteur relativement lourd mais qui peut permettre de créer n'importe quel site. Si vous recherchez un CMS plus léger et facile à installer, regardez du côté de PluXML.
Quelques dépendances sont à installer, dont la base de données MariaDB :
# pkg_add php-mysqli-7.3.10 mariadb-server # cd /etc/php-7.3.sample # for i in *; do ln -sf ../php-7.3.sample/$i ../php-7.3/; done # rcctl restart php73_fpm
Vous devez maintenant créer une base de données dans MariaDB, le clone libre de MySQL. Référez-vous à la partie dédiée à cette manipulation. Veillez à retenir le nom de la base choisie, l'utilisateur et le mot de passe.
On télécharge ensuite la dernière version de wordpress :
# ftp -o /tmp/wordpress.tar.gz "https://wordpress.org/latest.tar.gz"
On décompresse l'archive dans le dossier /var/www/htdocs
# cd /var/www/htdocs # tar xvzf /tmp/wordpress.tar.gz
On modifie les permissions du nouveau dossier :
# chown -R www:daemon /var/www/htdocs/wordpress
On ajoute maintenant une section dans /etc/httpd.conf
server "blog.chezmoi.tld" { listen on * tls port 443 root "/htdocs/wordpress" directory index index.php hsts tls { certificate "/etc/ssl/chezmoi.tld-fullchain.pem" key "/etc/ssl/private/chezmoi.tld.key" } # Set max upload size to 35M (in bytes) connection max request body 36700160 # protected files and dir location "/.*" { block } location "/upload/*.php" { block } location "/files/*.php" { block } # Any other PHP file location "/*.php*" { fastcgi socket "/run/php-fpm.sock" } }
Enfin, on recharge httpd : rcctl reload httpd
.
Dirigez-vous à l'adresse du nouveau site pour terminer l'installation et remplir les informations concernant la base de données qui vient d'être créée.
L'installation de Wordpress est terminée :) Vous pouvez désormais ajouter du contenu et personnaliser votre site.
Si toutefois Wordpress ne vous convenait pas, regardez le paragraphe suivant qui parle de PluXML, nettement plus simple à gérer.
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.
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-fullchain.pem" key "/etc/ssl/private/chezmoi.tld.key" } location "*.php*" { fastcgi socket "/run/php-fpm.sock" } # 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.
Drupal est un gestionnaire de contenu très répandu mais aussi relativement lourd. Cependant, vous pourrez l'utiliser pour créer toutes sortes de sites.
Avant toutes choses, vous devez avoir déjà installé PHP avec au moins les paquets php-curl, php-gd, un support de base de données et appliqué la configuration relative au chroot. Vous pouvez utiliser n'importe quelle base de données entre SQLite, MySQL ou PostgreSQL.
On télécharge Drupal en utilisant le lien que vous pouvez retrouver à cette page.
# cd /tmp # ftp -o drupal.tgz https://www.drupal.org/download-latest/tar.gz
Une fois l'archive récupérée, on extrait les fichiers puis on les place dans un
dossier accessible par le serveur httpd qui sera ici
/var/www/htdocs/drupal
:
# tar xvzf drupal.tgz # mv drupal-*/ /var/www/htdocs/drupal
N'oubliez pas de changer les permissions :
# chown -R www:daemon /var/www/htdocs/drupal
Puisque nous en sommes à configurer la partie serveur httpd, éditez le fichier
/etc/httpd.conf
pour y ajouter votre nouveau site :
server "chezmoi.tld" { listen on * port 80 block return 301 "https://$SERVER_NAME$REQUEST_URI" no log } server "chezmoi.tld" { listen on * tls port 443 root "/htdocs/drupal" directory index index.php connection max request body 36700160 hsts tls { certificate "/etc/ssl/chezmoi.tld-fullchain.pem" key "/etc/ssl/private/chezmoi.tld.key" } location "*.php*" { fastcgi socket "/run/php-fpm.sock" } }
À titre d'exemple, voici les manipulations à faire pour utiliser MariaDB (mysql) avec drupal. Ces manipulations ne sont pas à effectuer si vous utilisez SQLite.
Il faut créer un utilisateur pour la base de données qui aura le droit de
créer une nouvelle table. La table s'appellera drupal_base
et l'utilisateur
drupaluser
.
On entre # mysql -u root -p
puis :
MariaDB [(none)]> CREATE DATABASE drupal_base; Query OK, 1 row affected (0.01 sec) MariaDB [(none)]> CREATE USER 'drupaluser'@'localhost' IDENTIFIED BY 'motdepasse'; Query OK, 0 rows affected (0.01 sec) MariaDB [(none)]> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, INDEX, ALTER, CREATE TEMPORARY TABLES ON drupal_base.* TO 'drupaluser'@'localhost'; Query OK, 0 rows affected (0.02 sec) MariaDB [(none)]> FLUSH PRIVILEGES; Query OK, 0 rows affected (0.00 sec) MariaDB [(none)]> exit Bye
On a presque fini, courage. Rechargez la configuration de httpd avec la commande habituelle
# rcctl reload httpd
Vous pouvez maintenant terminer l'installation en ouvrant dans un navigateur
https://chezmoi.tld/
afin d'être redirigé vers la page d'installation.
Et voilà, vous êtes prêts à fabriquer votre site. ^^
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.
Vous 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
:
# ftp -o /tmp/baikal.zip "https://github.com/fruux/Baikal/releases/download/0.4.6/baikal-0.4.6.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-fullchain.pem" 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.
Pour utiliser votre calendrier, vous pouvez récupérer l'excellente extension lightning pour Thunderbird.
Pour la télécharger, c'est par ici.
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.
Vous 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/
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/
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 :P.).
L'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-fullchain.pem" 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
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.
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).
ftp -o /tmp/index.php https://raw.github.com/tontof/kriss_feed/master/index.php
# mkdir -p /var/www/htdocs/kriss
# mv /tmp/index.php /var/www/htdocs/kriss
# chown -R www:daemon /var/www/htdocs/kriss
/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-fullchain.pem" 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 ;)
Tiny Tiny RSS est un autre agrégateur de flux. Ce dernier est très complet et conviendra davantage à ceux souhaitant proposer ce service à plusieurs personnes. Toutefois, son installation est loin d'être simple, et il s'avère souvent plus pratique d'avoir plusieurs instances de KrISS à la place. Mais libre à vous d'utiliser votre outil favori.
Pour l'installer, vous devez avoir déjà installé PHP, et appliqué la configuration relative au chroot ainsi que PostgreSQL ou MySQL et créé une table pour Tiny Tiny RSS.
Nous allons utiliser PostgreSQL par souci de performance.
On va créer une base uniquement pour Tiny Tiny RSS. Nous faisons le
choix de passer par un utilisateur ttrss
qui aura accès à la base :
# psql -U postgres -c "CREATE USER ttrss \ WITH PASSWORD 'mot_de_passe_de_l_utilisateur';" # psql -U postgres \connect template1 CREATE DATABASE "ttrssdb" WITH ENCODING 'UTF-8'; GRANT ALL PRIVILEGES ON DATABASE "ttrssdb" TO ttrss; ALTER DATABASE "ttrssdb" OWNER TO ttrss; \q
Nous pouvons enfin passer à la configuration de ttrss. On le télécharge dans le
dossier /var/www/htdocs/ttrss
:
# cd /var/www/htdocs # git clone --depth=1 https://tt-rss.org/git/tt-rss.git ttrss
Ensuite, nous modifions les permissions pour le serveur web (http) :
# chown -R www:daemon /var/www/htdocs/ttrss
On édite /etc/httpd.conf
pour y ajouter notre nouveau site :
server "rss.chezmoi.tld" { listen on * port 80 block return 301 "https://$SERVER_NAME$REQUEST_URI" no log } server "rss.chezmoi.tld" { listen on * tls port 443 root "/htdocs/ttrss" directory index index.php hsts tls { certificate "/etc/ssl/chezmoi.tld-fullchain.pem" key "/etc/ssl/private/chezmoi.tld.key" } location "*.php*" { fastcgi socket "/run/php-fpm.sock" } }
On recharge la configuration de httpd
:
# rcctl reload httpd
Vous pouvez désormais terminer l'installation en ouvrant votre navigateur à
l'adresse https://rss.chezmoi.tld/install/
.
On vous demande les identifiants pour accéder à la base de données. Ce sont ceux
que vous avez créés juste avant pour l'utilisateur ttrss
.
Cliquez ensuite sur “Initialize database” :
Cliquez sur “Save Configuration” pour l'enregistrer. Vous pouvez bien sûr modifier cette configuration selon vos besoins avant.
Vous pouvez maintenant vous diriger à l'adresse http://rss.chezmoi.tld
pour vérifier que tout fonctionne bien. Les identifiants par défaut sont “admin” et
“password”, qu'il faudra changer au plus vite.
Si tout s'est bien passé, vous pouvez supprimer l'installateur :
# rm -r /var/www/htdocs/ttrss/install
Vous souhaiterez certainement mettre à jour régulièrement la liste des flux de
façon automatique. Si vous avez lu la documentation relative à TinyTinyRSS, vous
savez qu'il faut exécuter le fichier update.php
. Par exemple, dans une tâche
cron :
@hourly /usr/local/bin/php-7.3 /var/www/htdocs/ttrss/update.php --feeds --quiet
Il vous sera peut-être demandé de modifier les permissions sur certains répertoires. Vous devez alors entrer :
chown -R 777 /var/www/htdocs/ttrss/cache/images chown -R 777 /var/www/htdocs/ttrss/cache/upload chown -R 777 /var/www/htdocs/ttrss/cache/export chown -R 777 /var/www/htdocs/ttrss/feed-icons chown -R 777 /var/www/htdocs/ttrss/lock
Webalizer 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 :
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.
Quoi 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 <style type="text/css"> HTMLHead body { HTMLHead background: radial-gradient(circle,#2569A0,#000046); HTMLHead } HTMLHead </style>
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-fullchain.pem" 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 660 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 <3Z>: 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 <3ZB>: 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.
Matomo est nettement plus lourd pour générer des statistiques. Si votre serveur a une puissance limitée, préférez webalizer.
Pour PHP, installez et activez ces paquets : php-curl php-gd
. Il y a
aussi besoin des bibliothèques geoip et cli qui sont normalement intégrées dans
le paquet PHP d'OpenBSD.
Installez une base MySQL (mariadb). Voici un récapitulatif tiré de la documentation de matomo:
# mysql -u root -p mysql> CREATE DATABASE matomo_db_name_here; mysql> CREATE USER 'matomo'@'localhost' IDENTIFIED BY 'password'; mysql> GRANT SELECT, INSERT, UPDATE, DELETE, CREATE, DROP, ALTER, CREATE TEMPORARY TABLES, LOCK TABLES ON matomo_db_name_here.* TO 'matomo'@'localhost';
Ensuite, on télécharge matomo dans le dossier /var/www/htdocs/matomo
:
# ftp -o /tmp/matomo.zip "http://builds.matomo.org/matomo.zip" # cp /tmp && unzip /tmp/matomo.zip # mv matomo /var/www/htdocs/
Configurez maintenant un nouveau site dans le fichier /etc/httpd.conf
:
server "stats.chezmoi.tld" { listen on * tls port 443 root "/htdocs/matomo/" directory index index.php hsts tls { certificate "/etc/ssl/chezmoi.tld-fullchain.pem" key "/etc/ssl/private/chezmoi.tld.key" } location "*.php*" { fastcgi socket "/run/php-fpm.sock" } }
Modifiez les permissions sur ce dossier :
# chown -R www:daemon /var/www/htdocs/matomo
Rechargez httpd avec rcctl reload httpd
puis dirigez-vous avec un navigateur
sur l'adresse du site fraîchement activé pour terminer l'installation de matomo.
N'oubliez pas d'ajouter à vos pages web le code d'intégration donné.
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.
Afin de profiter de statistiques incrémentales au fil du temps, il faut installer la saveur “tokyocabinet” du paquet :
# pkg_add -z goaccess-*-tokyocabinet
Pensez à regarder l'exemple donné dans le paquet :
/usr/local/share/examples/goaccess/goaccess.conf
Vous pouvez créer à partir de l'exemple un fichier de configuration pour goaccess qu'on appelera ici
/etc/goaccess.conf
. Vous pouvez lire des exemples pour des logs
enregistrés au format “combined” ou “default”.
Voici ce à quoi la configuration peut ressembler pour httpd au
format classique :
# 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 s'arrete pas si une ligne ne peut être parsee num-test 0 # Dossier où seront enregistrees les statistiques db-path /var/goaccessdb/
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 \ --load-from-disk --keep-db-files
Si vous constatez des erreurs de ce type:
Fatal error has occurred Error occurred at: src/tcabdb.c - tc_adb_create - 126 Unable to open an abstract database: /var/goaccessdb//8mcs9SUehdb_cumts.tcb#lcnum=1024#ncnum=512#lmemb=128#nmemb=256#bnum=32749#opts=l#mode=wct
Avant de créer les statistiques, vous devez augmenter la limite du nombre de
fichiers qui peuvent être ouverts avec la commande ulimit -n 256
. Ensuite,
goaccess fonctionnera comme prévu.