Nous allons voir comment mettre en place plusieurs services utiles avec Archlinux ARM sur un Raspberry PI.
Il faut bien sûr qu’Archlinux soit installé sur votre Raspberry, cf ce tutoriel.
Les points abordés dans ce tutoriel seront :
-
– Configurer et sécuriser SSH
-
– Installation du service Web NginX et PhP
-
– Installation d’une base de données MySQL
-
– Mise en place d’un partage réseau avec SAMBA
-
– Installation d’une SeedBox avec Transmission-Daemon
-
– Installation d’un serveur de musique : Music Player Daemon
-
– Quelques petites astuces pour améliorer le tout.
*
I – Configurer et sécuriser SSH
Par défaut, sur Archlinux ARM, SSH est déjà configurer sur le port 22.
Vous pouvez vous y connecter avec la commande :
ssh root@<ip-du-raspberry>
Le fichier de configuration de SSH se trouve dans /etc/ssh/sshd_config,
Nous allons rajouter quelques options pour sécuriser tout ça :
Port 22
-> Changeons le, car il est bien trop connuPermitRootLogin no
-> (après avoir ajouter un user)Protocol 2
-> La version 1.0 date de 1995 !
Pour plus de sécurité, il est conseillé d’utiliser un système de clé privée et de désactiver l’authentification par mot de passe. Voici comment faire :
Générez la clé depuis l’ordinateur client :
ssh-keygen -t dsa -f ~/.ssh/id_server
On envoie la clé public vers le serveur :
scp -P <port> ~/.ssh/id_server.pub <user>@<ip-du-rasp>:~/.ssh/authorized_keys
On désactive les autres types d’authentifications dans /etc/ssh/sshd_config :
RSAAuthentication no
UsePAM no
KerberosAuthentication no
GSSAPIAuthentication no
PasswordAuthentication no
Attention avec la dernière option, vous ne pourrez plus vous connectez par SSH si votre configuration par clé n’est pas bonne.
On peut maintenant redémarrer le service SSH :
sudo systemctl restart sshd
SSH est maintenant prêt à être utilisé grâce à la commande :
ssh -p <port> <user>@<ip-du-raspberry>
*
2 – Installation du service Web NginX+PHP
NginX (Engine »X »), est un logiciel libre de serveur Web, plus léger que le « leader » Apache2. Il permet de conserver plus de RAM sur son Raspberry,
Pour l’installer :
sudo pacman -S nginx sudo systemctl start nginx
On va éditer le fichier de configuration placé dans /etc/nginx/nginx.conf :
http { include mime.types; default_type application/octet-stream; sendfile on; #tcp_nopush on; #keepalive_timeout 0; keepalive_timeout 65; gzip on; server { listen 80; server_name localhost; root /srv/http; charset koi8-r; location / { index index.php index.html index.htm; autoindex on; autoindex_exact_size off; autoindex_localtime on; } location /phpmyadmin { rewrite ^/* /phpMyAdmin last; } error_page 404 /404.html; # redirect server error pages to the static page /50x.html error_page 500 502 503 504 /50x.html; location = /50x.html { root /srv/http; } location ~ \.php$ { # fastcgi_pass 127.0.0.1:9000; fastcgi_pass unix:/run/php-fpm/php-fpm.sock; fastcgi_index index.php; include fastcgi.conf; } location ~ /\.ht { deny all; } } }
La racine de notre serveur Web est maintenant placée dans /srv/http !
Cette configuration est assez simple, elle permet de fixer la racine du dossier voulu, et permet d’ouvrir les fichiers *.php et *.html dans ce dossier (c’est le but ! ).
Elle interdit également l’accès aux fichier commençant par .ht ( une petite sécurité pour les .htpasswd)
Nous allons maintenant installé PHP :
sudo pacman –S php php-fpm sudo systemctl start php-fpm sudo systemctl restart nginx sudo systemctl enable nginx sudo systemctl enable php-fpm
Rentrez l’IP de votre Raspberry dans un navigateur pour tester la config de NginX :
*
3 – Installation d’une base de données MySQL
Nous allons installer MariaDB (fork de MySQL) de base sous Archlinux :
sudo pacman -S mysql sudo systemctl start mysqld sudo mysql_secure_installation
Suivez les instructions et renseignez le mot de passe root souhaité pour la BDD.
Nous allons maintenant installer PHPMyAdmin pour administrer graphiquement la base de données :
sudo pacman -S phpmyadmin php-mcrypt sudo ln -s /usr/share/webapps/phpMyAdmin /srv/http
Il faut maintenant éditer le fichier /etc/php/php.ini :
open_basedir= /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/ extension=mysqli.so extension=mysql.so extension=mcrypt.so mysqli.allow_local_infile = On
On peut maintenant redémarrer PHP :
sudo systemctl restart php-fpm
On accède à PHPMyAdmin depuis l’adresse http://<ip-du-raspberry>/phpMyAdmin.
(attention aux Majuscules)
*
4 – Mise en place d’un partage réseau avec SAMBA
Si vous souhaitez créer un ou plusieurs dossiers partagés depuis votre Raspberry, il est vivement conseillé d’installer Samba :
sudo pacman -S samba
Nous partons sur le principe que vous avez branchez un disque dur externe (auto-alimenté, sinon vous aurez des problèmes d’alimentations) à votre Raspberry et que l’on souhaite partager ce disque avec les ordinateurs de votre réseau (Apple / Windows / Android / Linux…).
On va tout d’abord créer le dossier où l’on « montera » notre disque (on l’appelle « USB ») :
sudo mkdir /srv/USB sudo chmod 775 /srv/USB
On peut ensuite le monter avec la commande :
(Pour connaitre <votre-disque>, vous pouvez le trouver avec la commande fdisk -l)
sudo mount -t ntfs-3g -o uid=pi,gid=pi /dev/<votre-disque> /srv/USB
On va modifier le fichier fstab, pour monter le disque automatiquement au démarrage du Raspberry. (d’abord on créer une sauvegarde du fichier.)
sudo cp /etc/fstab /etc/fstab.back
On va devoir connaitre l’UUID du disque, pour ce faire, on utilise la commande :
lsblk -f
On ouvre ensuite /etc/fstab et on rajoute la ligne :
UUID=<votre-UUID> /srv/USB ntfs-3g rw,defaults 0 0
(Pour de meilleurs performances il est recommandé d’utiliser un disque formaté en Ext4 ou Ext3, car en NTFS, on a une vitesse quelque peut réduite.)
Une fois notre disque prêt, on va créer un utilisateur Samba :
sudo smbpasswd -a <user-samba>
On peut maintenant créer un nouveau fichier de configuration pour Samba :
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf.back
On l’édite et rajoute ses informations (à adapter selon votre utilisation) :
Pour plus d’options, cf Archlinux-Wiki
[Global] security = share workgroup = HOME encrypt password = true [USB] path = /srv/USB guest ok = yes browsable = yes writeable = yes read only = no create mask = 0644 directory mask = 2755 valid users = <user-samba>
On peut maintenant lancer Samba :
sudo systemctl start smbd sudo systemctl enable smbd
Vous pouvez maintenant accèder à votre partage depuis un PC Windows avec la commande \\<ip-du-rasp> (à saisir dans « exécuter » CTRL+R) .
*
5 – Installation d’une SeedBox avec Transmission-Daemon
Transmission-daemon est un service pour gérer les téléchargements de torrents depuis une interface Web « auto-géré » c’est à dire qui nécessite aucun serveur Web.
Le Raspberry Pi fait une parfaite SeedBox (serveur informatique privé qui est dédié à la réception et à l’émission de fichiers informatiques.) grâce à ça faible consommation et sa taille réduite.
Voici comment installer transmission-daemon sous Archlinux :
(Pour une config plus poussé, cf Archlinux Wiki)
sudo pacman -S transmission-cli
Le fichier de configuration de trouve à ~/.config/transmission-daemon/setting.json.
On va l’éditer et modifié quelques options :
"rpc-whitelist-enabled": false, "rpc-authentication-required": false, "download-dir": "/srv/USB/Download",
On va maintenant lancer le service en user, ce qui permet à chaque utilisateur de gérer ses torrents indépendamment (il peut bien sûr être lancer en Root.)
transmission-daemon
N’oubliez pas de donner les droits à transmission sur le dossier de téléchargement :
sudo chown transmission:transmission /srv/USB/Download
Vous pouvez maintenant allez à l’adresse http://IP-Du-RASP:9091/ pour ajouter et gérer vos torrents :
*
6 – Installation de Music Player Daemon
Music Player Daemon, ou MPD, est un lecteur audio libre qui permet l’accès distant depuis un autre ordinateur.
En gros, on reliera notre Raspberry à un système de son (Home-cinéma par exemple) et on pourra contrôler la musique depuis n’importe qu’elle ordinateur, smartphone ou tablette.
On va d’abord installer alsa-utils qui permet de gérez le son sous Linux.
sudo pacman -S alsa-utils
On va ensuite créer le fichier /etc/modules-load.d/snd_bcm2835.conf et écrire :
# Load Sound snd_bcm2835
On le lance ensuite avec la commande : (cela se lancera automatiquement au démarrage)
modprobe snd_bcm2835
On peut maintenant installer Music Player Daemon :
sudo pacman -S mpd usermod -G audio -a mpd
(Dans la deuxième commande, on attribue les droits « audio » à l’utilisateur automatiquement créer « mpd »).
On part sur le principe que votre dossier musical se trouve dans le disque partagé /srv/USB/Music, on va donc maintenant éditer le fichier /etc/mpd.conf :
user "mpd" music_directory "/srv/USB/Music" pid_file "/run/mpd/mpd.pid" follow_inside_symlinks "yes" follow_outside_symlinks "yes" db_file "/var/lib/mpd/mpd.db" state_file "/var/lib/mpd/mpdstate" playlist_directory "/srv/USB/Music" port "6600" password "mpd@read,add,control,admin" audio_output { type "alsa" name "PiALSA" device "hw:0,0" }
Pour plus d’options, cf Archlinux Wiki.
On peut maintenant lancer le service et l’activer au démarrage :
sudo systemctl enable mpd sudo systemctl start mpd
On va voir maintenant pouvoir configurer nos clients avec ses options :
-Port 6600
-Login « mpd »
-Password « mpd »
Plus qu’à brancher un câble Jack au Raspberry pour profiter de notre serveur de son.
Voici la liste « officiel » des clients pour MPD : http://mpd.wikia.com/wiki/Clients
Sous Linux, un des meilleurs clients MPD, selon moi, est Sonata.
*
7 -Quelques petites astuces
Se créer une interface web :
Il peut être intéressant d’avoir un interface web sur son Raspberry pour gérer ses services, avoir des raccourcis pour ses applications PHP …
Pas besoin de développer quelque chose de très compliqué, ce site, par exemple, propose des templates très sympa en HTML5. Après quelques modifications, on peut avoir un interface de ce style :
Ce site dois donc être placé à la racine de notre serveur web : /srv/http
Quelques « Applications » intéressantes :
– Raspcontrol qui permet d’avoir une vision « d’ensemble » sur les performances de votre Raspberry (CPU, RAM, Disques, Chaleur du processeur, Processus …)
– Codiad qui permet d’avoir un IDE (environnement de développement) directement dans votre navigateur, très pratique pour modifier rapidement votre page web sans se connecter en SSH.
– OwnCloud est une alternative à Dropbox qui s’héberge chez sois. Il existe des clients Windows, Mac et Linux qui permettent d’accéder à ses fichiers où que l’on sois (à condition d’avoir notre Raspberry « ouvert » vers le web.) L’avantage c’est qu’on l’héberge nous même, donc on garde le contrôle sur ses fichiers et sur ceux qui peuvent les utiliser.
Tutoriel d’installation sous Archlinux.
Liens utiles à ce tutoriel :
http://korben.info/tuto-ssh-securiser.html
http://www.tecmint.com/install-nginx-php-mysql…
http://www.jeremymorgan.com/…/how-to-raspberry-pi-file-server/
http://hempeldesigngroup.com/…/raspberry-pi-setup-as-mpd-sever/
Note de fin :
Ce tutoriel n’explique pas comment sécuriser entièrement son serveur, donc en mettant votre serveur sur le Web, vous serez relativement exposés aux attaques.
Personnellement, je suis le seul à utiliser mon serveur, donc je passe par un tunnel SSH (SOCKS), je peux donc utiliser les ressources de mon raspberry où que je sois dans le monde, mais personne d’autre ne peut y accéder (clé privée SSH).
Si vous souhaitez le sécuriser d’avantage, je vous conseille de regarder du coté de Fail2BAN.
J’espère que ce tutoriel vous sera utile !