Du libre, du code, des idées, du mélange d’ArraKISS…

De l’épice pour la pensée

Voilà un bon bout de temps maintenant que j'ai OpenBSD d'installé sur mon ordinateur et serveur. Sachant qu'en plus, j'utiliser -current sur le pc portable, que je bidouille dessus, que je teste et fait des trucs pas toujours propres, un peu de nettoyage ne pourra pas faire de mal.

pkg_check
Tout d'abord, je lance

pkg_check

qui liste tout les vieux paquets, ceux qui ont des fichiers manquants ou des checksums bizarres, et répare tout ça proprement. Cet outil est vraiment ma-gni-fique !


doas pkg_check
Packing-list sanity: ok
Direct dependencies: ok
Reverse dependencies: ok
Files from packages: ok
--- femail-chroot-1.0p2 -------------------
checksum for /var/www/bin/femail does not match
--- py-setuptools-28.6.1p0v0 -------------------
checksum for /usr/local/lib/python2.7/site-packages/pkg_resources/_vendor/packaging/__about__.py does not match
checksum for /usr/local/lib/python2.7/site-packages/setuptools/command/build_py.py does not match
--- python-2.7.14 -------------------
checksum for /usr/local/lib/python2.7/email/mime/__init__.pyc does not match

Dans l'exemple ci-dessus, rien d'inquiétant. femail a été modifié à cause de permissions corrigées par moi, et les fichiers pythons ont été exécutés donc même chose.

sysclean
sysclean est un outil qui permet de détecter les fichiers obsolètes suite à des mises à jour
J'installe le paquet sysclean et je le lance afin de vérifier les paquets "obsoletes" :

sysclean -p

Après une vérification, je vais virer ces derniers car n'en ai pas besoin. Pour tout faire d'un coup :

pkg_delete $(sysclean -p | awk '{print $2}')

Ensuite, je lance une vérification du système entier pour supprimer à la main les fichiers inutiles. Là, pas de commande automatique, c'est important de vérifier soigneusement, car des fichiers détectés sont simplement ceux que j'ai créé et j'en ai besoin. Attention, sysclean compare les fichiers présents avec ceux qu'il doit y avoir sur un système de base tout propre, et ne tient pas comptes de vos modifications ou ajouts de paquets.

# sysclean
/SHA256.sig
/usr/X11R6/lib/libOSMesa.so.10.1
/usr/X11R6/lib/libdrm.so.7.4
/usr/X11R6/lib/libdrm_amdgpu.so.1.2
/usr/X11R6/lib/libfreetype.so.28.0
/usr/X11R6/lib/libgbm.so.0.1
/usr/lib/libc.so.89.3
/usr/lib/libc.so.89.3.a
/usr/lib/libcrypto.so.41.1
/usr/lib/libexpat.so.11.0
/usr/lib/libobjc.so.6.0
/usr/lib/libperl.so.18.0
/usr/lib/libpthread.so.23.0
/usr/lib/libssl.so.43.2
/usr/lib/libtls.so.15.4
/usr/lib/libutil.so.12.1
/usr/lib/libobjc.a
/usr/lib/libobjc_p.a
/usr/lib/gcc-lib/amd64-unknown-openbsd6.1
/usr/include/dev/wsfont/lucida16x29.h
/usr/include/dev/wsfont/omron12x20.h
/usr/include/dev/wsfont/qvss8x15.h
/usr/include/dev/wsfont/vt220l8x10.h
/usr/include/dev/wsfont/vt220l8x8.h
/usr/include/g++/FlexLexer.h
/usr/include/g++/amd64-unknown-openbsd6.1
/usr/include/g++/std
/usr/include/netinet/tcpip.h
/usr/include/netinet6/tcpipv6.h
/usr/include/sys/dkbad.h
/usr/include/sys/kgdb.h
/usr/include/sys/scanio.h
/usr/libdata/perl5/amd64-openbsd/perllocal.pod
/usr/libexec/locate.concatdb
/usr/share/misc/ascii
/usr/share/misc/operator
...

pkg_delete

Pour finir, on retire les dépendances inutiles :

pkg_delete -a

Et voilà :)
On peut retourner travailler.

Dans les logs de votre serveur, il y a certainement un tas de requêtes vers "wp-login.php" et consorts. Ce sont des petits malins qui tentent de scanner mes sites pour l'éventuelle présence de wordpress.
Je ne sais pas vous, mais moi, ça m'agace. D'autant plus que je n'utilise pas wordpress.

Heureusement, "relayd" est là ;)
Présent par défaut sous OpenBSD, il n'y a qu'à rajouter ces quelques lignes à sa configuration pour bloquer avec élégance et condescendance les bots.

block quick path "/wp-*" label '<em><img src="https://yeuxdelibad.net/Images/scanbot.png"><br>Stop scanning for wordpress</em>. Educate yourself instead :<br><iframe src="https://en.wikipedia.org/wiki/Special:Random" width="100%" height="600px"></iframe>'

return error style "body { background: radial-gradient(ellipse at center top, gold, darkorange); color: red; text-align:center } hr {border:0; background-color:white; color:white; height:1px; width:30%; margin-top:50px;}"

Ça donne ça :

Ça fait mal hein ?

Libre à vous de changer le code html et aussi le code CSS qui pique les yeux (na!)

Si vous avez installé votre OpenBSD depuis quelques temps, peut-être souhaitez-vous faire un peu de ménage.
Rien de tel que de supprimer les ports et paquets inutilisés, puis terminer avec les commandes suivantes pour retirer les dépendances inutiles et vérifier le système :

pkg_delete -a
pkg_check

Afin de détecter quels paquets ne me servent plus depuis longtemps et que j'ai peut-être oublié, j'utilise le script suivant

Il regarde la liste des paquets installés puis affiche ceux qui ont un exécutable qui n'a pas été utilisé depuis plus d'un mois. (changez la variable DAYS pour un autre délai).

Voici le script :

#!/bin/sh
# print unused packages that may be deleted

# It only check if last access time of binaries is older than a month by default.
# It doesn't check for libs, only bins

DAYS=15    # Number of days since last access
LAST=$(($(date +%s) - ($DAYS * 24 * 3600)))

echo "Those packages haven't been used in the last $DAYS days : "

for P in $(pkg_info | cut -d' ' -f1); do 
        BINS=$(pkg_info -L $P |grep '/usr/local/bin')
        for B in $BINS; do
                # check if $B is a link
                B=$(readlink -f $B)
                if [ $(stat -f %a $B) -lt $LAST ]; then
                        echo "$P  | $B"
                fi
        done
done

Décidément, que j'aime OpenBSD. La simplicité de ses outils permet de, très facilement, récupérer des informations sans prise de tête.

J'ai l'immense plaisir de vous annoncer la publication d'une nouvelle édition du manuel pour apprendre à (auto-)héberger son serveur à l'aide d'OpenBSD accompagné d'un "bonus". C'est, je crois, le travail le plus abouti que j'ai pu mener. Ce manuel s'est enrichi au fil du temps et est arrivé à maturation pour plusieurs version d'OpenBSD. Les bénéfices des ventes me permettent aujourd'hui de publier cette nouvelle version. Cliquez sur les images ci-dessous pour en voir plus.

Ça a un peu traîné car il fallait que 22decembre termine ldnscripts, que je puisse le tester suffisamment, puis ensuite l'éditeur était débordé et ne savait pas bien comment faire un ebook qui ressemble à ce que je voulais.
Sur la forme, il y a peu de changements, puisque j'adoooore le travail que Péhä a fait. J'ai ajouté quelques éléments qui donnent une identité propre au livre.

aperçu 1 du livre auto-hébergement avec openbsd
aperçu 3 du livre auto-hébergement avec openbsdaperçu 2 du livre auto-hébergement avec openbsd

Cependant, plusieurs modifications sont à noter sur le fond :

  • Mise à jour des versions des logiciels et passage à OpenBSD 6.2.
  • L'utilisation de certificats SSL (pour du https) en utilisant relayd pour filtrer les en-têtes est plus correcte. La sécurité n'en est que renforcée.
  • Grâce à kuniyoshi qui m'a fait des retours réguliers en mettant en place son serveur mail, les explications sont normalement plus claires.
  • Les chapitres sont légèrement réorganisés pour faciliter la lecture et la cohérence.
  • Des astuces dans l'utilisation d'OpenBSD sont ajoutées.
  • Vous pourrez constater de nombreuses petites modifications/ajouts/précisions pour expliquer le mieux possible comment faire.
  • Grâce aux retours reçus, j'ai pu corriger plusieurs coquilles.
  • Après des tas de relectures, je pense être venu à bout de toutes les erreurs/maladresses qui trainaient.
  • Ajout d'exemples de configuration supplémentaires.
  • La gestion DNSSEC est réalisée par un set de scripts écrits par 22decembre qui a largement contribué à toute la partie gestion de zones DNS du manuel. Cela évite d'utiliser des outils très compliqués ou surchargés et permet aussi de bien comprendre le fonctionnement. Ces notions sont sans doute les plus compliquées, il a donc été difficile d'aménager les explications.

Pour accompagner ce manuel, je publie au format numérique un ensemble de fiches courtes à 3,5€ qui résument rapidement l'essentiel du livre (disponible aussi sur Amazon, mais plus cher, ils s'embêtent pas les gars...).
Dans mon entourage, on m'a dit "Ça a l'air super intéressant, et ça me tente bien d'héberger mes services. Mais lire plus de 200 pages, pfouh, je n'ai pas le courage !". Ça se comprend. L'idée de l'ebook était née.
Chaque partie, de l'installation d'OpenBSD à l'hébergement des mails en passant par le site web est résumée en maximum 4 pages. MAXIMUM, c'est souvent moins. Il y a quelques astuces au passage.
Ce document a pour but de constituer un "aide-mémoire" et aussi donner envie d'aller plus loin si besoin. (42 pages sont détectées. Coïncidence? ;P ).

Dans tous les cas, je garde sur mon site la version html du présent manuel pour ceux qui n'aiment pas la version papier, ne veulent pas de l'epub ou n'ont pas les moyens ou l'envie de payer pour lire ce travail.

En parlant de prix, le manuel papier est moins cher à l'achat :) . Je ne l'ai pas référencé en librairie. Seul atramenta peut le vendre. C'est aussi bien, puisque seul 1 exemplaire a été vendu en librairie.
Notez que si vous souhaitez commander plusieurs exemplaires d'un coup, je peux vous avoir des prix plus avantageux, il suffit de m'en parler ;) .

Si vous vous lancez, vous n'êtes pas seul puisque je fais de mon mieux pour répondre aux mails qui me sont envoyés, et le forum obsd4a est créé pour ça ;) .

J'espère que la lecture vous plaira et permettra d'accompagner nombre d'entre vous dans le projet d'héberger vos sites et mails. C'est le seul moyen de reprendre le contrôle de vos données. N'hésitez pas à vous y prendre à plusieurs : un serveur par quartier par exemple ;)

Enfin, si vous avez la possibilité de parler autour de vous de ce manuel, c'est très gentil à vous ;) Pensez à votre entourage 🎅.

Curieux de cette cryptomonnaie, je voulais tester duniter sous OpenBSD. Voici la marche à suivre :

Récupérez une archive de duniter sur github : https://github.com/duniter/duniter/releases/tag/v1.5.9

Ensuite, suivez la procédure suivante ("#" veut dire que c'est à lancer avec les droits super utilisateur, "$" en user normal) :

# pkg_add node
# npm install --global yarn
# ln -s /usr/local/bin/python2.7 /usr/local/bin/python
$ ftp -o duniter.tar.gz https://github.com/duniter/duniter/archive/v1.5.9.tar.gz
$ tar xvzf duniter.tar.gz
$ cd duniter*
$ yarn

On peut maintenant l'utiliser en suivant les recommandations situées ici.

./bin/duniter wizard key
./bin/duniter wizard network
./bin/duniter sync

Et ça tourne...

Vos clés sont dans le fichier ~/.config/duniter/duniter_default/keyring.yml

Je n'arrive cependant pas à avoir l'interface web comme indiqué dans la doc, comme si elle n'existait plus. En fait, la documentation est soit incomplète soit peu à jour, soit sous forme de vidéo ce qui est très peu pratique à mon avis. Il faudra peut-être améliorer ces points pour que duniter soit plus utilisée. La prochaine étape serait de se faire certifier par d'autres utilisateurs, mais là aussi je bloque : où est-ce que ça se passe?

EDIT : suite aux commentaires, pour avoir l'interface web :

./bin/duniter plug duniter-ui@1.4.x
sed -i "s/duniter\//..\/..\/..\/..\//g" node_modules/duniter-ui/server/controller/webmin.js
./bin/duniter direct_webstart

Il semble que les droits administrateur soient requis.

Puis direction https://localhost:9220