FreeBSD 10.0 sur une Raspberry Pi rev. B

Voici comment “bsdifier” votre Raspberry :

  1. Téléchargez l’image : FreeBSD-10.0-STABLE-arm-armv6-RPI-B-20140127-r261200.img.bz2 ou plus récente sur un miroir FreeBSD
  2. Copier l’image sur votre SD avec dd : bunzip2 -c FreeBSD-10.0-STABLE-arm-armv6-RPI-B-20140127-r261200.img.bz2 | dd of=/dev/votresd bs=1M
  3. Une fois la BSD en ligne :
    1. SSH sera lancé
    2. Le compte root n’as pas de mot de passe (vous ne pourrez pas vous y connecter en ssh sans changer le mot de passe)
    3. Le clavier est en qwerty
    4. L’interface réseau est en DHCP

Si vous voulez faire l’image vous même, voici un article (en anglais) qui explique comment procéder et comment compiler le kernel : Creating a custom FreeBSD build for Raspberry Pi

[Lire]

Motion – envoyer les videos sur Google Drive

J’ai mit en place Motion sur ma Raspberry PI pour faire un système de vidéo surveillance qui enregistre une vidéo uniquement lorsqu’il y a un mouvement.

Pour cela, j’ai installé Raspbian sur ma Raspberry PI puis le packet motion après avoir branché une webcam compatible en USB.

Pour que le script fonctionne, vous devez installer ffmpeg et python-gdata.

  • ffmpeg - Multimedia player, server, encoder and transcoder (transitional package)
    • Je l’utilise pour ré-encoder l’avi généré
  • python-gdata - Google Data Python client library

Descriptions des fichiers utilisé

/etc/motion/motion.conf

Fichier de configuration du daemon motion.

[Lire]

Offloading SSL avec Nginx

Configuration de base pour effectuer de l’offloading SSL avec Nginx.

Les header défini avec proxy_set_header pourront être utilisé au niveau du backend pour effectuer, par exemple, des redirection http vers https

server {
  listen   443 ssl; ## listen for ipv4
  server_name domaine.ltd;
  ssl                     on;
  ssl_prefer_server_ciphers on;
  ssl_protocols           SSLv3 TLSv1 TLSv1.1 TLSv1.2; #libssl > 1.0
  ssl_ciphers             RC4:HIGH:!MD5:!ADH:+DH; #HIGH:!ADH:!MD5:@STRENGTH;
  ssl_session_cache       shared:TLSSL:16m;
  ssl_session_timeout     10m;
  ssl_certificate         /etc/nginx/domaine.ltd.crt;
  ssl_certificate_key     /etc/nginx/domaine.ltd.key;

  location / {
    proxy_set_header Host $http_host;
    proxy_set_header X-Forwarded-By $server_addr:$server_port;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_set_header X-Forwarded-Proto $scheme;
    proxy_pass http://backend;
  }

}

Article complémentaire : Redirection http vers https derrière un reverse proxy

[Lire]

Redirection http vers https derrière un reverse proxy

Pour que cela fonctionne, le reverse proxy doit définir dans le header X-Forwarded-Proto si la requête était en http ou https

La règle de réécriture apache pour forcer l’https :

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !https
RewriteRule / https://%{SERVER_NAME}%{REQUEST_URI} [L,R]

Ou au contraire si l’on veut forcer en http :

RewriteEngine On
RewriteCond %{HTTP:X-Forwarded-Proto} !http
RewriteRule / http://%{SERVER_NAME}%{REQUEST_URI} [L,R]

Article complémentaire : Offloading SSL avec Nginx

Mapper correctement un clavier US International Mac

Il y a plusieurs manière de procéder

Modification global pour tous les utilisateurs

Ajouter dans le fichier /etc/X11/xinit/xinitrc

# fix keyboard layout switching §± and `~
xmodmap -e "keycode 49 = section plusminus section plusminus section plusminus"
xmodmap -e "keycode 94 = grave asciitilde grave asciitilde dead_grave dead_horn"

Configuration pour votre utilisateur

Editer ou créé le fichier ~/.Xmodmap pour y ajouter

# fix keyboard layout switching §± and `~
keycode 94=grave asciitilde grave asciitilde dead_grave dead_horn
keycode 49=section plusminus section plusminus section plusminus3

Configuration pour votre session (valide jusqu’au redémarrage de X)

Exécuter dans un terminal

[Lire]

Configurer Google Analytiques dans OpenPhoto

Activer le plugin

Éditer votre fichier de configuration :

src/userdata/configs/[OpenPhotoDomainName].ini

ajouter

activePlugins = "GoogleAnalytics"

Pour activer plusieurs plugins, il faut les listé en les séparant par une virgule

Configuration du plugin

Apres avoir consulté le code source car, il la CLI pour configurer cela n’est pas encore développé, j’aidécouvert, qu’il faut simplement ajouter dans le fichier (créé les dossier manquant et le fichier) src/userdata/plugins/[OpenPhotoDomainName].GoogleAnalytics.ini une ligne contenant votre id de la maniere suivante : id = google id

[Lire]

Centralisation des logs Nginx avec Rsyslog

Configuration de rsyslog coté nginx

Créer le fichier de configuration /etc/rsyslog.d/nginx.conf pour y placer

$ModLoad imfile

$InputFileName          /var/log/nginx/access.log
$InputFileTag           nginx_access_log:
$InputFileStateFile     nginx_access_log
$InputFileSeverity      info
$InputFileFacility      user
$InputRunFileMonitor

$InputFileName          /var/log/nginx/error.log
$InputFileTag           nginx_error_log:
$InputFileStateFile     nginx_error_log
$InputFileSeverity      info
$InputFileFacility      user
$InputRunFileMonitor

# lit le fichier de log toutes les deux secondes
$InputFilePollingInterval 2

#envoie les logs en tcp a 192.1.2.3 port 514
if $syslogtag == 'nginx_access_log:' then @@(z9)192.1.2.3:514
if $syslogtag == 'nginx_error_log:' then @@(z9)192.1.2.3:514

#ne log pas ce qui est tagué nginx (pour ne pas logger en double)
:syslogtag, contains, "nginx" ~

Configuration de rsyslog coté serveur de log

Créer de la même manière le fichier /etc/rsyslog.d/nginx.conf pour y insérer :

[Lire]

Analyser les requêtes MySQL

Percona a développé un outils permettant de parser les logs tcpdump et les slow query MySQL.

Cela nous permet donc de pouvoir rapidement localiser les requêtes lentes.

Pour avoir le top10 des requêtes lentes en " direct " via tcpdump :

tcpdump -i en0 port 3306 -s 65535 -c 10000 -x -n -q -tttt | pt-query-digest --type tcpdump --report-format=profile --limit=10

Via le slow query log :

pt-query-digest --limit=10 /var/log/mysql/slow.log

Configuration de Varnish

Mise en place du dépôt Varnish et installation

Pour cela, il faut :

  • Installer la clef PGP du dépôt Varnish
  • Ajouter le dépôt Varnish
  • Installer Varnish
curl http://repo.varnish-cache.org/debian/GPG-key.txt | apt-key add -
echo "deb http://repo.varnish-cache.org/debian/ $(lsb_release -s -c) varnish-3.0" >> /etc/apt/sources.list.d/varnish.list
apt-get update
apt-get install varnish```

# Activation de varnish et configuration du port 80 a la place du port 6081

```sh
sed -i "#START#s#no#yes#" /etc/default/varnish-
sed -i "s#-a :6081#-a :80#" /etc/default/varnish
sed -i "s#/etc/varnish/default.vcl#/etc/varnish/production.vcl#" /etc/default/varnish

Le fichier de configuration

backend default {
    .host = "127.0.0.1";
    .port = "8080";
}

Appelé au début d’une requête, après que la requête complète est été reçue et analysée.

[Lire]