cd / ; apropos ; find * ;

Divers services #

XMPP avec prosody #

Pourquoi choisir une messagerie instantanée XMPP ? #

Vous connaissez peut-ĂȘtre dĂ©jĂ  IRC pour la messagerie instantanĂ©e dans des salons de discussions. Cependant, XMPP prĂ©sente des avantages devant IRC non nĂ©gligeables pour communiquer :

De tous ces points, c'est principalement la question de la vie privée et de la possibilité de chiffrer les communications qui, à ma grande surprise, semblent d'un seul coup peu intéressants pour des libristes habituellement scrupuleux sur ces questions. Pourtant, n'importe quel participant d'un salon sur IRC peut connaßtre votre IP. Certes, ça ne fait pas tout, mais ça reste énorme comme "fuite".

D'autres ont écrit sur le sujet, en préférant par exemple lister les défauts d'IRC (IRC's flaws) :

https://tilde.team/~kiedtl/blog/irc/

Mise en place de prosody #

Prosody est un serveur XMPP à la fois léger et facile à configurer.

https://prosody.im

Voici quelques éléments à propos de sa mise en place pour les détails relatifs à OpenBSD.

Tout d'abord, on installe le port :

# pkg_add prosody

Ajout de champs DNS pour XMPP #

Vous avez besoin d'ajouter Ă  votre zone de nouveaux champs :

Un champ A :

xmpp.chezmoi.tld

Ce champ doit correspondre à celui définit ensuite dans les champs SRV suivants.

Des champs SRV :

_xmpp-client._tcp.chezmoi.tld. 18000 IN SRV 0 5 5222 xmpp.chezmoi.tld.
_xmpp-server._tcp.chezmoi.tld. 18000 IN SRV 0 5 5269 xmpp.chezmoi.tld.

Il faudra en ajouter pour les services proposés par le serveur xmpp s'il y en a, comme les MUC :

_xmpp-server._tcp.conference.chezmoi.tld. 18000 IN SRV 0 5 5269 xmpp.chezmoi.tld.

Configuration de prosody #

Éditez /etc/prosody/prosody.cfg.lua.

Il n'y a rien à faire si ce n'est préciser l'adresse de l'admin ajouter un virtualhost et préciser l'emplacement du certificat :

VirtualHost "chezmoi.tld"
    ssl = {
        certificate = "/etc/prosody/certs/chezmoi.tld.crt";
        key = "/etc/prosody/certs/chezmoi.tld.key";
    }

Le certificat doit ĂȘtre lisible par l'user _prosody.

Puisque dans cette documentation on suggÚre d'obtenir les certificats avec acme-client, installez-les ainsi aprÚs avoir lancé acme :

install -g _prosody -o _prosody -m 400 /etc/ssl/private/chezmoi.tld.key /etc/prosody/certs/
install -g _prosody -o _prosody -m 400 /etc/ssl/chezmoi.tld.crt /etc/prosody/certs/

Si les certificats sont renouvelĂ©s automatiquement, pensez Ă  ajouter les lignes prĂ©cĂ©dentes au script appelĂ© pĂ©riodiquement 😎.

Ajoutez l'administrateur :

# prosodyctl adduser batman@chezmoi.tld

On vérifie que la configuration est correcte :

prosodyctl check config

Ouverture des ports pour Prosody #

Ouvrez les ports 5222 (xmpp-client) et 5269 (xmpp-server).

Archivage des logs de Prosody #

Éditez /etc/newsyslog.conf :

/var/prosody/prosody.log                644  5     300  *     Z
/var/prosody/prosody.err                644  5     300  *     Z

VĂ©rifiez la configuration du serveur XMPP #

Remplacez "chezmoi.tld" par le domaine de votre serveur et ouvrez l'URL suivante :

https://xmpp.net/result.php?domain=chezmoi.tld&type=server

mod_http_file_share #

Si vous choisissez d'activer le module http_file_share pour partager des fichiers, veillez Ă  ouvrir les ports 5280 et 5281.

https://prosody.im/doc/modules/mod_http_file_share

De plus, ajoutez dans votre certificat le domaine utilisé pour le partage de fichiers.

Performances améliorées avec SQLite #

Je vous encourage à utiliser SQLite plutÎt que le stockage par fichiers par défaut pour de meilleures performances. Notez toutefois que c'est tout à fait facultatif.

storage = "sql" -- Default is "internal"
sql = { driver = "SQLite3", database = "prosody.sqlite" } -- Default. 'database' is the filename.

Installer et tenir Ă  jour des modules #

Précisez dans /etc/prosody/prosody.cfg.lua l'URL des modules disponibles:

plugin_server = "https://modules.prosody.im/rocks/"

Vous pourrez alors installer/mettre Ă  jour des modules avec la commande:

prosodyctl install nom_du_module

Afin d'ĂȘtre alertĂ© si de nouvelles versions de modules sont disponibles, je vous suggĂšre d'ajouter dans /etc/daily.local la ligne suivante:

/usr/local/sbin/prosodyctl list --outdated

Voir aussi:

https://prosody.im/doc/installing_modules

En apprendre plus sur Prosody #

Ça se passe sur le site officiel 😉

https://prosody.im/doc/configure

mlmmj : Liste de diffusion #

À l'heure oĂč il existe des rĂ©seaux sociaux en tous genres, avec leurs interfaces spĂ©cifiques, ainsi que des applications de messagerie instantanĂ©es, des forums, ..., rappelons que les listes de diffusion sont gĂ©niales.

Oui, je le dis et je l'assume, les mailing lists, c'est l'avenir car :

Je suis convaincu que les listes de diffusion ont de belles années devant elles.

Ici, je vous propose d'utiliser mlmmj puisqu'il fonctionne bien avec OpenBSD et répond à des exigences fortes en termes de performances, de sécurité et de simplicité.

Site officiel mlmmj :

https://mlmmj.org/

Installer mlmmj #

C'est plus long Ă  Ă©crire qu'Ă  faire :

# pkg_add mlmmj

Enregistrement DNS requis #

La liste de diffusion est sur un serveur qu'il faut prĂ©ciser dans un champ DNS. C'est d'autant plus important si vous utiliser un domaine pour votre liste de diffusion qui n'est pas exactement le mĂȘme que le domaine principal.

Vous devez donc avoir un champ MX qui pointe vers le domaine de l'IP de la liste :

liste.chezmoi.tld.  IN  MX  1  list.chezmoi.tld.
liste.chezmoi.tld.  IN  A      192.0.2.2

Ajouter une liste de diffusion #

Utilisez la commande mlmmj-make-ml fournie avec le port, puis laissez-vous guider.

Voici un exemple pour créer la liste "pizza" sur le domaine "list.chezmoi.tld", soit "pizza@list.chezmoi.tld".

# mlmmj-make-ml
Creating Directorys below /var/spool/mlmmj. Use '-s spooldir' to change
What should the name of the Mailinglist be? [mlmmj-test] : pizza
The Domain for the List? [] : chezmoi.tld
The emailaddress of the list owner? [postmaster] : batman@chezmoi.tld

For the list texts you can choose between the following languages or
give a absolute path to a directory containing the texts.

Available languages:
ast   cs    de    en    fi    fr    gr    it    pt    sk    zh-cn
The path to texts for the list? [en] :

Don't forget to add this to /etc/aliases:
pizza:  "|/usr/local/bin/mlmmj-receive -L /var/spool/mlmmj/pizza/"

If you're not starting mlmmj-maintd in daemon mode,
don't forget to add this to your crontab:
0 */2 * * * "/usr/local/bin/mlmmj-maintd -F -L /var/spool/mlmmj/pizza/"

 ** FINAL NOTES **
1) The mailinglist directory have to be owned by the user running the
mailserver (i.e. starting the binaries to work the list)
2) Run newaliases

Assurez-vous que les permissions sont correctes :

# chown -R _smtpd:_smtpd /var/spool/mlmmj/pizza

Éditez le crontab de root ou d'un utilisateur dĂ©diĂ© (# crontab -e) pour ajouter la ligne donnĂ©e prĂ©cĂ©demment. En passant, veillez Ă  bien retirer les guillemets proposĂ©s :

0 */2 * * *  /usr/bin/mlmmj-maintd -F -L /var/spool/mlmmj/pizza

Préparer smtpd pour mlmmj #

Éditez le fichier /etc/mail/smtpd.conf pour qu'il traite correctement les mails destinĂ©s Ă  votre liste de diffusion :

table aliases "/etc/mail/aliases"
[...]
action local_mail maildir alias <aliases>
[...]
match from any for domain "list.chezmoi.tld" action local_mail

⚠ Il est important que l'action PRENNE EN COMPTE les alias.

Il faut justement éditer le fichier /etc/mail/aliases pour envoyer à mlmmj les messages destinés à votre liste :

pizza:"|/usr/local/bin/mlmmj-receive -L /var/spool/mlmmj/pizza/"

Terminez avec la commande # newaliases ou en redémarrant smtpd.

Personnaliser une liste de diffusion #

Comme vous vous en doutez, les fichiers concernant votre liste sont situés dans /var/spool/mlmmj/pizza.

mlmmj se configure en éditant seulement quelques fichiers situés dans le répertoire control. Dans notre cas, cela donne /var/spool/mlmmj/pizza/control.

Voici quelques éléments de configuration non exhaustifs en ajoutant les fichiers suivants :

deny !^Content-Type: text/plain
allow
Quitter la liste: pizza+unsubscribe@list.chezmoi.tld
Anciens messages (N: un nombre): pizza+get-N@list.chezmoi.tld
Aide: pizza+help@list.chezmoi.tld

On peut aussi modifier le contenu des modĂšles de message en allant les chercher dans /var/spool/mlmmj/pizza/text.

Consultez la documentation pour d'autres éléments de configuration :

http://mlmmj.org/docs/tunables/

Gemini #

Gemini est un protocole internet récent qui se veut plus simple et plus léger que http. Il bénéficie des "bonnes" limitations de gopher et évite les problÚmes inhérents à http (javascript, publicités, traçage des visiteurs...). Il s'inscrit dans la logique du "smolweb".

C'est un moyen idéal pour publier ses écrits en privilégiant d'abord le contenu plutÎt que le contenant.

Il existe plusieurs serveurs, mais je voudrais donner quelques éléments pour installer "vger", un serveur gemini spécialement conçu pour OpenBSD qui met à profit ses méthodes de sécurisation (unveil, pledge...). En supplément, on discutera rapidement de gmid, un autre serveur plus simple à mettre en place.

vger #

Afin de garder vger aussi simple que possible, SolÚne (développeuse de vger) a eu la brillante idée d'utiliser des éléments déjà présents dans OpenBSD; à savoir :

Voici donc comment installer vger.

# pkg_add vger

La lecture du readme nous apprend la suite de la procédure.

Éditez le fichier /etc/inetd.conf pour y indiquer la façon dont vger sera invoquĂ© :

127.0.0.1:11965 stream tcp nowait _vger /usr/local/bin/vger vger

Par défaut, vger ira chercher les fichiers dans /var/gemini.

Vous pouvez préciser des options, par exemple pour changer le dossier dans lequel est situé la capsule/le site (-d), activer l'auto-indexation des dossiers ne contenant pas de fichier index.gmi (-i) ou encore permettre le support des hÎtes virtuels aussi appelés "virtualhosts" (-v). Ce dernier point est intéressant si vous souhaitez servir plusieurs domaines : vger ira ouvrir un dossier chezmoi.tld situé dans /var/gemini si un client demande gemini://chezmoi.tld. Vous pouvez donc ainsi héberger plusieurs capsules en utilisant un dossier portant le nom du domaine à servir (/var/gemini/chezmoi.tld, /var/gemini/autrecapsule.tld).

# serve files in /var/gemini/chezmoi.tld
localhost:11965 stream tcp6 nowait _vger /usr/local/bin/vger vger -v -d /var/gemini/ -i
localhost:11965 stream tcp nowait _vger /usr/local/bin/vger vger -v -d /var/gemini/ -i

Si vous avez Ă©tĂ© attentif Ă  la ligne ci-dessus, vous aurez remarquĂ© qu'inetd Ă©coute en local (localhost) sur le port 11965 et renvoie la requĂȘte vers vger, invoquĂ© en tant qu'utilisateur "_vger". Cela permet de restreindre les possibilitĂ©s de vger s'il devait ĂȘtre compromis.

De plus, une ligne supplémentaire avec "tcp6" a été ajoutée : cela permet de servir aussi en IPv6. Il faut toutefois avoir correctement rempli le fichier /etc/hosts :

127.0.0.1   localhost
::1         localhost

Ensuite, on ajoute une configuration Ă  relayd dans /etc/relayd.conf :

ext_ip4 = "192.0.2.2"
ext_ip6 = "2001:db8::2"
log connection

tcp protocol "gemini" {
        tls keypair chezmoi.tld
}

relay "gemini" {
        listen on $ext_ip4 port 1965 tls
        protocol "gemini"
        forward to localhost port 11965
}
relay "gemini6" {
        listen on $ext_ip6 port 1965 tls
        protocol "gemini"
        forward to localhost port 11965
}

Quelques explications :

Voici un schéma qui résume le chemin suivi lors d'un accÚs à votre capsule :

               1965       11965
Visiteur ---> Relayd ---> inetd ---> vger

Il ne reste plus qu'Ă  activer et lancer les services :

# rcctl enable inetd relayd
# rcctl start inetd relayd

Enfin, ouvrez le port 1965 en TCP dans /etc/pf.conf.

Quelques liens pour aller plus loin:

Site officiel Gemini :

https://geminiprotocol.net/

Analyse de vger point de vue sécurité :

https://dataswamp.org/%7Esolene/2021-01-14-vger-security.html

Code source de vger :

https://tildegit.org/solene/vger


gmid #

Omar Polo est l'auteur de gmid, lui aussi un développer d'OpenBSD.

L'avantage principal de gmid est d'avoir une syntaxe semblable aux autres démons OpenBSD, comme httpd.

gemini://gmid.omarpolo.com

On l'installe comme d'habitude:

# pkg_add gmid
# rcctl enable gmid

Vous compléterez /etc/gmid.conf pour y ajouter un nouveau site. Cela peut ressembler à ceci:

user "_gmid"
chroot "/var/gemini"
log style combined

types {
        include "/usr/share/misc/mime.types"
}

server "si3t.ch" {
        listen on * port 1965
        cert "/etc/ssl/si3t.ch-self.crt"
        key  "/etc/ssl/private/si3t.ch-self.key"
        root "si3t.ch"
        lang fr
        auto index on
}

server "b2khgkvb2wn4avjshjp63kknsjwikgwff5dwwydldia6qwf4kdnueyad.onion" {
        listen on localhost port 11966
        cert "/etc/ssl/si3t.ch-self.crt"
        key  "/etc/ssl/private/si3t.ch-self.key"
        root "si3t.ch"
        lang fr
        auto index on
}

Lisez les man gmid et gmid.confi(5) pour y trouver quelques exemples.

Gopher (geomyidae) #

J'en entends déjà rire en lisant ce titre. Non, le protocole gopher n'est pas mort. Bien que peu utilisé, on y trouve encore quelques trésors et sa simplicité est rafraichissante. Gopher vous permettra de partager des textes et des documents sans difficultés. Il s'inscrit dans la logique du "smolweb".

Que ce soit par utilité ou par jeu, nous allons voir comment installer un serveur gopher sous OpenBSD.

Il vous faudra ouvrir et rediriger le port 70 (gopher).

Vous déposerez vos fichiers textes, vos images, vos vidéos (...) dans le dossier /var/gopher, ils seront automatiquement disponibles à l'adresse gopher://chezmoi.tld.

Le serveur geomyidae est écrit en C par un des développeurs chez suckless.

http://r-36.net/scm/geomyidae/file/README.html

L'installation est toute bĂȘte :

# pkg_add geomyidae
# rcctl enable geomyidae
# rcctl start geomyidae

Et voilà, plus qu'à remplir votre site dans /var/gopher. 😊

Cependant, je vous conseille de lire le man et d'éditer les options par défaut. Par exemple, on pourra préférer :

# rcctl set geomyidae flags -c -e -h chezmoi.tld -b /var/gopher/chezmoi.tld -t /etc/ssl/private/chezmoi.tld.key /etc/ssl/chezmoi.tld.crt

Vous pourrez consulter les logs dans /var/log/geomyidae.log.

Vous voudrez peut-ĂȘtre jeter un Ɠil au serveur gophernicus (gopher://gophernicus.org/) qui peut profiter d'unveil sous OpenBSD.

gopher://gophernicus.org/

Seedbox #

Ce chapitre décrit comment mettre en place une seedbox, afin de partager et télécharger des fichiers torrent.

Seedbox avec rtorrent #

rtorrent est un client efficace et trÚs léger. Il dispose d'une interface en console pour le contrÎler, que certains préfÚrent à l'interface web de transmission. En effet, seul un accÚs SSH est nécessaire pour l'utiliser.

rtorrent est un client efficace et trÚs léger.

https://github.com/rakshasa/rtorrent/wiki/

On commence par l'installer :

# pkg_add rtorrent

Ajoutez ensuite un utilisateur _rtorrent dont l'unique tĂąche sera de faire tourner rtorrent (ce n'est pas obligĂ©, mais j'aime bien sĂ©parer les processus 😊). Nous pouvons maintenant nous connecter en tant qu'utilisateur _rtorrent :

# su _rtorrent

Nous allons créer les dossiers qui serviront à télécharger les torrents, ainsi qu'un dossier dans lequel tous les fichiers .torrent ajoutés seront directement pris en charge par rtorrent :

$ mkdir -p Telechargements/{download,session,torrents}

On crée maintenant le fichier ~/.rtorrent.rc. Vous pouvez copier l'exemple fourni avec le paquet :

$ cp /usr/local/share/examples/rtorrent/rtorrent.rc ~/.rtorrent.rc

On modifie la configuration selon nos besoins. Seules les lignes ne commençant pas par "#" sont prises en comptes. Les autres correspondent souvent aux valeurs par défaut.

# Global upload and download rate in KiB. "0" for unlimited.
download_rate = 0
upload_rate = 20

directory = ~/Telechargements/download 
session = ~/Telechargements/session

# Ajoute ou supprime les fichiers torrents present
schedule = watch_directory,5,5,load_start=~/Telechargements/torrents/*.torrent
schedule = untied_directory,5,5,stop_untied=~/Telechargements/torrents/*.torrent

# Pour utiliser les magnets, il est parfois necessaire d'ouvrir le port d'ecoute
# en tcp seulement
#port_range = 6890-6999
#port_random = no

check_hash = yes

use_udp_trackers = yes

# Ces options permettent l'utilisation des magnets
encryption = allow_incoming,try_outgoing,enable_retry

# Important pour ne pas necessiter le besoin de trackers
dht = auto

# dht_port = 6881
peer_exchange = yes

# Avertissement des chargements terminés
system.method.set_key = event.download.finished,notify_me,"exécute=~/.rtorrent_mail.sh,$d.get_name="

# Ajout de nƓuds dht si besoin aprĂšs un dĂ©lai : 
schedule2 = dht_node_1, 5, 0, "dht.add_node=router.utorrent.com:6881"
schedule2 = dht_node_2, 5, 0, "dht.add_node=dht.transmissionbt.com:6881"
schedule2 = dht_node_3, 5, 0, "dht.add_node=router.bitcomet.com:6881"
schedule2 = dht_node_4, 5, 0, "dht.add_node=dht.aelitis.com:6881"

Afin d'ĂȘtre averti lorsqu'un tĂ©lĂ©chargement est terminĂ©, on crĂ©e le script ~/.rtorrent_mail.sh :

#!/bin/sh
echo "$(date) : $1 - Download completed." | mail -s "[rtorrent] - Download completed : $1" root

Notez que tous les fichiers .torrents qui seront déposés dans le dossier ~/Telechargements/torrents seront directement téléchargés par rtorrent. Si vous voulez ajouter un fichier torrent à partir de votre ordinateur habituel, vous pouvez utiliser un client SFTP ou la commande scp :

$ scp *.torrent _rtorrent@chezmoi.tld:/home/_rtorrent/Telechargements/torrents/

Reste Ă  lancer rtorrent en arriĂšre-plan Ă  chaque dĂ©marrage du serveur. Éditez le crontab de l'utilisateur _rtorrent en entrant crontab -e puis indiquez la ligne suivante :

@reboot /usr/bin/tmux new -s rtorrent -d /usr/local/bin/rtorrent

On utilise tmux installé par défaut sur OpenBSD pour envoyer rtorrent en arriÚre-plan.

https://man.openbsd.org/tmux

Si vous souhaitez administrer rtorrent par la suite, connectez-vous en SSH avec l'utilisateur _rtorrent, et affichez rtorrent avec la commande tmux a -t rtorrent. Appuyez successivement sur ctrl-b puis la touche d pour vous détacher de rtorrent.

Pour ajouter un lien magnet, vous pouvez appuyer sur backspace (effacer) puis collez le lien magnet (Shift-Inser). Il semble que certains ont besoin d'ouvrir le port d'Ă©coute configurĂ© dans rtorrent (en tcp) afin d'utiliser les magnets sans trackers. Avec la configuration en exemple ci-dessus, ça devrait fonctionner dans problĂšmes 😁.

Si vous ne vous souvenez plus des touches permettant de contrĂŽler rtorrent, saisissez cette commande :

$ rtorrent -h

Notez que ^s correspond à Ctrl-s. 😉

Seedbox avec transmission #

Transmission se montre trĂšs efficace et devrait convenir Ă  la plupart de vos besoins.

https://www.transmissionbt.com/

Il dispose d'interfaces graphiques ainsi que d'une interface dans un navigateur, ce qui le rend trĂšs facile Ă  contrĂŽler.

Nous configurerons transmission de façon à télécharger les torrents dans le dossier /var/transmission. Adaptez les chemins du tutoriel selon vos besoins.

La commande habituelle permet de l'installer :

# pkg_add transmission

On va ensuite activer le service. On le dĂ©marre puis l'arrĂȘte aussitĂŽt afin de crĂ©er les fichiers de configurations dont on aura besoin :

# rcctl enable transmission_daemon
# rcctl start transmission_daemon
# rcctl stop transmission_daemon

Nous allons créer des dossiers spécifiques afin d'enregistrer les téléchargements effectués par transmission et stocker les fichiers .torrent :

# mkdir -p /var/transmission/{downloads,incomplete,torrents}

Modifiez les propriétaires de ces répertoires afin d'en autoriser l'accÚs à transmission :

# chown -R _transmission:_transmission /var/transmission

Si vous souhaitez que d'autres utilisateurs puissent consulter ces répertoires, modifiez les permissions sur ces derniers :

# chmod a+rX /var/transmission

Afin de configurer transmission, Ă©ditez le fichier suivant :

/var/transmission/.config/transmission-daemon/settings.json

À l'intĂ©rieur, vous pourrez adapter la configuration selon vos besoins. Voici les lignes que j'ai modifiĂ©es :

"download-dir": "/var/transmission/downloads",
"encryption": 2,
"incomplete-dir": "/var/transmission/incomplete",
"incomplete-dir-enabled": true,
"peer-port-random-on-start": true,

Je vous propose d'ajouter les lignes suivantes afin que chaque fichier .torrent ajouté dans le dossier /var/transmission/torrents (par SFTP par exemple) soit automatiquement téléchargé par transmission.

"watch-dir": "/var/transmission/torrents",
"watch-dir-enabled": true

Afin de recevoir un mail lorsque le téléchargement d'un torrent est terminé, ajoutez ces lignes :

"script-torrent-done-enabled": true,
"script-torrent-done-filename": "/var/transmission/dl-done.sh",

Le script dl-done.sh peut par exemple contenir ceci :

#!/bin/sh
echo "$(date) : $TR_TORRENT_NAME - Download completed." | mail -s "[transmission] - Download completed : $TR_TORRENT_NAME" toto@example.com

N'oubliez pas de rendre ce dernier exécutable :

# chmod +x /var/transmission/dl-done.sh

Une fois vos modifications terminées, rechargez la configuration de transmission avec la commande suivante :

# rcctl start transmission_daemon

Transmission dispose d'une interface web. Le plus simple afin d'y accĂ©der est d'utiliser un tunnel SSH. À partir de l'ordinateur avec lequel vous souhaitez consulter transmission, lancez la commande suivante :

ssh -N -L 9999:127.0.0.1:9091 utilisateurssh@chezmoi.tld

Une fois identifié, vous pouvez ouvrir un navigateur à l'adresse http://localhost:9999 afin d'accéder à transmission.

Syncthing #

Syncthing permet de sauvegarder ses données et facilement les synchroniser sur plusieurs appareils.

https://syncthing.net/

Il dispose de plusieurs clients (logiciels permettant de l'utiliser) pour Windows, Linux, Android et aussi OpenBSD. Par dĂ©faut, tout est chiffrĂ© ce qui est tout de mĂȘme rassurant. C'est, Ă  mon avis, un excellent outil 😋.

Installation et configuration #

Notez qu'il a été empaqueté pour OpenBSD, on peut donc l'installer en une simple commande :

# pkg_add syncthing

Nous allons le laisser tourner en arriĂšre-plan sur notre serveur afin que vous puissiez Ă  tout moment synchroniser vos documents et les sauvegarder. Pour cela, lancez ces commandes :

# rcctl enable syncthing
# rcctl start syncthing

Par défaut, syncthing va stocker sa configuration et les fichiers synchronisés dans /var/syncthing. Ce dossier contient :

Nous pourrions configurer syncthing en éditant ces fichiers, cependant, l'ajout d'autres appareils avec lesquels se synchroniser va vite devenir insupportable. Heureusement, il existe une interface d'administration pour syncthing. Elle n'est disponible qu'à partir du serveur, ce qui n'est pas pratique pour s'en servir car on a besoin d'un navigateur web pour y accéder.

Heureusement, SSH est là 😊.

En effet, nous allons créer un tunnel SSH qui va relier votre ordinateur au serveur. En passant par ce tunnel, nous pourrons accéder à l'interface d'administration de syncthing trÚs facilement.

À partir de votre ordinateur, lancez la commande suivante :

ssh -N -L 9999:127.0.0.1:8384 utilisateurssh@chezmoi.tld

Tant que la session est ouverte, vous pouvez utiliser un navigateur sur votre ordinateur et ouvrir l'adresse http://localhost:9999 afin d'administrer syncthing.

Vous pouvez maintenant ajouter des machines avec lesquelles le serveur restera synchronisé, comme si vous étiez sur le serveur. Je vous laisse visiter le site officiel pour éventuellement télécharger la toute derniÚre version du client OpenBSD et en savoir plus si vous le souhaitez.

Que faire si les transferts ne démarrent pas ? #

Normalement, syncthing se débrouille tout seul pour trouver les machines à qui il doit envoyer des données.

Si toutefois, il y avait un problÚme, référez-vous à la documentation officielle qui propose quelques solutions.

https://docs.syncthing.net/users/

Modification dans le pare-feu #

Si l'UPnP n'est pas supporté par votre routeur, vous devriez ouvrir les ports suivant dans le pare-feu :

Il vous faudra aussi rediriger ces ports dans votre routeur.

Tunnel SSH entre les machines #

Vous pouvez relier deux appareils par un tunnel SSH puis indiquer à syncthing de n'écouter qu'en local. Ainsi, il ne se fatiguera plus à chercher les appareils partout, vous aurez déjà établi la connexion entre les 2.

Tout d'abord, creusez le tunnel SSH :

ssh \
    -L 127.0.0.1:22001:127.0.0.1:22000 \
    -R 127.0.0.1:22001:127.0.0.1:22000 \
    batman@chezmoi.tld

L'utilisation de clĂ©s peut s'avĂ©rer utile... 😉

Un tunnel est donc Ă©tabli entre les ports 22000 et 22001.

Ensuite, dans la configuration de syncthing, section "Connexions", désactivez toutes les options pour ne laisser que cette adresse d'écoute:

tcp://127.0.0.1:22000

Ensuite, modifiez la configuration des appareils associés pour leur attribuer l'adresse suivante :

tcp://127.0.0.1:22001

Ces deux manipulations sont Ă  faire sur chaque machine.

Utilisation de syncthing #

Partager des documents avec Syncthing est relativement simple. Pour commencer, sur l'ordinateur qui a les documents "sources", cliquez sur "Ajouter un partage" :

../../syncthingshare1.png

Choisissez ensuite un nom au partage afin de vous repérer. Laissez l'ID proposé puis précisez le chemin racine du partage. Ce chemin correspond à l'emplacement des données à sauvegarder, par exemple "/home/jean-eudes/Documents". Si vous aviez déjà ajouté un appareil avec lequel partager, vous pouvez le cocher en bas :

../../syncthingshare2.png

Sinon, ajoutez l'appareil avec lequel partager vos documents. Pour cela, dans la partie "Autres appareils", cliquez sur "Ajouter un appareil" :

../../syncthingshare3.png ../../syncthingshare4.png

Il faut juste coller l'ID de l'appareil que vous pouvez trouver à l'emplacement indiqué.

L'appareil ajouté recevra une notification à accepter, et le partage peut alors commencer.

En apprendre plus sur Syncthing #

Lisez la FAQ de syncthing, trùs complùte et pleine d'astuces 😊

https://docs.syncthing.net/users/

TOR : relay et service caché #

Tor est un logiciel libre permettant de renforcer la vie privée de ses utilisateurs et ainsi passer outre les surveillances subies lors de l'utilisation d'Internet.

https://www.torproject.org/

Lorsqu'on l'utilise, les communications sont rĂ©parties Ă  travers une maille de serveurs, afin d'obtenir un onion router. En gros, ce que vous demandez sur le web circule entre une sĂ©rie de serveurs (les couches de l'oignon), ce qui rend trĂšs difficile de savoir d'oĂč viennent les paquets, et donc de vous localiser.

Configurer un relais tor #

Il vous est possible de participer Ă  ce rĂ©seau en Ă©tant un serveur relais. Qui plus est, cela rendra d'autant plus difficile de dĂ©terminer vos propres activitĂ©s, puisque vos centres d'intĂ©rĂȘt seront noyĂ©s parmi le trafic sortant de votre connexion.

Tor peut avoir besoin d'ouvrir de nombreuses connexions. RĂ©duire les limitations peut alors ĂȘtre une bonne idĂ©e. Ajoutez dans le fichier /etc/sysctl.conf

kern.maxfiles=20000

Installez et activez Tor ainsi :

# pkg_add tor
# rcctl enable tor

Assurez-vous d'ouvrir dans votre pare-feu, et de rediriger dans votre routeur le port 9001.

Ensuite, Ă©ditez le fichier /etc/tor/torrc, afin d'obtenir ces quelques lignes :

SOCKSPort 0
ORPort 9001
Nickname Surnom
RelayBandwidthRate 75 KB  
RelayBandwidthBurst 100 KB 
ContactInfo votrenom <adresse AT email dot fr>
ExitPolicy reject *:* # no exits allowed

Modifiez les valeurs pour RelayBandwidthRate et RelayBandwidthBurst selon votre accĂšs Ă  Internet. Il s'agit de la bande passante que vous laissez disponible pour Tor. C'est une bonne idĂ©e de prĂ©ciser votre adresse mail aussi pour ĂȘtre averti en cas de problĂšme ou de mise Ă  jour importante.

Enfin, démarrez Tor avec # rcctl start tor et attendez de voir apparaßtre dans le fichier /var/log/messages :

May 12 12:20:41 chezmoi Tor[12059]: Bootstrapped 80%: Connecting to the Tor network
May 12 12:20:41 chezmoi Tor[12059]: Bootstrapped 85%: Finishing handshake with first hop
May 12 12:20:42 chezmoi Tor[12059]: Bootstrapped 90%: Establishing a Tor circuit
May 12 12:20:44 chezmoi Tor[12059]: Tor has successfully opened a circuit. Looks like client functionality is working.
May 12 12:20:44 chezmoi Tor[12059]: Bootstrapped 100%: Done
May 12 12:20:44 chezmoi Tor[12059]: Now checking whether ORPort 109.190.xxx.xxx:9001 is reachable... (this may
take up to 20 minutes -- look for log messages indicating success)
May 12 12:21:10 chezmoi Tor[12059]: Self-testing indicates your ORPort is reachab

Configurer un service caché tor #

Vous pouvez proposer votre site web (ou n'importe quel autre service) au travers du réseau Tor. Ceux qui voudront y accéder utiliseront une adresse se terminant par ".onion", comme "5rud2tr7sm3oskw5.onion".

Cela prĂ©sente un avantage considĂ©rable : **cette URL restera inchangĂ©e**, mĂȘme si votre IP est modifiĂ©e ou dynamique 😎.

⚠ Avant d'aller plus loin, notez qu'il est trĂšs fortement dĂ©conseillĂ© d'hĂ©berger un relais et un service cachĂ© en mĂȘme temps.

Ceci étant dit, vous pouvez activer votre site caché en éditant le fichier /etc/tor/torrc. Décommentez les lignes correspondantes ou ajoutez-les :

SOCKSPort 0
HiddenServiceDir /var/tor/hidden/
HiddenServicePort 80 localhost:80

Relancez Tor pour activer ce service caché : # rcctl restart tor. Deux nouveaux fichiers vont apparaßtre dans le dossier /var/tor/hidden/ : hostname et private_key. L'adresse de votre service en ".onion" se trouve dans le fichier hostname. Notez-la :

# cat /var/tor/hidden/hostname
5rud2tr7sm3oskw5.onion

Cependant, ne communiquez jamais le contenu de private_key.

Il ne nous reste plus qu'Ă  configurer httpd pour lui dire de recevoir les connexions vers l'adresse en ".onion" et de les servir. Le fichier /etc/httpd.conf pourra alors contenir ceci :

server "5rud2tr7sm3oskw5.onion" {
        listen on localhost port 80
        # emplacement du site
        root "/htdocs/chezmoi.tld"     
        directory index index.html

        [...]
}

Vous pouvez tester votre site (aprÚs un # rcctl reload httpd bien sûr) avec le navigateur torbrowser.

torbrowser

https://www.torproject.org/download/

Mais, ce n'est pas chiffré dans une adresse https! Est-ce vraiment sécurisé?

Bonne remarque. Le chiffrement TLS n'est pas nécessaire ici, puisque le tunnel ouvert par Tor pour accéder au site est entiÚrement chiffré. De plus, le navigateur devrait valider le certificat, or, ce dernier n'est pas enregistré pour un domaine en ".onion". Notez que si vous pouvez obtenir un certificat pour cette adresse, c'est alors possible de configurer un accÚs en https.

Monitoring #

Voici quelques possibilités pour surveiller la charge de votre serveur.

systat #

Systat est présent par défaut dans OpenBSD. Vous pouvez obtenir des informations sur le systÚme en temps réel en saisissant la commande systat vm. Vous aurez alors des informations sur l'utilisation de la mémoire, des processeurs, des disques...

Pour avoir des informations sur le débit montant et descendant, tapez systat ifstat. Vous observerez en temps réel la quantité de données entrantes (IBYTES) et sortantes (OBYTES).

Pour des informations concernant la température du matériel (si vous craignez la surchauffe !), entrez systat sensors.

cpu0.temp0          51.00 degC
acpitz0.temp0       26.80 degC      zone temperature

À chaque fois, appuyez sur la touche q pour quitter.

vmstat #

Lui aussi présent par défaut, vmstat donne un aperçu rapide sur la charge du systÚme :

$ vmstat
 procs    memory       page                    disks    traps          cpu
 r   s   avm     fre  flt  re  pi  po  fr  sr sd0 sd1  int   sys   cs us sy id
 1 274 1500M   1253M  657   0   0   0   0   0   1   4  190 15482 1826  2  1 97

symon #

Symon va vous permettre d'obtenir des statistiques sur les ressources utilisées par votre serveur et de les consulter sur une page web.

Commençons par installer le nécessaire :

# pkg_add symon symux syweb

On modifie ensuite la configuration de symon qui va surveiller le systÚme. Pour cela, on modifie le fichier /etc/symon.conf et on garde les informations qui nous intéressent :

monitor { cpu(0),  mem,
          if(lo0),
          if(re0),
          pf,
          mbuf,
          sensor(cpu0.temp0),
          proc(httpd),
          io(wd0),
          io(wd1),
          df(sd1b)
} stream to 127.0.0.1 2100

De la mĂȘme façon, on configure symux qui va analyser les donnĂ©es recueillies par symon. On Ă©dite le fichier /etc/symux.conf :

mux 127.0.0.1 2100

source 127.0.0.1 {
  accept { cpu(0),  mem,
      if(lo0),
      if(re0),
      pf,
      mbuf,
      sensor(cpu0.temp0),
      proc(httpd),
      io(wd0),
      io(wd1),
      df(sd1b)
  }

  datadir "/var/www/symon/rrds/localhost"
}

On ne fait que reproduire les mĂȘmes Ă©lĂ©ments que dans /etc/symon.conf. Attention Ă  bien indiquer le chemin vers le dossier contenant les donnĂ©es datadir. On va d'ailleurs le crĂ©er dĂšs maintenant :

# mkdir -p -m 0755 /var/www/symon/rrds/localhost

On crée maintenant les fichiers rrd :

# /usr/local/share/examples/symon/c_smrrds.sh all

Puisque le serveur web est dans un chroot, il faut lancer la commande suivante pour installer l'outil d'analyse des données et ses dépendances (rddtool) :

# /usr/local/share/examples/rrdtool/rrdtool-chroot enable

Une fois ceci fait, il faut prĂ©ciser dans la configuration de syweb oĂč trouver l'outil rrdtool. Dans le fichier /var/www/htdocs/syweb/setup.inc, modifiez si nĂ©cessaire la ligne contenant $symon['rrdtool_path'] ainsi :

$symon['rrdtool_path']='/usr/local/bin/rrdtool';

Reste une derniÚre modification à apporter. Puisque le serveur web est dans un chroot, il faut lui donner accÚs au shell /bin/sh afin que PHP puisse lancer rrdtool qui génÚre les graphiques :

# mkdir -p /var/www/bin
# cp /bin/sh /var/www/bin

On recharge tous les nouveaux démons aprÚs les avoir activés :

# rcctl enable symon
# rcctl enable symux
# rcctl start symon
# rcctl start symux

On ajoute la configuration convenable pour le serveur http, dans le fichier /etc/httpd.conf (c'est du PHP) :

server "statistiques.chezmoi.tld" {
        listen on * port 80  
        root "/htdocs/syweb"
        directory index index.php

        location "*.php" {
                fastcgi socket "/run/php-fpm.sock"
        }
}

Reste à recharger ce dernier avec # rcctl reload httpd puis à ouvrir le site définit pour voir les beaux graphiques.

Autres #

https://oss.oetiker.ch/rrdtool/

https://oss.oetiker.ch/smokeping/

https://grafana.com/

https://www.mmonit.com/monit/


Table des matiĂšres

Donate