Installer un serveur Apache

apt-get install apache2 apache2-doc apache2-utils

Une fois l’installation terminé, le répertoire du serveur se trouve dans /var/www/

À partir de maintenant, si vous placez un fichier index.html à l’intérieur (il y en a un de base pour tester), il sera visible sur http://localhost ; http://127.0.0.1 ou à http://votre_adress_ip ou encore à http://votre_domaine (voir configuration du nom de domaine dans l’article suivant)

Si vous souhaitez rendre le contenu accessible depuis internet, il faut configurer votre routeur pour laisser passer un flux vers : votre_ip:80 soit par exemple 192.168.0.46:80
Et bien entendu connaître votre adresse ip internet afin de pouvoir vous y connecter à distance (voir astuce réseau mon adresse IP)

Utiliser les commandes suivantes pour activer, désactiver le serveur:
service apache start
service apache stop
service apache restart

Pour recharger le fichier de configuration alors qu’apache est déjà lancé, utiliser :
service apache reload

Pour activer et desactiver un module, utiliser :
a2enmod nomModule
a2dismod nomModule

nomModule est le nom d’un module présent dans /etc/apaches2/mods-available

Pour activer et desactiver un site WEB, utiliser :
a2ensite nomSite
a2dissite nomSite

nomSite est le nom d’un fichier de configuration du site présent dans /etc/apaches2/sites-available

Installer PHP et My-sql

apt-get install libapache2-mod-php5 php5 php-pear php5-xcache
apt-get install php5-mysql
apt-get install mysql-server mysql-client

++ si besoin : php5-curl php5-gd

Vous pouvez aussi ajouter phpmyadmin qui permet la gestion de base de donnée, etc., via une interface web.

apt-get install phpmyadmin

Puis éditer le fichier /etc/apache2/apache2.conf :
nano /etc/apache2/apache2.conf

Allez à la fin du document (vous pouvez utiliser CTRL+V pour aller plus vite) et ajouter ceci :

Include /etc/phpmyadmin/apache.conf

Enregistrer les modification et relancer le serveur :
service apache2 restart

Vous pouvez ensuite vous connecter à l’interface de gestion via un navigateur :
http://adresseIPounomdomain/phpmyadmin

Changer le Port du Web Server (Apache2):

Une fois votre serveur Apache installé, il est possible de modifier le port de destination (habituellement 80). Les modifications doivent être effectuées en tant que root (ou utiliser sudo avant les commandes indiquées).

Commençons par éditer le fichier correspondant :
nano /etc/apache2/ports.conf

Modifier la ligne :

NameVirtualHost *:80

Pour y mettre le port de votre choix, par exemple 1880 :

NameVirtualHost *:1880

Ensuite modifier :

Listen 80

Avec la valeur choisie pour votre nouveau port :

Listen 1880

Vous pouvez enregistrer les modifications et éditer le fichier suivant :
nano /etc/apache2/sites-enabled/000-default

editer la ligne suivante :

<VirtualHost *:80>

Pour y ajouter votre nouveau port :

<VirtualHost *:1880>

Sauvegarder et relancer le service apache:
service apache2 restart

Ouvrir votre navigateur internet et tester si le nouveau port est bien pris en compte :
http://votre-ip-adresse:1880
par exemple : http://192.198.0.54:1880

Note : Si vous utilisez Motion pour faire de la détection de mouvement ou un logiciel accédant à votre serveur web, il faudra modifier le fichier de configuration pour modifier le port.

nano /etc/motion/motion.conf

Et trouver la ligne suivante :
netcam_url http://localhost/cam_pic.php

Et modifier en fonction du nouveau port choisi
netcam_url http://localhost:1880/cam_pic.php

Sécuriser votre accès SSH

apt-get install openssh-client openssh-server

Pour améliorer la sécuriter de votre serveur SSH, commencez par éditer le fichier /etc/ssh/sshd_config et modifier le port de connexion, désactiver la connexion avec l’utilisateur root et si vous le souhaitez paramétrer l’authentification par système de clef.

Pour modifier le port de connection (par exemple 4922):

Port 4922

Pour désactiver la connection via root en dé-commentant la ligne et spécifiant ‘no’ :

PermitRootLogin no

Pour activer les Clefs d’authentifications dé-commenter les lignes suivantes :

RSAAuthentication yes
PubkeyAuthentication yes
AuthorizedKeysFile %h/.ssh/authorized_keys

PasswordAuthentication no

Pour limiter le nombre d’utilisateur :

AllowUser Nom_Utilisateur1 Nom_Utilisateur2

Une fois les modifications effectués il ne reste plus qu’à redémarrer le service :

service ssh restart

Pour plus de sécurité, vous pouvez déterminer les machines du réseau autorisées à se connecter, il faut modifier les fichiers /etc/hosts.allow et /etc/hosts.deny et ajouter :

sshd : Ip/Netmask

Soit par exemple pour l’adresse ip 192.168.0.145 et le masque 255.255.255.0

sshd : 192.168.0.145/255.255.255.0
# ou encore pour tout autoriser :
sshd : All

Si vous utilisez les Clefs d’authentifications, vous devez penser à générer votre trousseau de Clef Publique/Privé :

ssh-ketgen -t rsa
(il est possible d’utiliser d’autre mode que rsa, par ex. dsa ou ecdsa)

Une passphrase/mot de passe vous est demandé lors de la génération des clefs et sera nécessaire pour vous connecter.

Gestion des Clefs d’authentification
Les clefs sont placées dans le répertoire ~/.ssh/

La clef privée ~/.ssh/id_rsa ne doit jamais être copié nul part. Elle doit rester strictement confidentielle.

La clef publique ~/.ssh/id_rsa.pub doit être copié sur les machines distantes ou vous souhaitez avoir accès.

La commande ssh-copy-id ou scp vous permet de copier les clefs directement sur les machines distantes :
ssh-copy-id -i .ssh/id_rsa.pub Utilisateur_distant@IP_distante
ou
scp .ssh/id_rsa.pub Utilisateur_distant@IP_distante :.ssh/id_rsa_hote1.pub

si vous avez modifier le port
ssh-copy-id -i .ssh/id_rsa.pub Utilisateur_distant@IP_distante:port

Soit par exemple :
ssh-copy-id -i .ssh/id_rsa.pub kenny@192.168.0.145
ou
ssh-copy-id -i .ssh/id_rsa.pub kenny@192.168.0.145:4922

Configuration Intranet / Réseau interne Wifi

Configurer le nom de domaine de vos machines pour pouvoir vous connecter directement sans utiliser l’adresse ip.

Cette méthode est valable pour les petits réseau interne / intranet avec peu de serveur :

Prenons un exemple avec 3 machines en réseau

192.168.1.1 correspondant au serveur DNS / Routeur wifi
192.168.1.20 à machine1
192.168.1.25 à machine2

Sur le serveur DNS et sur les différentes machines, dans /etc/hosts à la fin du fichier, ajouter toutes les machines présentent sur votre réseau :

127.0.0.1 nomdomaineauchoix
192.168.1.1 nomdomaineauchoix
192.168.1.20 machine1.nomdomaineauchoix
192.168.1.25 machine2.nomdomaineauchoix

Utilisez le même nom de domaine et un sous réseau pour chaque machine. La ligne 127.0.0.1 doit correspondre à votre machine, soit au nom de domaine de 192.168.1.1 dans l’exemple ci dessous.

En suivant notre exemple, le fichier /etc/hosts de machine1 correspondrait à ceci :

127.0.0.1 machine1.nomdomaineauchoix
192.168.1.1 nomdomaineauchoix
192.168.1.20 machine1.nomdomaineauchoix
192.168.1.25 machine1.nomdomaineauchoix

etc. pour machine2.

Le fichier /etc/interfaces du serveur DNS est comporte ceci :

iface wlan0 inet static
address 192.168.1.1
netmask 255.255.255.0
dns-search nomdomaineauchoix

*[pour la configuration du routeur/point d’acces voir hostapd dans l’article à ce sujet]

Sur les autres machines du réseau éditez /etc/network/interfaces et configurer une adresse ip fixe ainsi que les paramètre du routeur et le nom de domaine choisi pour la machine en question. Choisir eth0 ou wlan0 en fonction du type de connexion RJ45 ou wifi. Par exemple pour la machine1 en wifi :

iface wlan0 inet static
address 192.168.1.20
netmask 255.255.255.0
gateway 192.168.1.1
dns-search machine1.nomdomaineauchoix

wpa-conf /etc/wpa_supplicant/wpa_supplicant.conf
#effacer cette dernière ligne en cas d’utilisation de eth0

Sur le serveur dns configurer /etc/dnsmasq.conf en ajoutant :

domain-needed
expand-hosts
bogus-priv

interface=wlan0
domain=nomdomaineauchoix
cache-size=256

dhcp-range=192.168.1.2,192.168.1.254,255.255.255.0,24h

Créez un Script de démarrage

Il est souvent nécessaire de lancer une application lors du processus de boot du rapsberry. Sans forcément avoir à vous connecter avec un compte utilisateur. Ceci-ci est particulièrement utile pour un Pi-Routeur, Pi-Cam, etc.

La commande update-rc.d permet d’ajouter un programme/service/script à la liste de démarrage système et de le terminer lors de l’arrêt.

Pour ajouter :

update-rc.d NOMDUSCRIPT defaults

Pour supprimer :

update-rc.d NOMDUSCRIPT remove
ou encore
update-rc.d -f NOMDUSCRIPT remove

Créer un script personnalisé :

Par exemple j’aimerai lancer l’appli python Rpi-Cam-Web-Interface au démarrage du système. Mais cet exemple est bien entendu adaptable à vos besoins personnalisés, il suffit de modifier légèrement le code. Pour commencer, éditez/créez le script dans /etc/init.d/Rpi-Cam

sudo nano /etc/init.d/Rpi-Cam

Et insérez le texte suivant :

#! /bin/sh
# /etc/init.d/Rpi-Cam

### BEGIN INIT INFO
# Provides: RPi-Cam
# Required-Start: $network $syslog
# Required-Stop: $network $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Rpi-Cam boot script
# Description: Script de lancement de l’appli Rpi-Cam-Web-Interface lors du boot.
### END INIT INFO
# Pour qu’une commande soit toujours active insérez la ici

# Début du Script
case « $1 » in
start)
echo « Starting Rpi-Cam »
# Emplacement de l’application
/home/pi/destination-rpi-cam-dir/start.sh
;;

stop)
echo « Stopping Rpi-Cam »
# Emplacement de l’application
/home/pi/destination-rpi-cam-dir/stop.sh
# ou kill application you want to stop
#killall NOMAPPLI
;;

*)
echo « Usage: /etc/init.d/Rpi-Cam start|stop »

exit 1
;;

esac

exit 0

Une fois le fichier crée, donnez lui les droits d’exécution :
chmod 755 /etc/init.d/Rpi-Cam

Démarrer ou arrêter votre script :
sudo /etc/init.d/NOMDUSCRIPT start
sudo /etc/init.d/NOMDUSCRIPT stop
ou
sh /etc/init.d/NOMDUSCRIPT start
sh /etc/init.d/NOMDUSCRIPT stop

Il suffit de lancer la commande suivante pour ajouter le script à la liste de démarrage :
update-rc.d /etc/init.d/Rpi-Cam defaults

Pour plus d’info sur les options de configuration possible : https://wiki.debian.org/LSBInitScripts

Utilisation de Nano (éditeur de texte en mode console)

Pour diverse raison, vous pouvez être amené à utiliser nano pour éditer un fichier contenant du texte. L’une d’entre elle est l’étape de configuration de divers programmes.

Voici quelques commandes utiles à connaitre :

Sauvegarde : F3 ou CTRL + O (puis modifier nom du fichier si besoin et valider)
Quitter : F2 ou CTRL + X
Aide : F1 ou CTRL + G

Naviguer vers le bas : CTRL + V
Naviguer vers le haut : CTRL + Y
Aller à la fin du fichier : ALT + Maj + :
Aller au début du fichier : ALT + ALTGr + _

Couper une ligne entière : CTRL + K
Coller une ligne entière : CTRL + U
Copier : ? reste encore un mystère pour moi, du coup couper et coller la ligne 2x (une pour la remettre en place et une autre pour faire vos modif)

Créer un marque :
(avec la souris : doucle clic qq part)
ALT + A puis déplace curseur et cela surligne, il est possible de copier/couper/coller à partir de la sélection.

ouvrir en mode normal : nano nom_du_fichier
ouvrir en mode avec ligne et colonne : nano -c nom-du_fichier
ouvrir avec support souris (gpm) : nano -m nom_du_fichier
ouvrir avec une version backup du fichier : nano -B nom_du_fichier

Remplacer du texte : ALT + R
(demande le texte à rechercher, puis le texte de remplacement, scan texte et demande à chaque occurence si veut remplacer)

Et un lien pour compléter vos connaissances si besoin :
https://openclassrooms.com/courses/reprenez-le-controle-a-l-aide-de-linux/nano-l-editeur-de-texte-du-debutant

Raspberry Pi 3 – L’ultime solution pour le Retro Gaming !

Raspberry Pi 3 – L’ultime solution pour le Retro Gaming !

Mushberry_Splashscreen_HD2

Il vient de sortir il y a peut de temps et risque de faire parler de lui, le nouveau Raspberry Pi 3 a de quoi conquérir les fans de rétrogaming! En plus de sa configuration plus puissante (quadcore 64bit ARM 1,2Ghz et 1g Ram LPDDR2) il est doté d’un réceptieur Bluetooth et wifi intégré ! Ce qui permet une connectivité totale sans avoir à ajouter de Dongle ! Il est possible de connecter directement les manettes 8bitdo en bluetooth transformant ainsi notre petite Framboise en ultime machine pour le Retro Gaming High Tech !

Capture du 2016-04-23 19:59:49

 

Il vous suffit d’avoir une carte SD (8, 16 ou 32Gb cela dépend de votre utilisation et des jeux que vous allez installer*) avec Retro-Pie installé, un cable HDMI et un ou plusieurs gamepad(s) et vous voilà près à jouer (après une ou l’autre petite configuration bien entendu) !
*Les jeux Amiga, Atari, Nes, etc. ne sont pas aussi volumineux que des jeux Playstayion, Dreamcast, etc.

Pour l’instant (04/03/2016) avec la version 3.6, le bluetooth n’est pas encore au point, par contre le Wifi fonctionne. La mise à jour de Rétro Pi pour le Raspberry Pi 3 est maintenant disponible (10/03/16), nous allons pouvoir commencer à profiter pleinement des performences de la bête! Reste à voir si le bluetooth sera opérationnel !

(23/04/16) Nous y sommes 🙂 Avec la version 3.7 de RetroPie tout devient opérationnel, le Bluetooth fonctionne sans soucie et vous aller pouvoir relier vos manettes 8bitdo et jouer en moins de 10 minute!

Article expliquant comment configurer vos manettes 8bitdo

 


Note:
L’emulateur N64 est un peu lent ? Il y a apparement différentes astuces pour résoudre le problème :
– Au démarrage de l’émulateur (c’est à dire après avoir appuyé sur le nom du jeu) pressez le bouton X pendant 2 seondes pour sélectionner l’émulateur mupen64plus-gles2n64.

– Optimiser le partage de la mémoire avec le GPU (dans raspi-config, advanced-opion)

Cela apporte un petit plus, mais perso je n’ai pas encore optenu un résultat 100% fluide et cela dépend aussi des jeux (certain son fluide d’autre rame). Hors la N64, tous les autres émulateurs testés fonctionnent au top!

ehQwHCO2

Mesure de température avec la sonde DS18B20

Vous avez absolument besoin de connaître la température ambiante et le thermomètre est cassé.. Vous avez juste un Raspberry une sonde et un cerveau qui traine quelque part? Pas de problème on va trouver une solution rapidement! Pour réaliser des mesures de température avec votre Framboise, il vous faut :

 

Pour le niveau Hardware – Plan du montage (capteur ou sonde) :

Capture du 2016-04-10 21:58:50Pour le capteur : Il faut connecter la Pin 1 à la terre, la Pin 2 (donnée/data) au GPIO 4 et la Pin 3 à l’entrée 3,3V. Il faut ensuite placer la résistance de Tirage entre la Pin 2 et 3.

serveimage

Capture du 2016-04-11 10:31:18

(Pour la sonde contrairement au schema il n’y a pas de fil blanc.)

Pour la sonde : Comme elle est précablée,  chaque fil a déjà la bonne couleur. Il faut relier le Bleu à le Terre, le Rouge à 3,3V et le Jaune (donnée/data) à la Pin GPIO 4 (ou une autre mais il faudra modifier le code du programme ). La résistance de tirage est placée entre le fil Jaune et Rouge.

serveimage

Note : si vous souhaitez tester rapidement le mieux est d’utiliser la Pin 7 ou GPIO4 du raspberry, ce qui évite d’avoir à effectuer des modifications sur le progamme d’exemple.

 

Au niveau Software :

Il existe une bibliothèque Python, qui vous permettra de réaliser des projets sympa!

Avec raspbian pour l’installer il suffit de taper :

 sudo apt-get install python-w1thermsensor
version python 3: python3-w1thermsensor

Vous pouvez glisser cette ligne dans le fichier /boot/config.txt pour ajouter le support OneWire au démarrage:
dtoverlay=w1-gpio

Pour tester si la sonde est bien connecté:

sudo modprobe w1-gpio
sudo modprobe w1-therm
cd /sys/bus/w1/devices
ls
cd 28-xxxxx (le nom du répertoire est différent en fonction de la Pin GPIO ou le capteur/sonde est branché, c’est pourquoi afin d’utiliser l’exemple de base le GPIO4 est recommandé)
cat w1_slave

Si vous ne trouvez pas w1_slave c’est que le cablage est mal fait et la sonde/capteur non reconnu(e) ou connecté(e). Vérifier et recommencer, n’hésitez pas à redémmarer pour rafraichir votre système.

Si tout c’est bien passé vous avez pu voir une série de chiffre sur 2 lignes et des indications ccr=xx YES et en dessous t=xxxxx par ex t=21548 (la température 21.548°C)

En lançant l’appli python ci-dessous vous obtiendez une série de mesure °C et °F toute les secondes. Le script peut être modifié facilement pour changer la durée.

# -*- coding: utf-8 -*-
import os
import glob
import time

os.system(‘modprobe w1-gpio’)
os.system(‘modprobe w1-therm’)

base_dir = ‘/sys/bus/w1/devices/’
device_folder = glob.glob(base_dir + ’28*’)[0]
device_file = device_folder + ‘/w1_slave’

def read_temp_raw():
f = open(device_file, ‘r’)
lines = f.readlines()
f.close()
return lines

def read_temp():
lines = read_temp_raw()
while lines[0].strip()[-3:] != ‘YES’:
time.sleep(0.2)
lines = read_temp_raw()
equals_pos = lines[1].find(‘t=’)
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_c, temp_f

while True:
print(read_temp())
time.sleep(2)

 

Source: Le tutoriel d’Adafruit

Faire un Backup de votre carte SD

Backup / Installation d’image (sous linux) :

Une fois votre configuration mise à jour et tout vos logiciels installé, il est intéressant de faire un backup pour ne pas avoir à réaliser les mêmes étapes en cas de plantage ou nécessité d’une nouvelle installation. Pour réaliser les opérations suivantes, connectez-vous avec le compte root :

su root
sudo su root
ou noter sudo avant chaque commande

Pour faire un Backup de votre carte SD :

dd if=/dev/sdX of=SDCardBackup.img

Pour installer une image sur une carte SD :

dd bs=4M if=SDCardBackup.img of=/dev/sdX

L’option bs=4M règle la taille des blocs (Block Size) de la carte SD à 4Mo. Si vous rencontrez une erreur réduissez cette valeur à 1M.
L’option if= détermine la source et of= la destination.

 

Trouver l’adresse de votre carte SD :
Votre carte sera accessible dans le répertoire /dev/
Pour vous y rendre taper :

cd /dev

Puis pour afficher les différent disque disponible :

ls sd*
brancher votre carte SD et recommencer :
ls sd*

Vous allez logiquement découvrir l’emplacement de votre carte SD. Notez que vous pouvez aussi obtenir le même résultat encore plus facilement avec la commande :

df -h

Qui affiche la liste des disques, leur emplacement et leur espace disponible. Essayez avant et après avoir branché votre carte, vi votre carte est reconnue, vous trouvez un nouveau périphérique.

Il existe aussi des utilitaires graphiques de gestion des disques.

 

Pour windows

Utiliser un logiciel comme Win32DiskImager que vous pouvez télécharger ici : Win32DiskImager – SourceForge.

Faire une mise à jour de votre Raspberry Pi

Mise à jour (Raspbian) :

Pour mettre à jour votre Raspberry, il y a une série d’action simple à réaliser. Pour commencer, connectez-vous en root pour réaliser les opérations de mise à jour. Pour ce faire utiliser la commande su root si vous avez défini un mot de passe root, ou sudo su root si il n’y a pas de mot de passe par défaut. Il est aussi possible de taper sudo au début de chaque ligne (avant la commande à lancer en tant que root).

Pour une mise à jour simple :

apt-get update
apt-get upgrade

Pour mettre à jour le noyau et fimware :

apt-get install dist-upgrade
rpi-update

Redémarrer le Pi après avoir fait une mise à jour du noyau et/ou firmware. Votre Framboise est maintenant au top!

Note : apt-get est le programme permettant l’installation et la mise à jour de logiciel. L’option ‘update‘ liste les dépôts présent dans /etc/sources.list et teste leur fonctionnalité. Ensuite l’option ‘upgrade‘ réalise les mises à jour nécessaires. L’option ‘install dist-upgrade‘ réalise une mise à jour du noyau. Et enfin ‘rpi-update‘ met à jour les firmwares.

Envoyer des notification SMS avec Motion et un abonnement Free

Vous connaissez certainement motion, le logiciel de détection de mouvement utilisé dans de nombreux projets Raspberry Pi? Vous avez surement rêvé d’un système de notification par email ou Sms ! L’email est facile à réaliser, tandis que l’envoie d’un SMS reste plus complexe. Si vous avez la chance d’avoir un abonnement Free-mobile à (15,99 ou 19,99€ (voir même 4,99€ pour les plus chanceux, avec la dernière offre!)), d’un Raspberry Pi, d’un module Camera Pi ou d’une Camera USB compatible, vous pouvez facilement réaliser un système de détection envoyant des notifications par Sms!

Pour réaliser cette astuce, il vous faudra :

  1. Avoir installé motion. (Voir Article lien)
  2. Avoir installé curl.
  3. Avoir un abonnement Free mobile illimité (celui à 15,99€ ou 19.99€)

Voici l’adresse qui envoie sms via Free :
https://smsapi.free-mobile.fr/sendmsg?user=CODE_USER&pass=VOTRE_PASS&msg=Hello%20World%20!
Notez que le code user et le mot de passe sont définis par Free, vous les trouverez dans votre interface web. (Ajouter Photo)

Avec navigateur c’est facile… il suffit d’entrer l’adresse et vous recevez quasi-instantannément un SMS sur votre mobile.
Sans navigateur : il est possible d’utiliser curl pour envoyer une requête URL
curl -s ‘https://smsapi.free-mobile.fr/sendmsg?user=VOTRECODEUSER&pass=VOTREPASS&msg=Hello%20World%20!’

Enfin, pour configurer motion, dans /etc/motion/motion.conf  dans la section « # External Commands, Warnings and Logging: » vous pouvez ajouter la commande comme cela par exmple :

on_camera_lost curl -s ‘https://smsapi.free-mobile.fr/sendmsg?user=VOTRECODEUSER&pass=VOTREPASS&msg=Camera%20Déconnecté%20T%20D’

%20T et %20D ajouterons l’heure et la date avec une tabulation à la fin du message. Libre à vous de modifier les valeurs à votre guise, on_event_start, on_event_endon_movie_start, etc

Pensez bien que si vous utiliser l’envoie de SMS pour l’option on_motion_detected ou on_picture_save, vous allez recevoir un sms à chaque fois que motion détecte un mouvement ou enregistre une image. Et en fonction du réglage du nombre de Frame par seconde etc, cela peut conduire à litéralement vous flooder de SMS (avec l’envoie de 50 sms en 2 minutes par exemple).