Serveur Gopher sur Raspberry Pi

 

Ce tuto que j'avais fait en 2014, avait été élaboré dans le cadre d'un projet d'implantation de 3 services sur un Raspberry Pi. Les trois services que j'avais implanté ne requière que très peut de puissance. Donc, si vous avez un vieux Raspberry Pi qui date d'avant le Raspberry PI 3 et qui est dans votre boîte four tout à ne rien faire, c'est en plein la bonne raison de le sortir de l'ombre et de le mettre au travail!

Je viens de terminer mon serveur Raspberry pi, pour profiter de trois services que j’avais besoin. J’ai pensé qu’il serait intéressant de partager mon expérience avec vous. Si vous avez l’intention de faire un peu la même chose, je vous suggère ces 4 articles qui paraitront l’un à la suite de l’autre. Voici mon plan d’attaque.


Comme je viens de transférer ce tuto, il y a des liens et certains détails qui ne sont pas à jour. Je travail présentement à faire les mises à jours. Mais le tuto est quand même utilisable.
Merci

 

  • Installer Rasbian sur une carte SD

  • S’inscrire à un nom de domaine dynamique gratuit!

  • Configurer votre Raspberry Pi au premier démarrage

  • Installation d’un VNC

  • Installation de DVAPTool

  • Installation de D-Rats et création d’un Ratflector

  • Installation d’un serveur Gopher

Comme la communauté du Raspberry est assez imposante, je ne ferai pas de tutoriel très explicite à propos de l’installation du logiciel sur la carte SD et l’installation du VNC, car il y existe des pages déjà bien faits à ce sujet. Cependant, je vous enverrai sur des liens que je crois essentiels à la bonne réalisation de votre projet.*

Le projet peut paraitre grandiose pour certain, mais il ne sera pas impossible de le réaliser durant une soirée si vous êtes habitués et une journée pour les gens moins expérimentés. Je tiens aussi à préciser au public en général que les logiciels DVAPTool et D-Rats s’adressent aux radioamateurs seulement et vous devez être muni d’une licence appropriée pour les utiliser. Donc, aucun problème pour le montage du Raspberry Pi, nom de domaine dynamique, VNC et le serveur Gopher.

Êtes-vous prêt? Go!

Installation du logiciel d’exploitation

Vous avez plusieurs choix pour l’installation du logiciel d’exploitation sur un Raspberry Pi. Mon choix de Rasbian (Debian wheezy) assurera un bon fonctionnement des éléments que nous installerons plus tard. Commencez par télécharger l’image de Raspbian. Si vous êtes sous Linux, gâtez-vous avec cette commande.

wget http://downloads.raspberrypi.org/raspbian_latest

Après avoir téléchargé le fichier, décompressez-le.

Pour éviter tout problème, ayez une carte SD d’au moins 8 Gb class 10 et formater la, même si elle est neuve. Je vous parle en connaissance de cause.  En FAT32, cela fera l’affaire.

Pour installer le logiciel sur la carte, suivez les indications sur cette page. https://www.raspberrypi.org/documentation/installation/installing-images/README.md. Si ça vous semble compliqué, suivez les indications attentivement et tout devrait bien aller, peu importe votre système d’exploitation.

Revenez à ce point, lorsque ça sera complété. Essayez de résister à la tentation de faire démarrer votre Raspberry Pi. Nous avons une étape supplémentaire à faire avant le démarrage.

 

Nom de domaine dynamique gratuit

Comme nous avons l’intention de faire un serveur Gopher et de faire un Ratflector, il serait bien d’avoir un nom de domaine et comme la plupart des gens n’ont pas d’adresse IP fixe, il faut se trouver une solution et j’en ai une toute simple en plus d’être gratuite! Donc si vous avez un budget restreint, c’est merveilleux.

Allez sur http://freedns.afraid.org pour vous ouvrir un compte et cliquer sur « subdomains » et faire « add » pour créer votre nom de domaine.

Choisir « dynamic DNS » choisir votre nom de domaine et cliquer sur « quick cron example » et vous devriez voir une ligne qui ressemble à :

4,14,24,34,44,54 * * * * root sleep 29 ; /usr/bin/timeout 200 wget -O - https://free\ dns.afraid.org/dynamic/update.php?ABCKDNRCLFHENSLKNFEGSBFLFF== >> /dev/null 2>&1 &

Sauvegardez votre ligne dans un fichier texte sur votre ordinateur et conservez-la pour plus tard. Nous en aurons de besoins pour synchroniser notre nom de domaine avec notre adresse IP.

Premier démarrage

Insérer votre carte SD dans votre Raspberry et branchez-y un clavier, souris, écran et l’adaptateur d’alimentation.

Lors du premier démarrage, votre Raspberry démarrera un programme de configuration. Voici les changements qu’il faut faire. (notez que je n’ai pas mis mon Raspberry en français, car j’ai déjà éprouvé certains problèmes)

1- Expand Filesystem
2- Change User password – Changer le mot de passe
3- Enable Boot to desktop – Faire démarrer le desktop
4- Internationalisation – choisir votre fuseau horaire
Dans le Menu Advanced
A2- Hostname – Inscrire votre nouveau nom de domaine
A4- SSH – Nous aurons besoin de SSH, démarrer le service.

Vous pouvez redémarrer votre Raspberry Pi avec votre nouvelle configuration.

Réservation d’une adresse IP et Ports

Maintenant que votre mini-serveur est configuré, avant de vous connecter en SSH ou VNC, il serait très pratique de lui réserver une adresse IP sur votre réseau local et d’ouvrir les ports appropriés pour l’extérieur de votre réseau.

Ouvrir le terminal de votre Raspberry et entrer la commande ifconfig

@gopher ~ $ ifconfig
eth0 Link encap:Ethernet HWaddr 00:87:fb:00:d5:00 

Dans la première ligne, le HWaddr est le MAC adresse de votre Raspberry. Prenez-le en note.

Maintenant, vous devez aller dans les paramètres avancés de votre routeur et de réserver une adresse IP, exemple : 192.168.0.41. Une façon de toujours réserver cette adresse pour votre Raspberry, c’est de faire une réservation par son MAC adresse, celui qu’on a pris en note avec le ifconfig. Cela dépend de votre routeur et je ne peux pas vous aider bien plus que ça, sur ce point. Vérifier aussi l’adresse de votre routeur. S’il a une adresse comme 10.0.1.1 alors, on donnera une adresse du genre 10.0.1.41. Seuls, les chiffres après le dernier point diffèrent de l’adresse du routeur.

Pour les ports, le port 70 est utilisé pour Gopher et le port 9000 pour D-Rats. Donc, encore ici, vous devrez dire à votre routeur d’ouvrir ces ports en UDP et TCP pour l’adresse IP que vous avez réservée pour votre serveur.

Si votre routeur ne fait pas un redémarrage après ces changements, forcez-le à redémarrer pour être sûr que les changements soient bien appliqués.

Maintenant que vous avez réservé une adresse IP pour votre serveur, vous pouvez maintenant y accéder en SSH à l’aide d’un terminal avec la commande ssh pi@adressseipreservé de même avec VNC. À ce stade, nous n’avons pas encore synchronisé le nom de domaine.

Installation du VNC

Si vous n’êtes pas familier avec SSH, laisser votre moniteur et clavier branché. Si oui, débranchez votre écran, claviers et souris.

L’installation d’un VNC est primordiale si vous prévoyez utiliser votre Raspberry Pi sans périphériques. Si votre intention est d’y laisser les périphériques branchés, vous pouvez sauter cette étape. L’installation du VNC se fait très facilement avec SSH. Si vous avez un PC sous Windows, je vous recommande Putty. Suivre ce lien pour l’installation du VNC. Tout y est

https://www.raspberrypi.org/documentation/remote-access/vnc/

Synchronisation avec le nom de domaine dynamique

Dernière étape, synchronisez votre nom de domaine avec votre serveur.  Connectez-vous via ssh sur votre Raspberry ou ouvrez une fenêtre terminal sur votre Raspberry.  Vous vous souvenez de la ligne de commande que je vous ai fait mettre de coter? Quick cron exemple? C’est ici que nous en aurons besoin. Cron va pouvoir vérifier notre adresse iP publique et la changer s’il y a lieu sur le site http://freedns.afraid.org pour s’assurer que votre serveur sera toujours rejoignable. Pour se faire, nous devons éditer le fichier crontab en mode root.

cd /etc
sudo crontab -e

 

Insérer la ligne que nous avons copiée de quick cron exemple, sous la ligne qui ressemble à

# m h dom mon dow user command

Maintenant que notre fichier crontab est modifié, il faut remettre le service en marche. Nous pouvons redémarrer le service.

service cron restart

À partir de ce moment, votre serveur pourra être contacté par le nom de domaine que vous aviez choisi. Si vous désirez vous connecter en SSH avec votre nom de domaine, vous devrez ouvrir le port approprié dans votre routeur.

Voilà, c’est déjà tout pour la première partie. Pour la suite, nous aborderons l’installation du DVAP, D-Rats et du serveur Gopher.

Meilleurs 73

VA2OS

 

*Vous êtes les seuls responsables de ce que vous faites avec vos équipements. Ces articles sont à titre pédagogique et je ne peux être tenu responsable d’aucun bris ou tout autre inconvénient.


Installation du serveur Gopher

Il y a plusieurs types de serveurs Gopher que vous pouvez trouver sur internet. J’ai choisi Geomyidae car il utilise très peu de ressource. Donc, ça colle bien avec la réalité du Raspberry Pi, surtout que j’ai un Ratflector et DVAPTool qui roulent aussi sur le même ordinateur.

Ouvrir une session SSH sur votre Raspberry.

Comme toujours, une petite mise à jour vaut vraiment le coup

sudo apt-get update
sudo apt-get upgrade

Ensuite, nous devons télécharger le fichier et installer Geomyidae:

mkdir ~/build
cd ~/build
wget http://r-36.net/src/geomyidae/geomyidae-current.tgz
cd geomyidae-*
 make
 make install

Lorsque terminé, vous devez créer un répertoire ou les pages seront stockées. Votre page de départ devra être nommée de cette façon: index.gph.

mkdir -p /var/Gopher

Pour la suite, j’ai utilisé un script réalisé par le créateur, Bob Mottram, de la freedombone.  Créé un fichier avec votre éditeur préféré comme Vim

sudo vim /etc/init.d/gopher

Voici le code à coller dans votre fichier

#! /bin/sh
### BEGIN INIT INFO
# Provides: gopher
# Required-Start: $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Gopher daemon
# Description: Gopher daemon
### END INIT INFO

# Do NOT "set -e"

# PATH should only include /usr/* if it runs after the mountnfs.sh script
PATH=/sbin:/usr/sbin:/bin:/usr/bin
DESC="Gopher daemon"
NAME=geomyidae
DAEMON=/usr/bin/$NAME
DAEMON_ARGS="-l /var/log/geomyidae.log -b /var/Gopher -p 70"
PIDFILE=/var/run/$NAME.pid
SCRIPTNAME=/etc/init.d/$NAME

# Exit if the package is not installed
[ -x "$DAEMON" ] || exit 0

# Read configuration variable file if it is present
[ -r /etc/default/$NAME ] && . /etc/default/$NAME

# Load the VERBOSE setting and other rcS variables
. /lib/init/vars.sh

# Define LSB log_* functions.
# Depend on lsb-base (>= 3.2-14) to ensure that this file is present
# and status_of_proc is working.
. /lib/lsb/init-functions

#
# Function that starts the daemon/service
#
do_start()
{
 # Return
 # 0 if daemon has been started
 # 1 if daemon was already running
 # 2 if daemon could not be started
 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON --test > /dev/null \
 || return 1
 start-stop-daemon --start --quiet --pidfile $PIDFILE --exec $DAEMON -- \
 $DAEMON_ARGS \
 || return 2
 # Add code here, if necessary, that waits for the process to be ready
 # to handle requests from services started subsequently which depend
 # on this one. As a last resort, sleep for some time.
}

#
# Function that stops the daemon/service
#
do_stop()
{
 # Return
 # 0 if daemon has been stopped
 # 1 if daemon was already stopped
 # 2 if daemon could not be stopped
 # other if a failure occurred
 start-stop-daemon --stop --quiet --retry=TERM/30/KILL/5 --pidfile $PIDFILE --name $NAME
 RETVAL="$?"
 [ "$RETVAL" = 2 ] && return 2
 # Wait for children to finish too if this is a daemon that forks
 # and if the daemon is only ever run from this initscript.
 # If the above conditions are not satisfied then add some other code
 # that waits for the process to drop all resources that could be
 # needed by services started subsequently. A last resort is to
 # sleep for some time.
 start-stop-daemon --stop --quiet --oknodo --retry=0/30/KILL/5 --exec $DAEMON
 [ "$?" = 2 ] && return 2
 # Many daemons don't delete their pidfiles when they exit.
 rm -f $PIDFILE
 return "$RETVAL"
}

#
# Function that sends a SIGHUP to the daemon/service
#
do_reload() {
 #
 # If the daemon can reload its configuration without
 # restarting (for example, when it is sent a SIGHUP),
 # then implement that here.
 #
 start-stop-daemon --stop --signal 1 --quiet --pidfile $PIDFILE --name $NAME
 return 0
}

case "$1" in
 start)
 [ "$VERBOSE" != no ] && log_daemon_msg "Starting $DESC" "$NAME"
 do_start
 case "$?" in
 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
 esac
 ;;
 stop)
 [ "$VERBOSE" != no ] && log_daemon_msg "Stopping $DESC" "$NAME"
 do_stop
 case "$?" in
 0|1) [ "$VERBOSE" != no ] && log_end_msg 0 ;;
 2) [ "$VERBOSE" != no ] && log_end_msg 1 ;;
 esac
 ;;
 status)
 status_of_proc "$DAEMON" "$NAME" && exit 0 || exit $?
 ;;
 #reload|force-reload)
 #
 # If do_reload() is not implemented then leave this commented out
 # and leave 'force-reload' as an alias for 'restart'.
 #
 #log_daemon_msg "Reloading $DESC" "$NAME"
 #do_reload
 #log_end_msg $?
 #;;
 restart|force-reload)
 #
 # If the "reload" option is implemented then remove the
 # 'force-reload' alias
 #
 log_daemon_msg "Restarting $DESC" "$NAME"
 do_stop
 case "$?" in
 0|1)
 do_start
 case "$?" in
 0) log_end_msg 0 ;;
 1) log_end_msg 1 ;; # Old process is still running
 *) log_end_msg 1 ;; # Failed to start
 esac
 ;;
 *)
 # Failed to stop
 log_end_msg 1
 ;;
 esac
 ;;
 *)
 #echo "Usage: $SCRIPTNAME {start|stop|restart|reload|force-reload}" >&2
 echo "Usage: $SCRIPTNAME {start|stop|status|restart|force-reload}" >&2
 exit 3
 ;;
 esac

Sauvegarder le fichier et démarrer votre service Gopher

sudo chmod +x /etc/init.d/gopher
sudo update-rc.d gopher defaults
sudo service gopher start

 

Voilà! Maintenant, si vous tapez l’adresse de votre serveur Gopher dans votre navigateur Gopher, tout devrait bien aller.

Pour terminer, j’aimerais dire merci à Bob Mottram, car sans lui, je n’aurais pas passé au travers de cette installation. Voici le lien vers sa Freedombone.