Planet Libre

blog-libre : Comme un doute

Firefox est un excellent navigateur, je pense qu’on sera tous d’accord là-dessus. Cependant j’ai comme un doute sur la fidélité de ses utilisateurs… notamment la mienne.

Partons de l’hypothèse que demain Firefox devienne deux fois plus lent que Chromium/Chrome ou encore que les extensions qui ont fait le succès de Firefox ne fonctionnent plus dessus, Firefox serait-il encore apprécié et utilisé ?

Je ne doute pas de l’existence de personnes convaincues par le Libre au point de faire passer leurs convictions avant leurs usages (en utilisant des outils plus éthiques mais moins fonctionnels par exemple). Je crois cependant que l’écrasante majorité des utilisateurs va « simplement » au mieux/meilleur.

En ce qui me concerne si Firefox perdait les principales extensions que j’utilise, je basculerais sur Chromium direct. A mon avis beaucoup de personnes se mentent sur leur prétendue fidélité aux logiciels libres. Sommes-nous avant tout des personnes qui utilisons, discutons et partageons autour de l’informatique, d’Internet, du Libre et de Linux ou des libristes ? Un libriste ne se poserait pas la question de quitter Firefox car c’est l’alternative la plus sérieuse techniquement et la plus respectueuse de la vie privée face à l’hégémonie de Chrome.

La plupart d’entre nous est technophile, nous aimons la technique, l’informatique, Internet, Linux et le Libre mais notre priorité première est, je le crois et je le crains, la meilleure solution technique et financière (gratuite…). Avant les convictions et l’éthique.

Finalement le doute que j’avais se transforme en reproche à mon égard, je suis avant tout fidèle à l’excellence technique avant l’excellence éthique.

Gravatar de blog-libre
Original post of blog-libre.Votez pour ce billet sur Planet Libre.

Articles similaires

Max Koder : Raspberry : Yunohost sur un disque externe

Yunohost sur un disque externe

Je suis toujours dans mes tests. Si vous me suivez, vous savez que depuis quelques temps je ne parle plus programmation, mais uniquement d’auto-hébergement. Ça va revenir, le temps de réussir à mettre en place tout ce que je souhaite.
Comme j’ai acheté un Raspberry, je souhaite balancer tout ce que j’ai en ligne dessus. Mais déjà pour la place, la carte SD c’est pas génial, alors niveau fiabilité, c’est encore pire. C’est pour ça que j’ai voulu mettre Yunohost sur un disque externe.

Le but de cet article est de laisser le minimum sur la carte SD (le boot, soit 63Mo environ), qui n’est utilisé qu’en lecture sauf cas de mise à jour de Debian. Tout le reste passera sur un disque externe branché en USB.
Nous créerons en même temps une partition swap sur le DD, et supprimerons le swap de la carte SD, toujours pour éviter des écritures dessus et essayer ainsi de prolonger sa vie

Les manipulations décrites ici sont également valables sur un Raspian, aucune n’est spécifique à Yunohost.

Prérequis

Ben il faut pas grand chose : Un Raspberry avec sa carte SD, Yunohost installé dessus (qui fonctionne, c’est toujours mieux), et un disque dur USB.
Pour ma part, j’ai pris un Maxtor de 1 To en 3,5 pouces, ce qui comblera largement mes besoins.

Préparation du disque dur

Prenez un disque dur USB, branchez le sur un système UNIX et créez 2 partitions :

– Une partition en EXT4 de la place que vous voulez
– Une seconde partition de 1Go en SWAP.

Je ne détaille pas ici, mais perso je le fais si possible en mode graphique avec Gparted :

Puis branchez le sur le Raspberry, connectez vous en SSH dessus, en root.
Lancez la commande suivante :

fdisk -lDisk /dev/mmcblk0: 29.5 GiB, 31614566400 bytes, 61747200 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x34edcb80 Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 * 8192 137215 129024 63M c W95 FAT32 (LBA) /dev/mmcblk0p2 137216 61747199 61609984 29.4G 83 Linux Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xf47cfc3f Device Boot Start End Sectors Size Id Type /dev/sda1 2048 1951426559 1951424512 930.5G 83 Linux /dev/sda2 1951426560 1953523711 2097152 1G 82 Linux swap / Solari

4 partitions :

– /dev/mmcblk0p1 : Partition de boot de 63Mo sur la carte SD, qui ne sera pas touchée
– /dev/mmcblk0p2 : Partition root, sur laquelle est installée Debian et Yunohost
– /dev/sda1 : Partition de mon disque dur (930Go), où je souhaite transférer Yunohost
– /dev/sda2 : Partition Swap

Si ce n’est pas les mêmes, notez bien les noms des partitions, afin de ne pas vous perdre ou planter tout le bordel

Copie des fichiers

A présent, nous allons copier l’intégralité de la partition sur laquelle est installée Yunohost sur la partition du disque externe :

dd if=/dev/mmcblk0p2 of=/dev/sda1 bs=32M conv=noerror,sync

Notez que l’on utilise la commande dd, et pas cp, bien plus appropriée lorsqu’on traite de systèmes de fichiers.

La copie peut être très longue selon la capacité de la carte SD, même si celle-ci est vide.
Pour ma carte de 32Go dont 2 utilisés, il a fallut plus de 30 minutes au Pi pour copier la partition :

31544311808 bytes (32 GB) copied, 1476.35 s, 21.4 MB/s

Une fois l’opération terminée, il est souhaitable de vérifier le système de fichiers et, si besoin, corriger les éventuelles erreurs :

e2fsck -f /dev/sda1

S’il y a des erreurs, corrigez-les en appuyant sur ‘y’ :

Free blocks count wrong (7096623, counted=7096541). Fix? yes Free inodes count wrong (1848111, counted=1848095). Fix? yes /dev/sda1: ***** FILE SYSTEM WAS MODIFIED *****

Étendre le système de fichiers

À ce moment précis, si vous relancez fdisk, vous verrez que la partition sur laquelle nous avons copié Yunohost semble occuper l’espace alloué au partitionnement initial.
Mais souvenez-vous, nous avons utilisé la commande dd, et celle-ci copie également la taille du système de fichiers. En fait, celui-ci fait la taille de la carte SD.

Pour agrandir le système de fichiers au maximum dans la partition, nous allons utiliser la commande resize2fs sur la partition fraîchement copiée :

resize2fs /dev/sda1

Options du boot

Il existe sur Linux la possibilité de passer des options pendant le boot, au moyen du fichier /boot/cmdline.txt.
À ma connaissance, il n’est pas très utilisé par les OS Linux (Ubuntu etc). On trouve d’ailleurs peu de ressources francophones dessus.
Mais le Raspberry s’en sert pour définir l’emplacement du système de fichiers root, la partition boot n’étant pas située au même endroit.

Avant de le modifier, nous allons en effectuer une copie, qui nous sera utile si le système ne redémarre pas comme prévu :

cp /boot/cmdline.txt /boot/cmdline_old.txt

Puis on va modifier le fichier original :

nano /boot/cmdline.txt

Cherchez l’option :

root=/dev/mmcblk0p2

Et remplacez la par :

root=/dev/sda1

sda1 étant la partition destinée à recevoir Yunohost sur le disque externe.

Sauvegardez (Ctrl + O, Enter) puis quittez nano (Ctrl + X).

Montage des partitions

À présent, nous allons modifier le point de montage des différentes partitions, à l’aide du fichier /etc/fstab.
Mais souvenez-vous, vous êtes encore montés sur la carte SD, et le prochain démarrage doit se faire sur le disque dur. Il faut donc modifier le fichier /etc/fstab du disque externe, et non pas celui de la carte SD.

Commençons donc par monter le disque externe :

mount /dev/sda1 /mnt

Le point de montage n’est pas très important puisque temporaire. Nous l’utiliserons uniquement pour modifier le fstab :

nano /mnt/etc/fstab

Là encore, modifiez

/dev/mmcblk0p2 par /dev/sda1

Puis nous allons y indiquer la partition swap. En bas du fichier, passez une ligne et entrez-y ceci :

/dev/sda2 none swap sw 0 0

Le contenu du fichier complet doit être semblable à cela :

proc /proc proc defaults 0 0 /dev/mmcblk0p1 /boot vfat defaults 0 2 /dev/sda1 / ext4 defaults,noatime 0 1 # a swapfile is not a swap partition, no line here # use dphys-swapfile swap[on|off] for that /dev/sda2 none swap sw 0 0

Enregistrez et quittez.

Swap de la carte SD

J’en ai parlé plus haut, le Raspberry possède une zone swap de 100Mo sur la carte SD. Celle-ci, si elle est utilisée, risque d’endommager rapidement la carte à cause des nombreuses écritures dessus.
De plus, comme nous avons configuré un swap de 1Go sur le disque externe, cette swap ne nous sert désormais à rien. Alors autant ne plus l’utiliser :

rm /etc/rc2.d/S02dphys-swapfile

Redémarrage

Le système devrait à présent être prêt à redémarrer sur le disque externe, hormis la partition /boot.
Nous allons donc nous assurer que toutes les opérations effectuées seront bien écrites sur le disque, à l’aide de la commande sync, puis redémarrer le Pi :

sync reboot

À présent, la carte SD est utilisée seulement en lecture pour le boot, puis le disque externe prend le relais.

Help !

Si votre Pi ne redémarre plus, pas de panique.
Souvenez-vous, vous avez fait une sauvegarde du cmdline.txt. Il suffit donc de récupérer la carte SD du Raspberry, la mettre dans un PC.
Puis supprimez le fichier cmdline.txt présent dans la partition /boot, et renommez le fichier cmdline_old.txt en cmdline.txt, et relancez le Pi (n’oubliez pas de mettre la SD ).

L’article Raspberry : Yunohost sur un disque externe est apparu en premier sur Max-Koder.

Gravatar de Max Koder
Original post of Max Koder.Votez pour ce billet sur Planet Libre.

Articles similaires

Max Koder : Raspberry : Yunohost sur un disque externe

Yunohost sur un disque externe

Je suis toujours dans mes tests. Si vous me suivez, vous savez que depuis quelques temps je ne parle plus programmation, mais uniquement d’auto-hébergement. Ça va revenir, le temps de réussir à mettre en place tout ce que je souhaite.
Comme j’ai acheté un Raspberry, je souhaite balancer tout ce que j’ai en ligne dessus. Mais déjà pour la place, la carte SD c’est pas génial, alors niveau fiabilité, c’est encore pire. C’est pour ça que j’ai voulu mettre Yunohost sur un disque externe.

Le but de cet article est de laisser le minimum sur la carte SD (le boot, soit 63Mo environ), qui n’est utilisé qu’en lecture sauf cas de mise à jour de Debian. Tout le reste passera sur un disque externe branché en USB.
Nous créerons en même temps une partition swap sur le DD, et supprimerons le swap de la carte SD, toujours pour éviter des écritures dessus et essayer ainsi de prolonger sa vie

Les manipulations décrites ici sont également valables sur un Raspian, aucune n’est spécifique à Yunohost.

Prérequis

Ben il faut pas grand chose : Un Raspberry avec sa carte SD, Yunohost installé dessus (qui fonctionne, c’est toujours mieux), et un disque dur USB.
Pour ma part, j’ai pris un Maxtor de 1 To en 3,5 pouces, ce qui comblera largement mes besoins.

Préparation du disque dur

Prenez un disque dur USB, branchez le sur un système UNIX et créez 2 partitions :

– Une partition en EXT4 de la place que vous voulez
– Une seconde partition de 1Go en SWAP.

Je ne détaille pas ici, mais perso je le fais si possible en mode graphique avec Gparted :

Puis branchez le sur le Raspberry, connectez vous en SSH dessus, en root.
Lancez la commande suivante :

fdisk -lDisk /dev/mmcblk0: 29.5 GiB, 31614566400 bytes, 61747200 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0x34edcb80 Device Boot Start End Sectors Size Id Type /dev/mmcblk0p1 * 8192 137215 129024 63M c W95 FAT32 (LBA) /dev/mmcblk0p2 137216 61747199 61609984 29.4G 83 Linux Disk /dev/sda: 931.5 GiB, 1000204886016 bytes, 1953525168 sectors Units: sectors of 1 * 512 = 512 bytes Sector size (logical/physical): 512 bytes / 512 bytes I/O size (minimum/optimal): 512 bytes / 512 bytes Disklabel type: dos Disk identifier: 0xf47cfc3f Device Boot Start End Sectors Size Id Type /dev/sda1 2048 1951426559 1951424512 930.5G 83 Linux /dev/sda2 1951426560 1953523711 2097152 1G 82 Linux swap / Solari

4 partitions :

– /dev/mmcblk0p1 : Partition de boot de 63Mo sur la carte SD, qui ne sera pas touchée
– /dev/mmcblk0p2 : Partition root, sur laquelle est installée Debian et Yunohost
– /dev/sda1 : Partition de mon disque dur (930Go), où je souhaite transférer Yunohost
– /dev/sda2 : Partition Swap

Si ce n’est pas les mêmes, notez bien les noms des partitions, afin de ne pas vous perdre ou planter tout le bordel

Copie des fichiers

A présent, nous allons copier l’intégralité de la partition sur laquelle est installée Yunohost sur la partition du disque externe :

dd if=/dev/mmcblk0p2 of=/dev/sda1 bs=32M conv=noerror,sync

Notez que l’on utilise la commande dd, et pas cp, bien plus appropriée lorsqu’on traite de systèmes de fichiers.

La copie peut être très longue selon la capacité de la carte SD, même si celle-ci est vide.
Pour ma carte de 32Go dont 2 utilisés, il a fallut plus de 30 minutes au Pi pour copier la partition :

31544311808 bytes (32 GB) copied, 1476.35 s, 21.4 MB/s

Une fois l’opération terminée, il est souhaitable de vérifier le système de fichiers et, si besoin, corriger les éventuelles erreurs :

e2fsck -f /dev/sda1

S’il y a des erreurs, corrigez-les en appuyant sur ‘y’ :

Free blocks count wrong (7096623, counted=7096541). Fix? yes Free inodes count wrong (1848111, counted=1848095). Fix? yes /dev/sda1: ***** FILE SYSTEM WAS MODIFIED *****

Étendre le système de fichiers

À ce moment précis, si vous relancez fdisk, vous verrez que la partition sur laquelle nous avons copié Yunohost semble occuper l’espace alloué au partitionnement initial.
Mais souvenez-vous, nous avons utilisé la commande dd, et celle-ci copie également la taille du système de fichiers. En fait, celui-ci fait la taille de la carte SD.

Pour agrandir le système de fichiers au maximum dans la partition, nous allons utiliser la commande resize2fs sur la partition fraîchement copiée :

resize2fs /dev/sda1

Options du boot

Il existe sur Linux la possibilité de passer des options pendant le boot, au moyen du fichier /boot/cmdline.txt.
À ma connaissance, il n’est pas très utilisé par les OS Linux (Ubuntu etc). On trouve d’ailleurs peu de ressources francophones dessus.
Mais le Raspberry s’en sert pour définir l’emplacement du système de fichiers root, la partition boot n’étant pas située au même endroit.

Avant de le modifier, nous allons en effectuer une copie, qui nous sera utile si le système ne redémarre pas comme prévu :

cp /boot/cmdline.txt /boot/cmdline_old.txt

Puis on va modifier le fichier original :

nano /boot/cmdline.txt

Cherchez l’option :

root=/dev/mmcblk0p2

Et remplacez la par :

root=/dev/sda1

sda1 étant la partition destinée à recevoir Yunohost sur le disque externe.

Sauvegardez (Ctrl + O, Enter) puis quittez nano (Ctrl + X).

Montage des partitions

À présent, nous allons modifier le point de montage des différentes partitions, à l’aide du fichier /etc/fstab.
Mais souvenez-vous, vous êtes encore montés sur la carte SD, et le prochain démarrage doit se faire sur le disque dur. Il faut donc modifier le fichier /etc/fstab du disque externe, et non pas celui de la carte SD.

Commençons donc par monter le disque externe :

mount /dev/sda1 /mnt

Le point de montage n’est pas très important puisque temporaire. Nous l’utiliserons uniquement pour modifier le fstab :

nano /mnt/etc/fstab

Là encore, modifiez

/dev/mmcblk0p2 par /dev/sda1

Puis nous allons y indiquer la partition swap. En bas du fichier, passez une ligne et entrez-y ceci :

/dev/sda2 none swap sw 0 0

Le contenu du fichier complet doit être semblable à cela :

proc /proc proc defaults 0 0 /dev/mmcblk0p1 /boot vfat defaults 0 2 /dev/mmcblk0p2 / ext4 defaults,noatime 0 1 # a swapfile is not a swap partition, no line here # use dphys-swapfile swap[on|off] for that /dev/sda2 none swap sw 0 0

Enregistrez et quittez.

Swap de la carte SD

J’en ai parlé plus haut, le Raspberry possède une zone swap de 100Mo sur la carte SD. Celle-ci, si elle est utilisée, risque d’endommager rapidement la carte à cause des nombreuses écritures dessus.
De plus, comme nous avons configuré un swap de 1Go sur le disque externe, cette swap ne nous sert désormais à rien. Alors autant ne plus l’utiliser :

rm /etc/rc2.d/S02dphys-swapfile

Redémarrage

Le système devrait à présent être prêt à redémarrer sur le disque externe, hormis la partition /boot.
Nous allons donc nous assurer que toutes les opérations effectuées seront bien écrites sur le disque, à l’aide de la commande sync, puis redémarrer le Pi :

sync reboot

À présent, la carte SD est utilisée seulement en lecture pour le boot, puis le disque externe prend le relais.

Help !

Si votre Pi ne redémarre plus, pas de panique.
Souvenez-vous, vous avez fait une sauvegarde du cmdline.txt. Il suffit donc de récupérer la carte SD du Raspberry, la mettre dans un PC.
Puis supprimez le fichier cmdline.txt présent dans la partition /boot, et renommez le fichier cmdline_old.txt en cmdline.txt, et relancez le Pi (n’oubliez pas de mettre la SD ).

L’article Raspberry : Yunohost sur un disque externe est apparu en premier sur Max-Koder.

Gravatar de Max Koder
Original post of Max Koder.Votez pour ce billet sur Planet Libre.

Articles similaires

Uggy : Personnalisation de bannière SSH avec image et texte


  • Récupérer une image idéalement en 32x32

J'ai pris par exemple sur IconArchive.
(Mes 2 lecteurs, partagez vos sources d'icones pour bannière en commentaires)

  • Installation de util-say pour convertir les images en "texte"
$ git clone https://github.com/maandree/util-say.git $ ./util-say/img2ponysay dilbert.png > dilbert.txt Error: Unable to access jarfile ./util-say/util-say.jar $ cd util-say && make && cd .. $ ./util-say/img2ponysay dilbert.png > dilbert.txt $ cat dilbert.txt

  • ponysay a rajouté les lignes avec les $ qu'il faut virer dans notre cas

Suppression de la ligne qui contient "balloon":

$ sed '/balloon/d' dilbert.txt

Suppression des lignes avec les $:

$ sed s/\\\\$\\\\\\\\\\\\$//g dilbert.txt

Suppresion des 5 premiers caractères de chaque ligne pour décaller l'image vers la gauche:

$ sed 's/^.\\{5\\}//g' dilbert.txt

Suppression des 3 premières lignes:

$ sed 1,3d dilbert.txt

Donc la ligne globale:

$ sed '/balloon/d' dilbert.txt | sed s/\\\\$\\\\\\\\\\\\$//g | sed 's/^.\\{5\\}//g' | sed 1,3d > dilbert_cleaned.txt

  • Script pour rajouter du texte

On edite le script ci-dessous pour modifier la police, les couleurs, et toutes les infos que l'on souhaite.

#!/bin/bash NAME="Server" OUT="/tmp/$NAME" IP_PRV="" IP_NAT="" IP_PUB="1.2.3.4" SERVICE="XXXX Paris" HD="1 x 50GB" echo "" > $OUT echo "" >> $OUT echo "" >> $OUT toilet -f Graffiti $NAME | lolcat -f -F 0.3 >> $OUT cecho () { local _color=$1; shift echo -ne "$(tput setaf $_color)$@$(tput sgr0)" } black=0; red=1; green=2; yellow=3; blue=4; pink=5; cyan=6; white=7; echo "" >> $OUT #cecho $white "IP Prv: " >> $OUT #echo "$IP_PRV" | toilet -f term | lolcat -f -F 0.4 >> $OUT #cecho $white "IP NAT: " >> $OUT #echo "$IP_NAT" | toilet -f term | lolcat -f -F 0.4 >> $OUT cecho $white "IP Pub: " >> $OUT echo "$IP_PUB" | toilet -f term | lolcat -f -F 0.4 >> $OUT cecho $white "Service: " >> $OUT echo "$SERVICE" | toilet -f term | lolcat -f -F 0.4 >> $OUT cecho $white "Disks: " >> $OUT echo "$HD" | toilet -f term | lolcat -f -F 0.4 >> $OUT cat $OUT echo "" echo "" echo "File output into $OUT"

On peut bien entendu modifier le script pour récupérer les infos automatiquement du serveur et ne pas avoir a modifier les valeurs à la main.

  • On install les 2 paquets suivants utilisés par le script au dessus
$ sudo apt-get install toilet lolcat

Allez voir le man de chaque pour les options.

  • On execute le script
$ ./ip.sh

A chaque execution, les couleurs seront un peu différentes

  • On joint les 2 fichiers en un seul
$ paste dilbert_cleaned.txt /tmp/Server > server.motd

  • On copie le fichier server.motd dans /etc/motd du serveur
  • Vérifier dans le /etc/ssh/sshd_config que vous avez bien la ligne:
PrintMotd yes

Gravatar de Uggy
Original post of Uggy.Votez pour ce billet sur Planet Libre.

Articles similaires

RaspbianFrance : Mettre en place une Raspberry Pi sans écran ni clavier

Dans de nombreux cas, la solution que nous souhaitons mettre en place sur notre Raspberry Pi ne nécessite pas d’accéder physiquement à la Pi, comme par exemple pour mettre en place un serveur web, ou un serveur Minecraft. Il peut arriver que nous n’ayons pas le matériel nécessaire (écran, clavier, souris) pour contrôler la Raspberry. Vous allez donc être ravi d’apprendre que pour mettre un place un système Raspbian, nous n’avons besoin ni d’écran ni de clavier, et que votre ordinateur peut faire le travail.

En effet, il existe une solution pour configurer un minimum Raspbian sur la Raspberry Pi, sans écran et sans clavier, pour que celle-ci puisse démarrer et se connecter en Wi-Fi à votre réseau internet. Cette méthode est aussi appelée « Headless » par nos voisins anglais.

Éléments requis pour mettre en place la Pi

Afin de faire une installation de Raspbian sur la Raspberry Pi, vous aurez besoin de tous les éléments indispensables, c’est à dire une Raspberry Pi 3b, son alimentation, et une carte MicroSD (8Go est suffisant).

Vous devrez également récupérer la dernière version de Raspbian, téléchargeable ici. Nous vous conseillons la version Lite car nous n’avons pas besoin de l’interface graphique. Pas besoin de prendre de pause Chocapic, Raspbian Lite est relativement léger et se télécharge assez rapidement. Une fois l’image récupérée et décompressée, vous allez devoir l’installer sur la carte SD, pour cela nous avons fait un article détaillé (ici pour Windows et là pour Linux/Mac).

Configurer la carte MicroSD

Maintenant que Raspbian est installé sur la carte SD, nous allons pouvoir configurer et modifier certains fichiers afin que la Raspberry Pi puisse fonctionner sans écran et sans clavier. Pour cela, nous allons commencer par activer SSH sur la Raspberry Pi. Pour rappel, la suite du tutoriel se déroule sur votre pc et non sur la Raspberry Pi.

Activer la connexion SSH

En effet depuis l’attaque qui visait les objets connectés en novembre 2016, la Fondation Raspberry Pi a décidé de ne plus activer les connexions SSH par défaut. Mais afin de ne pas bloquer les personnes optant pour une installation sans écran et sans clavier, headless donc, la Fondation a mis en place une solution simple et rapide pour activer le SSH. Il vous suffit de créer un fichier nommé ssh dans la partition Boot (le fichier n’attend aucune extension).

Lors du premier démarrage de la Pi, celle-ci vérifie si le fichier existe et activera le SSH en conséquence.

Connecter la Raspberry Pi à votre box en Wi-Fi

La connexion SSH est maintenant possible mais il reste encore une étape pour rendre la Raspberry utilisable à distance, sans clavier ni écran. Je parle bien sûr d’assurer la connexion à internet, primordial pour utiliser la Pi à distance.

Tout d’abord, si vous souhaitez relier la Raspberry Pi via Ethernet, vous pouvez directement passer à la section suivante car aucune configuration n’est nécessaire.

Ici, nous avons besoin d’une Raspberry Pi 3b ou d’une Raspberry Pi Zero W mais la solution reste la même avec les autres modèles (Pi 1B, 2B, Zero).

Afin de configurer la connexion Wi-fi lors du démarrage de la Pi, nous allons éditer le fichier wpa_supplicant.conf, situé dans le dossier/etc/wpa_supplicant/.

Le fichier contient les éléments suivants :

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev update_config=1 country=GB

Nous allons donc ajouter les lignes suivantes via l’application bloc-note (ou tout autre éditeur de texte, tel que SublimText, NotePad, etc.).

network={         ssid="MaBoxInternet"         psk="ClefSecurite"         key_mgmt=WPA-PSK }

A la ligne ssid, vous allez remplacer MaBoxInternet par le nom de votre box, Livebox-5678 par exemple. Pour le champ psk, cela correspond au code de sécurité de votre box, remplacez donc ClefSecurite par la clef de votre box. Et enfin la dernière ligne correspond au type de sécurité de votre box, généralement WPA.

Si vous souhaitez avoir plus de détails concernant la connexion Wi-Fi, nous avons réalisé un article à ce sujet que vous pouvez retrouver en suivant ce lien.

Mettre en place une ip statique pour votre Raspberry Pi

Dans le but de connaître l’ip que prendra la Raspberry Pi, nous allons lui donner une ip statique. Pour cela nous allons modifier le fichier dhcpd.conf situé dans le dossier /etc/.

Pour modifier le ficher, utilisez le même logiciel que pour configurer le Wi-Fi.

Une fois dans le fichier, allez à la dernière ligne et ajoutez le contenu suivant

interface eth0 static ip_address=192.168.1.100/24 static routers=192.168.1.1 static domain_name_servers=192.168.1.1 interface wlan0 static ip_address=192.168.0.100/24 static routers=192.168.1.1 static domain_name_servers=192.168.1.1

Détaillons un peu tout ceci, ici interface eth0 correspond à une connexion de type filaire et interface wlan0 à une connexion Wi-fi. A vous donc de choisir celui qui correspond à votre setup.
Static ip_address permet d’indiquer l’ip que votre Raspberry Pi aura une fois démarrée. Généralement l’ip est de type 192.168.1.x, remplacez le x par la valeur de votre choix, attention à ne pas rentrer en conflit avec d’autres devices.

Pour ce qui est de static router et static domain_name_servers, il s’agit généralement de l’ip de votre box, soit 192.168.1.1.
Vous n’avez plus qu’à enregistrer le fichier.

 

La carte SD est maintenant prête à être insérée dans la Raspberry Pi et à la démarrer sans écran et sans clavier. Vous n’avez plus qu’à vous y connecter en SSH afin de finaliser la configuration de la Raspberry Pi (changement des mots de passe, étendre la carte SD, etc). Nous vous invitons à consulter notre tutoriel dédié au premier démarrage de Raspbian.

Cet article Mettre en place une Raspberry Pi sans écran ni clavier est apparu en premier sur Raspbian-France.

Gravatar de RaspbianFrance
Original post of RaspbianFrance.Votez pour ce billet sur Planet Libre.

Articles similaires

alterlibriste : Un an d'auto-hébergement

L’an dernier à cette période, j’étais à fond dans l’installation d’un serveur pour mon auto-hébergement. L’occasion de faire un petit bilan.

Au moment où j’écris ces lignes, j’ai lancé un dist-upgrade pour passer sur Stretch en mode Cyrille, c’est-à-dire sans sauvegarde : on ferme les yeux et on saute. Le suspense règne donc jusqu’à la fin du billet pour savoir si tout s’est bien passé auquel cas Debian sera soit du béton, soit de la merde (en informatique, on se doit d’être binaire, non ?).

Je me souviens comme je me suis plongé pendant 3 semaines non-stop dans l’aventure de la ligne de commande et de l’accès ssh pour monter les différents services dont j’avais besoin ou plutôt pensais avoir besoin : Tiny-Tiny RSS, Wallabag, GnuSocial, j’en ai un peu chié pour ces trois-là. J’ai travaillé les aspects sécurité en m’initiant à fail2ban, en sécurisant l’accès ssh et quelques autres fichiers de config. J’ai aussi appris à gérer mon nom de domaine, les renvois des services vers les sous-domaines, sécuriser les accès en https avec let’s encrypt.

Et puis après, j’ai ajouté quelques services faciles comme BoZon ou une ToDo list, mis en place les mises à jour de sécurité en automatique, configuré les envois de rapports vers ma boîte mail et surtout, j’ai ajouté le partage de fichiers pour les rendre accessibles de mes autres machines.

Bref, j’ai tout fait pour que ce petit boîtier se fasse oublier et remplisse sa fonction sans avoir à y mettre les mains tous les 2 jours. Chose que j’ai relativement réussi.

Pour ce qui est des services que j’utilise, finalement, c’est principalement et quasiment uniquement le lecteur de flux rss (c’était aussi la principale raison de l’installation d’un serveur) ; je n’ai pour le moment quasiment aucun autre besoin même si j’ai encore sous le coude quelques trucs à synchroniser, mais je n’ai pas encore trouvé la motivation de m’y pencher.

Par contre, le côté serveur de fichiers est beaucoup plus utile que ce que je pensais. Je ne regrette donc pas le temps investi et tout ce que j’ai appris même si cette année, j’ai d’autres occupations en vue pendant mon temps libre estival (familial plus que professionnel, être marié à une enseignante ne donne pas une véritable égalité sur la quantité de vacances), ce qui explique l’activité relativement faible sur mon blog.

Bon, on rigole mais la mise à jour se termine, je sais déjà que phpmyadmin ainsi que fail2ban ne se sont pas mis à jour correctement, ce qui n’augure pas le meilleur puisque mes services sont inaccessibles par contre le partage de fichiers fonctionne. À suivre…

EDIT (après quelques minutes de bidouillage) : fail2ban est désormais absorbé par le méchant systemd, du coup, il n’aime pas du tout qu’on garde les fichiers de config, ça aurait pourtant été pas mal de garder la configuration en place, va falloir que je me penche sur le nouveau fonctionnement. Sinon, il y avait le serveur Apache qui n’avait pas été redémarré peut-être à cause de l’erreur. Donc pour l’instant tout fonctionne, c’est l’essentiel, pour les détails, je verrai plus tard.

EDIT2 : les recherches de nouveaux billets de mon lecteur rss ne se faisaient plus à cause du passage à PHP7 ; j’avais le message :
FEED_CRYPT_KEY requires mcrypt functions which are not found
résolu par l’installation du package php7.0-mcrypt et redémarrage de /etc/systemd/system/ttrss-update.service

Gravatar de alterlibriste
Original post of alterlibriste.Votez pour ce billet sur Planet Libre.

Articles similaires

Dimitri Robert : Conférence : mille et une façons de détourer une image avec GIMP

Début juillet avaient lieu les rencontres mondiales du logiciel libre à Saint-Étienne. Et comme annoncé, j’y animais une conférence sobrement intitulée « mille et une façons de détourer une image avec GIMP ». C’est peut-être un poil exagéré, mais j’ai tout de même réussit à en montrer sept.

Pour moi le détourage est une activité incontournable d’un logiciel de retouche d’images comme GIMP. En tout cas, je le pratique abondamment pour les affiches et autres œuvres imprimées que je réalise. Autant le dire tout de suite, il n’y a pas d’outil miracle pour détourer : tout au plus, des outils qui vont vous mâcher le travail. En général je finis le travail avec un masque de calque.

Dans cette conférence, je montre, assez rapidement certes, les deux outils de base que j’utilise : les ciseaux intelligents et l’extraction de premier plan. Beaucoup d’utilisateurs de PhotoShop ne jurent que par la plume (outil Chemin dans GIMP), mais je ne suis pas à l’aise avec cette technique (peut-être l’outil Chemin est-il moins évolué dans GIMP). Rapidement je passe au masque pour fignoler le détourage au pinceau (je peins en noir ou blanc directement sur le masque).

Les autres techniques montrées reposent sur une dégradation de l’image afin d’augmenter le contraste entre l’élément à détourer et le reste, soit pour en faire une sélection, soit un masque, ce qui revient au même (techniquement le masque comme la sélection sont des images en niveaux de gris, mais j’y reviendrai plus tard). Parmi les techniques originales, j’utilise la désaturation, la décomposition en RVB ou en TSV, tout cela suivie d’une augmentation de contraste avec l’outil Niveaux (utilisez les Courbes si vous voulez plus de précision encore). Pour l’une des photos j’utilise un filtre de détection des contours : en effet, les sujets à détourer sont nets sur un fond en dégradé de couleurs (donc parfaitement flou).

Parfois le détourage est facile, parfois moins. Mais l’objectif des techniques montrées est d’éviter le plus possible le travail de précision. À vous d’estimer l’enjeu de votre détourage, du temps dont vous disposez et de la qualité que vous voulez atteindre. Pour ma part, je suis très pointilleux, mais je n’y passerai pas des heures.

En prime, le palmier détouré (que j’utilise beaucoup dans mes formations)

Palmier parfaitement détouré

Cet article Conférence : mille et une façons de détourer une image avec GIMP est publié sous licence CC By-SA 4.0 par Dimitri Robert sur Formation logiciel libre - Reprenez le contrôle de votre informatique !.

Gravatar de Dimitri Robert
Original post of Dimitri Robert.Votez pour ce billet sur Planet Libre.

Articles similaires

Philippe Scoffoni : BackupPC : Restaurer un fichier depuis la ligne de commande

BackupPC logiciel libre sauvegardeJe suis un utilisateur fidèle du logiciel libre de sauvegarde BackupPC qui m’a probablement permis de sauvegarder des centaines de To depuis plusieurs années. La fiabilité de ce logiciel n’a à vrai dire jamais été mise à mal. Voici un rapide tutoriel sur comment restaurer un fichier sans passer par l’interface web du logiciel.

Dans mon cas, j’avais besoin d’accéder à une vieille sauvegarde pour laquelle les données de BackupPC n’étaient plus en ligne, mais juste sauvegardées sur un serveur. Sans l’interface web pour visualiser les sauvegardes et lancer une restauration, il faut passer par la ligne de commande pour récupérer ses fichiers.

Les données sauvegardées par BackupPC sont stockées sous forme compressée. Cependant il est possible de récupérer un fichier directement sur le système de stockage utilisé par BackupPC. Il est situé par défaut dans le répertoire /var/lib/backuppc. Parmi les répertoires de ce dernier, il y en a un qui se nomme pc.

Il contient autant de sous-répertoires que de machine sauvegardée. Dans chaque sous-répertoire se trouvent les fichiers de configuration de la sauvegarde spécifiques à cette machine, les fichiers de log et des répertoires numérotés correspondant aux différentes sauvegardes.

À l’intérieur de ces répertoires se trouvent les différents répertoires que vous sauvegardez. Le nom des dossiers est quelque peu modifié, mais on retrouve ses petits. Les fichiers ne sont cependant pas utilisables tels quels, car ils ont été compressés. Copier le ou les fichiers que vous souhaitez décompresser dans un dossier temporaire puis utiliser la commande BackupPC_zcat située dans le répertoire bin de backuppc (/usr/share/backuppc/bin/ par exemple) :

/usr/share/backuppc/bin/BackupPC_zcat fdolibarr.sql.gz > dolibarr.sql.gz

Le ficher est alors dans son état natif et prêt à être réutilisé. Simple, mais efficace.

À noter les commandes BackupPC_tarCreate et BackupPC_zipCreate permettant de créer un fichier tar ou zip contenant toutes les données sauvegardées pour une machine et une sauvegarde données. Reportez-vous au wiki pour plus d’informations sur leur utilisation.

Réagir à cet article

Article original écrit par Philippe Scoffoni le 26/07/2017. | Lien direct vers cet article

Cette création est mise à disposition sous un contrat Creative Commons BY à l'exception des images qui l'illustrent (celles-ci demeurent placées sous leur mention légale d'origine).

.

Gravatar de Philippe Scoffoni
Original post of Philippe Scoffoni.Votez pour ce billet sur Planet Libre.

Articles similaires

Full Circle Magazine FR : Pour l'été...

... voici le numéro 122 en français, disponible sur notre page NUMÉROS ou, directement, en cliquant sur l'image ci-dessous.

issue122fr.png

Outre les bonnes rubriques habituelles, vous y trouverez, notamment :

  • Un article de Ronnie, l'éditeur en chef du FCM en anglais, vous détaillant comment installer UBTouch, le remplacement d'Ubuntu Touch. Ne soyez donc pas inquiets : tous ceux qui sont propriétaires d'un téléphone Ubuntu, pourront le flasher pour mettre UBports Touch à la place d'Ubuntu. Et votre téléphone (ou tablette, d'ailleurs !) reprendra vie !
  • Le début d'une nouvelle série de SJ Webb, expliquant comment il fait des recherches dans le domaine de l'ostéopathie, avec Linux ; ce qui peut paraître surprenant est que sa distrib. de choix pour les recherches est Fedora et pas Ubuntu ...
  • Et deux critiques : l'une du programme Etcher, qui rend la mise sur USB d'une image ISO sûre et facile, et l'autre du jeu Siltbreaker Act 1 qui fait partie, en quelque sorte, de Dota 2 The International Battle Pass 2017.

Où que vous soyez, nous vous souhaitons un bon été avec le FCMfr.

Amusez-vous bien !

L'équipe du FCMfr :

  • Le scribeur, Bab ;
  • Les traducteurs, AE et d52fr ;
  • Les relecteurs, Bab, d52fr et moi-même, AuntieE

Gravatar de Full Circle Magazine FR
Original post of Full Circle Magazine FR.Votez pour ce billet sur Planet Libre.

Articles similaires

citizenz7 : Distribution Gnu/Linux : Netrunner (Rolling) 2017.07 64bit

Je vous présente : Netrunner !

Netrunner est depuis quelques mois... une distribution basée sur Debian dotée d'un bureau KDE hautement personnalisé avec des applications supplémentaires, des codecs multimédias, des plugins Flash et Java et un aspect unique. Les modifications sont conçues pour améliorer la convivialité de l'environnement de bureau tout en conservant la liberté de modifier.

Une édition séparée "Rolling", basée sur Manjaro Linux, a été lancée en 2014, a été interrompue et a été relancée en 2017. Voici donc ici la nouvelle version Rolling-release de cette Netrunner qui, pour peu que l'on apprécie l'environnement KDE (ça n'est pas mon cas ...), est une distribution très attirante avec ses nombreuses applications et "Tweaks".

A tester !

A télécharger librement sur : http://www.freetorrent.fr/netrunner-rolling-2017-07-64bit-iso

VERSION : Rolling Release basée sur Arch/Manjaro

KDE Plasma 5.10.3
KDE Frameworks 5.35
KDE Applications 17.04.2
Qt5.9.0
Linux Kernel 4.11.8
Firefox 54.0.1
Thunderbird 52.2.1
LibreOffice 5.2.7
etc.

SOURCES : http://www.netrunner.com/

Gravatar de citizenz7
Original post of citizenz7.Votez pour ce billet sur Planet Libre.

Carl Chenet : Sur Mastodon, créer son compte de secours… ou tout perdre

Pourquoi un compte de secours ?

Le nouveau réseau social Mastodon offre grâce à sa nature décentralisée une bonne résistance contre les attaques ou problèmes survenant sur le réseau d’ordinateurs qui le constitue.

Ces ordinateurs, qu’on appelle individuellement des instances dans le vocabulaire de Mastodon, peuvent avoir un problème technique, temporaire ou définitif, un problème légal ou subir des attaques les affectant encore une fois temporairement ou définitivement.

Votre compte utilisateur est hébergé sur l’un de ces ordinateurs. Cela signifie que si cet ordinateur disparaît, votre compte disparaît. Heureusement, la nature fédérée de Mastodon vous permet de créer un compte avec à peu près le même nom sur une autre instance et de recommencer à vous exprimer rapidement.

Mais créer un compte sur une nouvelle instance de Mastodon va vous faire repartir de zéro en terme d’abonnés à votre compte. Vous allez donc vous sentir seul si vous aviez un grand nombre d’abonnés et mettre des jours, des semaines voire des mois à rassembler votre audience. Cela peut être un drame dans certains cas, si vous avez apporté un soin apportant à faire grandir ce nombre.

Comment éviter de tout recommencer ?

Mettre en place votre compte de secours avant l’incident apparaît comme la meilleure protection possible. La mise en place de ce compte de secours va suivre les différentes étapes décrites ci-dessous.

1. Créer votre compte de secours sur une autre instance

Cela va consister à vous connecter à une autre instance afin de créer un nouveau compte. Si par exemple vous possédez un compte sur l’instance principale mastodon.social, vous pouvez créer votre compte de secours sur l’instance de Framasoft framapiaf.org (merci à eux !). Il ne s’agit ici que d’un exemple, vous pouvez choisir l’instance de votre choix et pourquoi pas votre propre instance. C’est ce que j’ai fait dans mon cas.

2. Indiquer dans le nom de votre compte de secours qu’il s’agit de votre compte de secours

Cette étape ne revêt aucun caractère obligatoire, mais elle va permettre de bien distinguer les deux comptes. Cela se fait simplement depuis l’interface de Mastodon pour votre compte de secours.

3. Sauvegarder la liste de vos abonnements

Il n’est pas possible simplement d’importer puis d’exporter la liste des personnes qui vous suivent. Il faudra les prévenir grâce à des messages publiés via votre compte principal Mastodon. Par contre, vous pouvez déjà importer sur votre compte de secours la liste des comptes auxquels vous vous êtes abonné de vous-même. Pour cela, vous allez dans un premier temps exporter dans un fichier la liste de ces comptes depuis votre compte principal.

Le fichier généré s’appelera par défaut following_accounts.csv.

Et dans un second temps l’importer via la même interface depuis votre compte de secours avec le fichier following_accounts.csv créé précédemment.

N’oubliez pas de cocher le bouton radio Following list. Attendez vous à immédiatement recevoir des abonnements à votre compte de secours, car sans aucun doute un nombre important des personnes auxquelles vous êtes abonné vont comprendre l’objet de votre demande et immédiatement ajouter votre compte de secours.

4. Annoncer votre compte de secours depuis le compte principal

Enfin, il s’agit de faire connaître à toutes les personnes qui se sont abonnées à vous votre compte de secours. Cela va passer tout d’abord par une annonce sur votre compte principal, par exemple comme celle-ci :

Voilà, nous arrivons au bout de la séquence complète pour l’établissement d’un compte Mastodon de secours. Ce dernier sera désormais prêt à prendre la relève du premier si ce dernier venait à disparaître.

Après la création de votre compte de secours

Vous avez maintenant deux comptes Mastodon. Bien que l’essentiel soit fait pour vous assurer de pouvoir vous retourner en cas de problème sur le premier, deux étapes que je qualifie de « maintenance » sont à effectuer régulièrement :

1. Rappeler à vos abonnés l’existence du compte

Vous aurez sûrement remarqué une différence importante entre le nombre d’abonnés de votre compte principal et celui de votre compte de secours. Cela est lié au fait que tous vos abonnés ne peuvent être prévenus de l’existence de votre compte de secours uniquement par le compte principal. Il faut donc reprendre l’étape 4 du chapitre précédent et la répéter régulièrement, selon le nombre de vos abonnés et l’importance que vous attachez à convaincre vos abonnés courants de joindre votre compte de secours.

J’ai personnellement automatisé cette tâche à l’aide du programme toot qui permet d’envoyer des pouets depuis la ligne de commande. À voir de votre côté si cette solution peut vous convenir.

2. Réimporter vos abonnements à intervalle régulier

il s’agit ici de reproduire l’étape 3 du chapitre précédent consistant à exporter la liste de vos abonnements (les personnes auxquelles vous vous êtes abonné) depuis votre compte principal, puis importer cette liste sur votre compte de secours, et cela à intervalle régulier, encore une fois selon vos besoins.

Conclusion

Comme nous l’avons vu, malgré la nature fédérée de Mastodon, vous assurer d’avoir en permanence un compte disponible pour émettre vos messages peut demander un peu de travail.

J’espère que cet article vous aura permis de bien percevoir les différentes étapes nécessaires. Avec le temps des outils permettront sans doute de simplifier ces différentes étapes. Peut-être existe-t-il déjà d’ailleurs. N’hésitez pas à m’en parler dans les commentaires ci-dessous ou via Mastodon 😉

… et pour finir

Pour soutenir mon implication dans le Logiciel Libre et mes articles sur ce blog, n’hésitez pas à donner via ma page Liberapay, même à hauteur de quelques centimes par semaine 😉 Mes adresses Bitcoin,et Monero sont également disponibles sur cette page.

Gravatar de Carl Chenet
Original post of Carl Chenet.Votez pour ce billet sur Planet Libre.

Articles similaires

System Linux : Dashboard Common Vulnerabilities and Exposures (CVE), merci Saucs

saucs.jpg

Un service gratuit pour se tenir informé des dernières alertes/vulnérabilités

Avec la possibilité d’être alerté par mail en s'abonnant à tel ou tel vendeur ou produit.

https://www.saucs.com/

Gravatar de System Linux
Original post of System Linux.Votez pour ce billet sur Planet Libre.

Articles similaires

citizenz7 : Manjaro Linux : l’alternative Gnu/Linux la plus cohérente ?

Au sujet de Gnu/Linux, il y a 2 écoles :
– les "user friendly" qui se basent sur un constat simple : pas le temps (compétences) de passer 3 plombes à configurer un système Gnu/Linux. Il faut du concret, du rapide, du simple et du fiable !
– les "barbus" qui au contraire, pronent le "fait main", la liberté. Disposer d’un système basique pour le construire, par étapes, et obtenir un environnement “aux p’tits oignons”, fiable et adapté… quitte à y passer quelques heures.

Aujourd’hui, ces 2 écoles semblent se retrouver dans 2 types de distributions Gnu/Linux :
– toute la sphère des Ubuntu, Mint, etc. adaptées au "commun des mortels". L’installation de ce type de distribution se fait en général en "2 clics de souris…" et permet d’obtenir rapidement un système complet (très complet …) qui peut avoir des ressemblances flagrantes avec Windows.
– et puis les distributions qualifiées de "non adpatées aux débutants" qui doivent être "domptées". Outre Debian qui pourrait être à cheval sur les 2 types, actuellement ArchLinux représente la distribution la plus répendue et la "moins adaptée" aux débutants. Oui, je mets beaucoup de guillemets car tout ceci, vous allez me dire, est très subjectif...
La phase d’installation représente un handicap, pour certains, à surmonter, pour pouvoir ensuite construire son système par touches successives (réseau, environnement graphique, applications diverses, ...).

Inconvenients ? Du temps à passer devant sa machine, des recherches préalables, un investissement personnel, des connaissances plus pointues (partitionnement, système de boot EFI, locales, configuration du serveur graphique, etc.)
Avantages ? Un système vraiment adapté à ses besoins, dépouvu de fioritures, maîtrisé et théoriquement fiable. En fait une liberté quasi totale, de l’environnement de bureau en passant par les applications les plus courantes, etc.

Et si une distribution pouvait allier les avantages de stabilité et de liberté qu’offre Arch Linux sans toutefois imposer à l’utilisateur d’être un expert et d’avoir à préparer à l'avance l’installation du système (comment installer ArchLinux sans le wiki ... ou un bon tuto ?)

Ce type de distributions existe : Manjaro, Antergos, etc. Les nombreux utilisateurs d’Arch Linux y trouveront-ils un intérêt ? (moins de temps passé à configurer ? Rapidité ? simplicité ?).
En effet, Manjaro par exemple, permet d’installer en quelques clics une base d’Arch Linux assaisonnée de diverses "améliorations" prêtes-à-l’emploi. Et d’ainsi pouvoir bénéficier d’un système fiable, puissant et communautaire comme l’est Arch Linux.

Ce qui signifierait qu’Ubuntu et autres dérivés ne sont pas fiables ou communautaires ? Communautaires OUI, très certainement. Fiable : tout est relatif ... et encore une fois subjectif lorsqu’on aborde de type de discussion technique. Surtout lorsque notre cher R. Stallman fait passer le message dès 2012 : “N’utilisez plus Ubuntu, c’est mal ! Dans Ubuntu, il y a des spyware !” (http://www.fsf.org/blogs/rms/ubuntu-spyware-what-to-do, http://www.framablog.org/index.php/post/2012/12/08/stallman-ubuntu-espion)

Toujours est-il que cette réflexion, je l’ai eu il y a maintenant quelques temps... Pour moi, il était évident que, après plus de 15 ans d’utilisation de Gnu/Linux, l’idée d’installer Arch Linux (ce que j’ai fait !) n’était pas handicapante. Un bon tuto plus tard et l’affaire était dans le sac !
Mais en voyant poindre des distributions plus "abordables", j’ai tout de suite pesé le pour et le contre. Avoir une bonne base Arch Linux, facilement installable et configurable, c’est pour moi, bien évidemment, une excellente idée.

J’ai choisi Manjaro. Je l’utilise depuis plus de 2 ans maintenant sur mon PC portable (arch linux sur mon PC principal de bureau et Xubuntu sur mon PC N°2 ...).
La base Arch Linux avec notamment AUR à portée de main, c'est à mon goût, sans égal !

Et vous : qu'en pensez-vous ?

Gravatar de citizenz7
Original post of citizenz7.Votez pour ce billet sur Planet Libre.

Articles similaires

Yannic Arnoux : Performances, Golang à la rescousse

Dans l’article précédent j’ai optimisé le système de gestion des commentaires Stacosys en :

  • remplaçant le serveur HTTP de Flask par Sanic, un serveur HTTP Python tirant parti des capacités asynchrones de Python 3.5 et multi-processus (plusieurs workers)
  • ajoutant un cache mémoire à la partie de l’API de Stacosys qui récupère le compteur de commentaires d’un article

J’ai terminé sur une performance bien améliorée :

  • plus de 11000 requêtes traitées en 1 minute
  • un temps de requête moyen de 1,3 seconde
  • une répartition du temps de traitement entre 81 ms et 18 secondes (assez élevé)
  • 171 des requêtes (soit 1,5 %) avec un temps de traitement supérieur à 10 secondes

L’architecture avec Sanic ressemble à ceci :

Architecture Stacosys cache

Pour être complet le serveur HTTPS NginX en frontal de Stacosys est configuré avec 4 workers et il déverse les requêtes sur Sanic configuré avec 2 workers, qui lui seul utilise 30% de la CPU lors du test. L’impact sur la CPU est important et doit être mis en balance avec le gain en performance car d’autres services tournent sur le même serveur.

NginX est un serveur Web très complet et il y a des configurations avancées de mise en cache qui, d’après sa documentation, pourraient s’appliquer à mon scénario : un serveur HTTP en mode Proxy qui renvoie au format JSON les résultats d’une API. Si c’est le cas, cela rendrait caduque la nécessité d’ajouter un cache au niveau du serveur HTTP de Stacosys. J’ai fait quelques essais et je ne suis pas arrivé à un résultat fonctionnel. Si vous avez des retours d’expérience, j’aurais voulu mesurer les performances de cette solution. Logiquement, elle devrait l’emporter sur les autres.

Je cherchais depuis un petit moment une occasion excuse pour écrire un peu de Golang. Un test HTTP (hors contexte) de Golang m’a convaincu que je pourrais m’en servir. Le langage Golang a la particularité d’être compilé, typé, multi-plateforme et il fournit en standard des fonctionalités de haut niveau comme HTTP (client et serveur), de la crypto et de la compression, le support du JSON. Le débat reste ouvert sur le fait que Golang soit un langage orienté objet. En tout cas, il propose un paradigme de programmation simple et une richesse de librairies qui le rendent très intéressant pour du développement généraliste où la performance compte.

J’ai donc restauré Stacosys en situation initiale (retour au serveur HTTP de Flask) et j’ai ajouté un serveur HTTP avec cache en Golang qui sert de proxy à NginX pour récupérer le compteur de commentaires. Les autres appels à l’API de Stacosys sont envoyés directement à Stacosys.

L’architecture devient ainsi :

Architecture Golang HTTP/Cache

Dans cette configuration, j’ai relancé mon fameux test étalon. On éclate tout avec + de 14000 requêtes traitées, un taux d’erreur équivalent mais surtout un temps de réponse moyen divisé par 4 et une charge CPU d’à peine 7%. Le serveur HTTP est mono-processus mais il utilise à fond les capacitéss des goroutines de Golang pour gérer la concurrence de traitement.

Serveur Workers Temps de réponse Requêtes Erreurs Flask HTTPS 1 104 > 4194 > 32000 4043 326 Sanic HTTPS + cache 4 81 > 1152 > 12408 13558 210 Sanic HTTPS + cache 1 81 > 1367 > 18869 11589 171 Golang HTTPS ? 80 > 341 > 6745 14663 175

Pour les fans de code, voici celui du serveur HTTP avec cache :

1 package main 2 3 import ( 4 "encoding/json" 5 "flag" 6 "fmt" 7 "github.com/patrickmn/go-cache" 8 "io/ioutil" 9 "net/http" 10 "os" 11 "time" 12 ) 13 14 // ConfigType represents config info 15 type ConfigType struct { 16 HostPort string 17 Stacosys string 18 CorsOrigin string 19 } 20 21 var config ConfigType 22 var countCache = cache.New(5*time.Minute, 10*time.Minute) 23 24 func die(format string, v ...interface{}) { 25 fmt.Fprintln(os.Stderr, fmt.Sprintf(format, v...)) 26 os.Exit(1) 27 } 28 29 func commentsCount(w http.ResponseWriter, r *http.Request) { 30 31 // only GET method is supported 32 if r.Method != "GET" { 33 http.NotFound(w, r) 34 return 35 } 36 37 // set header 38 w.Header().Add("Content-Type", "application/json") 39 w.Header().Add("Access-Control-Allow-Origin", config.CorsOrigin) 40 41 // get cached value 42 cachedBody, found := countCache.Get(r.URL.String()) 43 if found { 44 //fmt.Printf("return cached value") 45 w.Write([]byte(cachedBody.(string))) 46 return 47 } 48 49 // relay request to stacosys 50 response, err := http.Get(config.Stacosys + r.URL.String()) 51 if err != nil { 52 http.NotFound(w, r) 53 return 54 } 55 defer response.Body.Close() 56 body, err := ioutil.ReadAll(response.Body) 57 if err != nil { 58 http.NotFound(w, r) 59 return 60 } 61 62 // cache body and return response 63 countCache.Set(r.URL.String(), string(body), cache.DefaultExpiration) 64 w.Write(body) 65 } 66 67 func main() { 68 pathname := flag.String("config", "", "config pathname") 69 flag.Parse() 70 if *pathname == "" { 71 die("%s --config ", os.Args[0]) 72 } 73 // read config File 74 file, e := ioutil.ReadFile(*pathname) 75 if e != nil { 76 die("File error: %v", e) 77 } 78 json.Unmarshal(file, &config) 79 fmt.Printf("config: %s\\n", string(file)) 80 81 http.HandleFunc("/comments/count", commentsCount) 82 http.ListenAndServe(config.HostPort, nil) 83 }

La démonstration ne vise pas à conclure qu’il faut tout réécrire en Golang car Python est trop lent !

Hier, je lisais un article à propos de Discord, une application concurrente de Teamspeak avec de la VoIP, des gros besoins de concurrence de traitement (5 millions de messages échangés en permanence), du Web et de l’application mobile. Leur solution mixe 4 langages différents : Python, NodeJS, Golang et Elixir (Erlang) ; chacun a son rôle et son champ d’application dédié. Plus on acquiert une culture large de l’informatique et plus on sera capable de choisir le bon langage / paradigme de programmation / framework en fonction de la tâche à accomplir, ce qui rejoint ce dicton anglo-saxon que j’aime bien même s’il est un peu galvaudé : if all you have is a hammer, everything looks like a nail.

Gravatar de Yannic Arnoux
Original post of Yannic Arnoux.Votez pour ce billet sur Planet Libre.

Yannic Arnoux : Performances, Golang à la rescousse

Dans l’article précédent j’ai optimisé le système de gestion des commentaires Stacosys en :

  • remplaçant le serveur HTTP de Flask par Sanic, un serveur HTTP Python tirant parti des capacités asynchrones de Python 3.5 et multi-processus (plusieurs workers)
  • ajoutant un cache mémoire à la partie de l’API de Stacosys qui récupère le compteur de commentaires d’un article

J’ai terminé sur une performance bien améliorée :

  • plus de 11000 requêtes traitées en 1 minute
  • un temps de requête moyen de 1,3 seconde
  • une répartition du temps de traitement entre 81 ms et 18 secondes (assez élevé)
  • 171 des requêtes (soit 1,5 %) avec un temps de traitement supérieur à 10 secondes

L’architecture avec Sanic ressemble à ceci :

Architecture Stacosys cache

Pour être complet le serveur HTTPS NginX en frontal de Stacosys est configuré avec 4 workers et il déverse les requêtes sur Sanic configuré avec 2 workers, qui lui seul utilise 30% de la CPU lors du test. L’impact sur la CPU est important et doit être mis en balance avec le gain en performance car d’autres services tournent sur le même serveur.

NginX est un serveur Web très complet et il y a des configurations avancées de mise en cache qui, d’après sa documentation, pourraient s’appliquer à mon scénario : un serveur HTTP en mode Proxy qui renvoie au format JSON les résultats d’une API. Si c’est le cas, cela rendrait caduque la nécessité d’ajouter un cache au niveau du serveur HTTP de Stacosys. J’ai fait quelques essais et je ne suis pas arrivé à un résultat fonctionnel. Si vous avez des retours d’expérience, j’aurais voulu mesurer les performances de cette solution. Logiquement, elle devrait l’emporter sur les autres.

Je cherchais depuis un petit moment une occasion excuse pour écrire un peu de Golang. Un test HTTP (hors contexte) de Golang m’a convaincu que je pourrais m’en servir. Le langage Golang a la particularité d’être compilé, typé, multi-plateforme et il fournit en standard des fonctionalités de haut niveau comme HTTP (client et serveur), de la crypto et de la compression, le support du JSON. Le débat reste ouvert sur le fait que Golang soit un langage orienté objet. En tout cas, il propose un paradigme de programmation simple et une richesse de librairies qui le rendent très intéressant pour du développement généraliste où la performance compte.

J’ai donc restauré Stacosys en situation initiale (retour au serveur HTTP de Flask) et j’ai ajouté un serveur HTTP avec cache en Golang qui sert de proxy à NginX pour récupérer le compteur de commentaires. Les autres appels à l’API de Stacosys sont envoyés directement à Stacosys.

L’architecture devient ainsi :

Architecture Golang HTTP/Cache

Dans cette configuration, j’ai relancé mon fameux test étalon. On éclate tout avec + de 14000 requêtes traitées, un taux d’erreur équivalent mais surtout un temps de réponse moyen divisé par 4 et une charge CPU d’à peine 7%. Le serveur HTTP est mono-processus mais il utilise à fond les capacitéss des goroutines de Golang pour gérer la concurrence de traitement.

Serveur Workers Temps de réponse Requêtes Erreurs Flask HTTPS 1 104 > 4194 > 32000 4043 326 Sanic HTTPS + cache 4 81 > 1152 > 12408 13558 210 Sanic HTTPS + cache 1 81 > 1367 > 18869 11589 171 Golang HTTPS ? 80 > 341 > 6745 14663 175

Pour les fans de code, voici celui du serveur HTTP avec cache :

1 package main 2 3 import ( 4 "encoding/json" 5 "flag" 6 "fmt" 7 "github.com/patrickmn/go-cache" 8 "io/ioutil" 9 "net/http" 10 "os" 11 "time" 12 ) 13 14 // ConfigType represents config info 15 type ConfigType struct { 16 HostPort string 17 Stacosys string 18 CorsOrigin string 19 } 20 21 var config ConfigType 22 var countCache = cache.New(5*time.Minute, 10*time.Minute) 23 24 func die(format string, v ...interface{}) { 25 fmt.Fprintln(os.Stderr, fmt.Sprintf(format, v...)) 26 os.Exit(1) 27 } 28 29 func commentsCount(w http.ResponseWriter, r *http.Request) { 30 31 // only GET method is supported 32 if r.Method != "GET" { 33 http.NotFound(w, r) 34 return 35 } 36 37 // set header 38 w.Header().Add("Content-Type", "application/json") 39 w.Header().Add("Access-Control-Allow-Origin", config.CorsOrigin) 40 41 // get cached value 42 cachedBody, found := countCache.Get(r.URL.String()) 43 if found { 44 //fmt.Printf("return cached value") 45 w.Write([]byte(cachedBody.(string))) 46 return 47 } 48 49 // relay request to stacosys 50 response, err := http.Get(config.Stacosys + r.URL.String()) 51 if err != nil { 52 http.NotFound(w, r) 53 return 54 } 55 defer response.Body.Close() 56 body, err := ioutil.ReadAll(response.Body) 57 if err != nil { 58 http.NotFound(w, r) 59 return 60 } 61 62 // cache body and return response 63 countCache.Set(r.URL.String(), string(body), cache.DefaultExpiration) 64 w.Write(body) 65 } 66 67 func main() { 68 pathname := flag.String("config", "", "config pathname") 69 flag.Parse() 70 if *pathname == "" { 71 die("%s --config ", os.Args[0]) 72 } 73 // read config File 74 file, e := ioutil.ReadFile(*pathname) 75 if e != nil { 76 die("File error: %v", e) 77 } 78 json.Unmarshal(file, &config) 79 fmt.Printf("config: %s\\n", string(file)) 80 81 http.HandleFunc("/comments/count", commentsCount) 82 http.ListenAndServe(config.HostPort, nil) 83 }

La démonstration ne vise pas à conclure qu’il faut tout réécrire en Golang car Python est trop lent !

Hier, je lisais un article à propos de Discord, une application concurrente de Teamspeak avec de la VoIP, des gros besoins de concurrence de traitement (5 millions de messages échangés en permanence), du Web et de l’application mobile. Leur solution mixe 4 langages différents : Python, NodeJS, Golang et Elixir (Erlang) ; chacun a son rôle et son champ d’application dédié. Plus on acquiert une culture large de l’informatique et plus on sera capable de choisir le bon langage / paradigme de programmation / framework en fonction de la tâche à accomplir, ce qui rejoint ce dicton anglo-saxon que j’aime bien même s’il est un peu galvaudé : if all you have is a hammer, everything looks like a nail.

Gravatar de Yannic Arnoux
Original post of Yannic Arnoux.Votez pour ce billet sur Planet Libre.

Journal du hacker : Liens intéressants Journal du hacker semaine #29

Pour la 29ème semaine de 2017, voici 10 liens intéressants que vous avez peut-être ratés, relayés par le Journal du hacker, votre source d’informations pour le Logiciel Libre francophone !

Pour ne plus rater aucun article de la communauté francophone, voici :

De plus le site web du Journal du hacker est « adaptatif (responsive) ». N’hésitez pas à le consulter depuis votre smartphone ou votre tablette !

Le Journal du hacker fonctionne de manière collaborative, grâce à la participation de ses membres. Rejoignez-nous pour proposer vos contenus à partager avec la communauté du Logiciel Libre francophone et faire connaître vos projets !

Et vous ? Qu’avez-vous pensé de ces articles ? N’hésitez pas à réagir directement dans les commentaires de l’article sur le Journal du hacker ou bien dans les commentaires de ce billet :)

Gravatar de Journal du hacker
Original post of Journal du hacker.Votez pour ce billet sur Planet Libre.

Articles similaires

Marien Fressinaud : Project Zero 0.3

Un mois et demi après la 0.2, je suis très content d’annoncer la sortie de la version 0.3 de Project Zero. Pour rappel, il s’agit d’un gestionnaire de projets et de tâches avec un fort parti pris sur la façon de gérer tout cela.

Le code source se trouve sur GitHub, sous licence MIT et vous pouvez l’utiliser sur zero.marienfressinaud.fr, en attendant de migrer vers un nouveau (sous-)domaine que j’ai (enfin !) acheté.

Les nouveautés

Lorsque j’ai annoncé le mois dernier ce que je comptais inclure dans la prochaine version, j’avais prévu toute une liste de choses à faire : « meilleure gestion des petits écrans, emails de rappel, joli logo, amélioration de l’ergonomie et refonte du design, éventuellement ludification ». De tout ça, je n’ai quasiment rien retenu pour me concentrer sur ce qui comptait vraiment dans mon usage, l’idée étant que je l’utilise réellement au quotidien.

Premièrement, le « responsive design » était quasiment primordial vu que j’utilise beaucoup Project Zero sur tablette, voire sur téléphone. Ce n’est pas encore parfait, surtout sur mobile, mais tout est fonctionnel.

Ensuite, j’avais absolument besoin de lier des tâches aux projets pour m’assurer qu’ils avancent correctement. En effet, jusqu’à maintenant ma liste de projets servaient surtout de déco et beaucoup d’entre eux dépassaient leur date de fin. Désormais, avec les tâches associées ainsi que les deux indicateurs qui viennent avec, il est désormais beaucoup plus facile de savoir ce qui avance ou non. Les indicateurs sont de deux types :

  • le nombre de tâches terminées vs. le nombre de tâches associées, cet indicateur devient orange s’il n’y a aucune tâche à faire et est rouge s’il n’y a aucune tâche associée ;
  • une barre de progression montrant où l’on en est (càd. le jour courant) par rapport à l’échéance de fin.

Ces deux indicateurs se sont révélés indispensables pour mon usage.

Dashboard de Project Zero 0.3

Une fonctionnalité de la version 0.3 s’est en revanche montrée moins utile. En effet, les tâches non terminées le jour même se retrouvaient dans une « pending list » qui n’était pas facilement accessible. De ce fait, je perdais de vue bon nombre des tâches qui se trouvaient donc non résolues. J’ai décidé de renvoyer ces tâches dans le « backlog » dans le but de toujours démarrer une journée avec une liste de tâches vide. J’en ai profité pour rendre les tâches du « backlog » directement plannifiable ce qui a rendu le bouton « What will you work on today ? » inutile. C‘est donc un écran qui a sauté.

En résumé, il n’y a plus que deux listes de tâches : la liste du jour même et le « backlog ». Chaque début de journée, vous pouvez aller piocher dans celui-ci les tâches que vous pensez pouvoir réaliser le jour même.

Pour terminer, une fonctionnalité pas tellement essentielle mais que je trouvais sympa : une page de statistiques permettant de retracer sur les 15 derniers jours le nombre de tâches créées comparé au nombre de tâches terminées. Cela permet de me rassurer sur le fait que j’avance dans ce que j’ai à faire.

Dashboard de Project Zero 0.3

Pour les plus vigilants, vous noterez que le style est très proche de celui des graphiques GitHub (ceux de l’onglet « Traffic »).

Avec cette nouvelle version, j’ai désormais un outil pleinement fonctionnel pour mon usage quotidien. Je vais désormais sans doute mettre un (petit) coup de frein au développement du projet pour préparer un gros morceau : l’amélioration globale de l’expérience utilisateur et la mise en place d’une charte graphique pour le projet. Je ne sais pas encore quand je pourrai faire cela et il n’est pas impossible que je développe deux trois fonctionnalités autres, mais ce n’est pas dans mes priorités immédiates.

Gravatar de Marien Fressinaud
Original post of Marien Fressinaud.Votez pour ce billet sur Planet Libre.

OLPC France : Vidéo de la présentation Sugarizer à Scratch2017bdx

Lionel et Bastien ont eu l’occasion de rencontrer tous les « scratcheurs » du monde, réunis cette année à Bordeaux pour le 10ème anniversaire du logiciel d’apprentissage de la programmation Scratch.

Lors d’une session de « présentations éclairs », ils ont pu faire découvrir sugarizer.org à un large public, rappelant de quelle manière Sugarizer est lié à Sugar et à l’ensemble des projets pédagogiques qui ont émergés à la suite du LOGO de Seymour Papert.

L’événement fut riche en rencontres et en émotions, chapeau bas à toute l’équipe !

Gravatar de OLPC France
Original post of OLPC France.Votez pour ce billet sur Planet Libre.

Articles similaires

citizenz7 : Rendez-moi mes curseurs graphiques sous XFCE !

Je tourne sous ArchLinux sur un des mes PC à la maison et j'ai l'habitude d'utiliser XFCE qui est mon environnement de bureau préféré. J'ai aussi l'habitude d'utiliser le thème Numix et les icônes Numix.

Mais le Hic! c'est que, avec ce thème, certains curseurs graphiques disparaissent :

Sur l'image ci-dessus, les curseurs ont disparu pour les lignes taille, nb de lignes, largeurs.

En posant la question sur les forums d'archlinux.fr, sardon m'a donné la soultion :

sudo pacman -S gtk-engine-murrine

Et voila : tout rentre dans l'ordre après avoir installé gtk-engine-murrine :

Gravatar de citizenz7
Original post of citizenz7.Votez pour ce billet sur Planet Libre.

citizenz7 : Nouveaux films d'animation libres sur freetorrent.fr

Trois nouveaux films d'animation "libres" sont proposés sur http://www.freetorrent.fr :

Glass Half : (CC By) The Blender Institute a produit un nouveau dessin animé de 3 minutes avec une histoire simple, une animation rapide, dans un style non photo-réaliste. L'accent a été mis sur la narration courte, la bonne conception et l'animation claire.
Comme souvent, la fondation Blender nous propose ce petit bout de film d'animation sous une licence Creative Commons (By). A télécharger sur http://www.freetorrent.fr/glass-half-blender-animated-cartoon-mp4

Monkaa : (CC By) Monkaa est un singe à peau bleue et à visage rose qui consomme une météorite cristallisée, ce qui le rend invinciblement fort et trop chaud à manipuler. En explorant ses nouvelles superpuissances, Monkaa s'inspire d'un univers entier. Le projet Monkaa est un film animé court de 5 minutes entièrement réalisé avec Blender et GIMP et d'autres programmes logiciels gratuits / ouverts. Il a été publié en tant que film ouvert, avec tous les fichiers de production et les didacticiels disponibles ici sur le Cloud sous une licence CC-BY, ainsi que sur un DVD disponible dans le magasin Blender. A télécharger sur http://www.freetorrent.fr/blender-monkaa-mp4

Agent 237 - Operation Barbershop (extrait) : (CC By-Sa) Il s'agit d'un extrait d'environ 3 minutes du futur film d'animation du Blender Institute. Hendrik IJzerbroot - Agent 327 - est un agent secret qui travaille pour l'agence de services secrets néerlandaise. Dans les vingt bandes dessinées publiées depuis 1968, Martin Lodewijk a créé un univers riche avec des conspirations internationales, des personnages hilarants et une bonne dose d'humour néerlandais.
Voici donc un premier extrait de ce film d'animation (très) prometteur qui n'a rien à envier aux superproductions Disney ou Pixar ... Blender Institute développe actuellement son premier long métrage animé, basé sur le célèbre personnage de la bande dessinée hollandaise Agent 327. Cette comédie aventureuse s'adresse à un marché international.
Grâce au projet Blender open source, connu de millions de personnes, nous avons un vaste réseau d'artistes et de développeurs dans le monde entier. A télécharger sur http://www.freetorrent.fr/agent-237-operation-barbershop-extrait

Gravatar de citizenz7
Original post of citizenz7.Votez pour ce billet sur Planet Libre.

Pages