Le Minitel est un terminal exploité commercialement jusqu'en 2012 pour accéder à des services via le réseau téléphonique de France Télécom. Le réseau supportant les services commerciaux du Minitel ayant été définitivement stoppé, ceux-ci ne sont plus disponibles. Cependant, il reste possible d'utiliser ces terminaux, en se connectant sur un service compatible.

Dans cet article, j'explique la manière dont j'ai installé et configuré mon serveur Minitel. Outre le défi technique, j'avais aussi comme objectif de préserver le fonctionnement d'origine du service. Cela induit donc quelques contraintes :

  • N'effectuer aucune modification matérielle du Minitel.
  • Utiliser la prise en T pour le connecter à un PBX.
  • Le service doit accepter la connexion de plusieurs Minitels en parallèle sur un même numéro.

D'autres ont déjà atteint ces objectifs, comme Jelora, Christian Quest ou encore x0r. De mon coté, afin de simplifier la mise en place du système et pour permettre d'installer le tout sur une machine comme un Raspberry Pi, j'ai décidé que la partie serveur de mon installation serait entièrement logicielle :

  • Un serveur Asterisk, pour recevoir l'appel du Minitel
  • Un modem logiciel sous forme de module Asterisk
  • Une application serveur que je développe

Note : Pour donner un aspect concret à ce projet, le service mis en place est prévu pour être utilisé lors des événements publics de l'association de retrogaming Retrotaku, dont je suis membre. La mise à disposition du service sur une ligne téléphonique accessible publiquement ne fait pas partie de mes projets.

Installation et configuration d'Asterisk

L'installation et la configuration de base du serveur Asterisk sont décrites dans l'article Installation d'un serveur téléphonique local avec Asterisk. Cet article couvre également la configuration d'une carte analogique et d'un boitier ATA, nécessaires pour connecter un Minitel sur Asterisk.

En plus des configurations basiques expliquées dans le précédent article, il est préférable de définir ces paramètres :

  • Utiliser le codec G711u (ulaw), qui effectue une compression sans perte.
  • Désactiver l'annulation de l'echo, pour éviter de perturber la communication entre le Minitel et le serveur.

Modem

Comme déjà précisé, afin de simplifier l'installation, j'ai décidé de ne pas utiliser de modem matériel pour le serveur. J'ai donc utilisé un module Softmodem pour Asterisk, permettant d'établir une connection entre Asterisk et une application quelconque via un simple socket TCP.

Comme ce module n'est pas distribué sous forme binaire, je l'ai compilé en suivant les instructions données par le développeur. J'aurais préféré pouvoir compiler uniquement ce module, mais je n'ai pas trouvé comment faire.

$ sudo apt install --no-install-recommends dpkg-dev wget ca-certificates g++ libncurses5-dev uuid-dev libjansson-dev libxml2-dev libsqlite3-dev libspandsp-dev
$ apt source asterisk
$ cd asterisk-*
$ wget https://raw.githubusercontent.com/proquar/asterisk-Softmodem/ba032c312d7a66171414285d27dbecf9908f5b3a/app_softmodem.c -O apps/app_softmodem.c
$ ./configure
$ make apps
$ sudo cp apps/app_softmodem.so /usr/lib/asterisk/modules/
$ # We need to restart Asterisk to load the new module
$ sudo asterisk -rx "core restart when convenient"

Note : L'utilisation de la commande apt source nécessite l'activation des dépôts source de Debian :

deb-src http://httpredir.debian.org/debian stretch main

Il est ensuite nécessaire de déclarer la connexion à l'application dans le fichier /etc/asterisk/extensions.conf. Par exemple, voilà la configuration présente sur mon serveur :

[default]
exten => _36XX,1,Softmodem(127.0.0.1,${EXTEN},ld(8)s(1))

Cette configuration utilise un numéro générique (signalé par le préfixe _), permettant de faire correspondre tous les numéros composés de quatre chiffres commençant par 36 au port TCP équivalent (paramètre ${EXTEN}). De cette manière, il n'est pas nécessaire de modifier la configuration d'Asterisk pour proposer un nouveau service, lancer une nouvelle application suffit.

Serveur applicatif

La connexion effectuée par le modem logiciel est une simple connexion TCP, ce qui permet d'écrire l'application dans n'importe quel langage.

La seule limitation du modem utilisé est qu'il ne calcule pas le bit de parité. J'ai d'abord pensé à le modifier pour ajouter cette fonctionnalité, mais je me suis perdu dans le code, et j'ai finalement décidé de gérer cette partie directement dans mon application.

Les sources de cette application seront distribuées sous licence AGPLv3 lorsque je ne considèrerai plus ce développement comme expérimental.


Installation d'un serveur téléphonique local avec Asterisk

ven. 18 mai 2018 by Marmotte

Asterisk est un IPBX logiciel, permettant la communication par différents protocoles, dont le SIP.

Cet article explique la mise en place d'un serveur de téléphonie simple, permettant de communiquer au sein du réseau local au moyen d'applications SIP et de téléphones analogiques.

Installation

Sur Debian, il suffit d'installer le paquet …

read more

Gestion des mots de passe avec pass

dim. 25 févr. 2018 by Marmotte

Plusieurs solutions existent pour la gestion des mots de passe, chacune présentant ses avantages et inconvénients.

Je présente ici pass, un script bash permettant de gérer des mots de passe chiffrés avec GPG dans un dépôt git. Je l'ai choisi pour plusieurs raisons :

  • Très simple d'utilisation.
  • Très léger (et sans …
read more

Utilisation basique de GPG

dim. 25 févr. 2018 by Marmotte

GNU Privacy Guard (GPG) est un logiciel permettant de chiffrer et/ou signer des documents (fichiers, emails, commits git...), fonctionnant principalement à partir d'un système de paires de clés publique et privée.

Cet article est simplement un résumé des commandes basiques nécessaires à l'utilisation de GPG. J'explique ici l'utilisation de …

read more

Sauvegarde et restauration avec Borg

jeu. 11 janv. 2018 by Marmotte

Borg est un logiciel de sauvegarde doté de fonctionnalités avancées comme la déduplication et le chiffrement.

Cet article explique la manière dont je l'utilise pour sauvegarder mes systèmes.

Pourquoi utiliser Borg ?

J'ai récemment revu l'organisation des sauvegardes de mes machines. En effet, j'utilisais jusque là un script très basique à …

read more

Limiter les attaques par force brute sur le service SSH

dim. 07 janv. 2018 by Marmotte

Le service SSH (Secure SHell) permet d'obtenir l'accès à un terminal sur une machine distante, ce qui le rend donc très pratique pour l'administration. De ce fait, il est disponible sur un grand nombre de serveurs. Malheureusement, cela le rend donc aussi très attirant pour les personnes cherchant à contrôler …

read more

Un serveur PXE pour les booter tous

sam. 06 janv. 2018 by Marmotte

Après avoir mis au point le menu de boot dynamique de ma clé USB, j'ai eu envie de faire la même chose sur mon serveur PXE. Comme j'ai déjà une configuration de grub qui le fait, j'ai donc remplacé pxelinux par grub sur le serveur PXE, puis j'ai repris la …

read more

Une clé USB pour les booter vraiment tous

sam. 30 sept. 2017 by Marmotte

Lorsqu'on bidouille des machines, il arrive que le système ne démarre plus. Que seul le boot loader soit cassé, ou que ce soit le système complet, il est donc important d'avoir à disposition un moyen de démarrer la machine, pour réparer les dégâts.

J'explique ici la manière dont j'ai configuré …

read more

LXC sur Debian Jessie

ven. 03 mars 2017 by Marmotte

LXC, pour Linux Containers, permet de lancer plusieurs environnements Linux sur une même machine, de manière isolée, comme le fait OpenVZ. Par rapport à des machines virtuelles, les performances sont donc bien meilleures, puisque les différents systèmes fonctionnent directement sur le noyau, sans couche de virtualisation intermédiaire. Cela implique aussi …

read more

Installer Debian Jessie avec debootstrap

ven. 03 mars 2017 by Marmotte

Sur la plupart de mes machines, j'utilise la version stable de Debian, soit Jessie actuellement. J'explique ici la manière dont j'installe un système avec Debootstrap.

Note : Cet article est une mise à jour de celui qui expliquait l'installation de Debian Wheezy.

Pourquoi ne pas utiliser l'installeur Debian ?

L'installeur ajoute …

read more