Utiliser les Github Issues pour avoir des commentaires sur le blog

Posté le lun. 13 avril 2020 • Tags : blog, github, commentaire

J'essaye depuis un certain temps de faire attention à ma vie privée sur Internet et j'évite d'être tracké.

J'essaye donc d'appliquer celà sur mon blog pour que l'affichage des pages soit plus rapide, que vous n'ayez pas 15 000 cookies etc…

Pour les commentaires j'utilisais disqus qui fonctionne très bien avec des sites statiques comme celui-ci qui est généré par pelican, mais il vous traque et n'est pas open source.

Ma recheche est donc la suivante :

  • un outil open source de gestion de commentaire

  • qui ne vous traque pas

  • qui fonctionne avec un site statique

J'ai trouvé utterances qui est léger, open source, n'as pas de système de tracking, n'utilise pas de gros framework JavaScript, et se base les issues github pour stocker les commentaires.

Il faut donc que vous ayez un compte github pour laisser un commentaire sur un article du blog.


Faire un va et vient avec des interrupteurs muraux Xiaomi

Posté le dim. 12 avril 2020 • Tags : électricité, domotique, xiaomi

J'ai recherché longtemps comment faire un va et vient avec des interrupteurs muraux Xiaomi.

Xiaomi switch wall

La seule solution proposée était de mettre :

  • un interrupteur filaire.

  • un interrupteur sans fil.

Cette solution ne me convient pas car j'ai des interrupteurs encastrés, je n'ai pas envie d'avoir un interrupteur sans fil collé, alors que j'ai potentiellement de l'electricité a cet endroit et je ne veux pas changer les piles…

J'ai donc pas mal fait de recherches, tests etc… pour au final trouver comment faire un va et vient "classique" comme on le fait avec des interrupteurs standards.

Schéma va et vient

Pour que le va et vient fonctionne avec deux boutons xiaomi filaire il vous faut :

  • un va et vient electrique type lumière d'escalier

  • un circuit classique type lumière d'une entrée (avec un seul interrupteur) qui soit a coté d'un des deux interrupteurs va et vient

  • un interrupteur deux boutons Xiaomi (un bouton sera alimenté par le deuxième circuit electrique, l'autre bouton sera pour le va et vient (slave) et n'aura pas besoin d'alimentation car il fonctionnera en sans fil et sans pile, il enverra l'ordre au master d'allumer ou éteindre)

  • un interrupteur un bouton (ou deux boutons) pour le deuxième bouton du va et vient (master).

  • un wago 2 bornes

  • 2 wago une borne (pour la deuxième navette inutile)

  • un cache (obturateur) si on remplace 2 interrupteurs un bouton par un interrupteur deux boutons.

Je prend l'exemple d'un va et vient dans un escalier (RDC - premier étage), avec 2 interrupteurs en bas :

  • un qui alimente l'ampoule de l'entrée

  • un qui alimente l'ampoule de l'escalier (va et vient)

ATTENTION :

Avant toute intervention sur votre installation électrique, couper le disjoncteur général. Je ne pourrais en aucun cas être tenu pour responsable de vos agissements. Ce document est uniquement a titre d'information. Je ne pourrait être tenu pour responsable de tout dommages ou incidents.

Schéma va et vient xiaomi

Je démonte au RDC, mon interrupteur de l'entrée, et mon ancien interrupteur avec va et vient classique, je me retrouve donc avec sur l'interrupteur de l'entrée :

  • la phase pour la lumière de l'entrée

  • le câble allant vers la lumière de l'entrée

sur l'interrupteur va et vient (bas) :

  • la phase

  • deux navettes

Je remplace mon interrupteur de l'entrée par l'interrupteur xiaomi :

  • la phase sur le "L"

  • le câble allant vers la lumière de l'entrée sur le "L1" ou "L2" a voir quel bouton vous souhaitez utiliser pour l'entrée et votre va et vient

Je prend mon wago ou équivalent, je branche :

  • la phase de l'interrupteur va et vient (bas)

  • une navette (pour alimenter mon second interrupteur du premier étage)

  • le wago une borne sur la navette restante

  • je referme avec un "obturateur" pour avoir une finition propre

Au premier étage j'ai toujours mon interrupteur classique fonctionnel je le laisse connecté pour savoir laquelle des deux navettes est sur notre wago (avec la phase). L'autre navette n'est pas connectée pour l'instant.

N'oubliez pas de re-couper le disjoncteur !

Démonter l'interrupteur du haut. Marquer d'un morceau de scotch electrique rouge de préférence la navette avec la phase.

Sur l'autre navette mettre le deuxième wago une borne.

Connecter votre interrupteur Xiaomi du haut un bouton (ou deux boutons) en plaçant :

  • la phase obtenu par le Wago et par la navette avec le scotch rouge sur la borne "L" de votre interrupteur

  • le fil précédent allant sur votre ampoule sur la borne "L1" de votre interrupteur.

Refixer l'interrupteur et tester le fonctionnement de celui-ci.

Si vous avez un interrupteur deux boutons en haut le deuxieme bouton peut également être utilisé en mode sans fil pour un autre appareil ou êteindre votre entrée d'en haut par exemple (a voir si c'est utile).

Pour que le va et vient soit fonctionnel, il ne vous reste plus qu'a activer le mode sans fil sur le deuxième bouton de votre interrupteur de l'entrée. Celui-ci doit déclencher sans fil l'interrupteur de l'escalier qui se trouve en haut.

J'ai personnellement trois va et vient qui fonctionnent ainsi grâce à plusieurs boutons situés a proximité les uns des autres.


Optimisation de pdf grâce à ImageMagick

Posté le mar. 23 avril 2019 • Tags : imagemagick, pdf

Ayant de gros pdf de 3Mo je cherchais une solution pour les optimiser en ligne de commande.

ImageMagick est doté de l'outil convert qui permet de convertir des images.

Avec la commande suivante j'ai pu convertir un PDF de 3,5Mo en un PDF de 1,5Mo en compressant les pages au format JPG 90%.

convert -density 300x300 -quality 9 -compress jpeg input.pdf output.pdf

Update i3-sensible-terminal

Posté le dim. 24 mars 2019 • Tags : linux

En voulant modifier ma config de i3 je me suis aperçu que j'avais modifié la ligne :

bindsym $mod+Return exec i3-sensible-terminal

par la ligne suivante :

bindsym $mod+Return exec urxvt

Je préfere ne pas modifier cette ligne à chaque installation de i3wm, donc je réédite ma ligne pour utiliser par défaut i3-sensible-terminal.

Pour modifier le terminal executé par la commande i3-sensible-terminal il suffit donc de lancer la commande suivante puis de choisir dans mon cas urxvt :

update-alternatives --config x-terminal-emulator

Bien nommer ses fichiers

Posté le jeu. 13 décembre 2018 • Tags : file, date

Pour bien nommer vos fichiers une méthode simple est de mettre la date dans le nom du fichier mais… comment faire ?

Il faut mettre Lundi-10-Décembre-2018 dans le nom du fichier ? Non.

Il faut donc mettre 10-12-2018 dans le nom du fichier ? Toujours pas.

Ok donc comment faire ? Pour moi la méthode la plus simple pour bien trier vos fichiers par ordre chronologique, est de commencer par l'année puis le mois puis le jour etc… On précise de plus en plus. Donc pour le Lundi 10 Décembre 2018 je vais écrire 20181210 ou 2018-12-10.

Pourquoi ?

Lorsque l'on va trier nos fichiers avec le premier cas nous aurons :

Lundi-10-Décembre-2018
Lundi-11-Décembre-2017
Mardi-11-Décembre-2018
Mardi-12-Décembre-2017

Le trie se fait jour par jour donc pas du tout par ordre chronologique. Nous ne retenons pas cette solution.

Avec le second exemple :

10-12-2018 (Lundi 10 décembre 2018)
11-12-2018 (Mardi 11 décembre 2018)
11-12-2017 (Lundi 11 décembre 2017)
12-12-2017 (Mardi 12 décembre 2017)

Le trie se fait par jour, puis par mois, puis par année, donc nous avons tous les 10 décembre puis les 11 décembre etc… ce n'est toujours pas par ordre chronologique. Nous ne retenons pas cette solution.

Avec le dernier exemple :

2017-12-10 (Lundi 10 décembre 2017)
2017-12-11 (Mardi 11 décembre 2017)
2018-12-11 (Lundi 11 décembre 2018)
2018-12-12 (Mardi 12 décembre 2018)

C'est bien par ordre chronologique, l'année puis le mois, puis le jour, c'est donc comme ça que nous devons écrire nos fichiers avec une date.

Si vous faites une photo de vous chaque année en septembre vous aurez donc photo.jpg qui sera nommer comme suit :

2016-09-photo.jpg
2017-09-photo.jpg
2018-09-photo.jpg

On a pas besoin de préciser le jour dans le cas précédent car on a qu'une photo par an en septembre d'ailleurs on pourrait même simplifier en :

2016-photo.jpg
2017-photo.jpg
2018-photo.jpg

Personnellement je préfère toujours mettre mes fichiers sous la forme 2018-09-01-nom-de-fichier.ext ce qui permet d'avoir toujours la date du jour.


Ajouter un disque a une grappe RAID MDADM

Posté le mer. 05 décembre 2018 • Tags : raid, mdadm

Ayant enfin fini la migration de mon NAS vers mon nouveau NAS, j'ai récupéré mon troisième disque de 10To pour l'ajouter à ma grappe RAID1 qui contient déjà 2 disques de 10To.

Pour ajouter le disque /dev/sdd dans la grappe /dev/md0 il faut tapper la commande suivante :

mdadm --manage /dev/md0 --add /dev/sdd1

Si vous n'avez pas de chance comme moi, vous aurez le message d'erreur suivant :

mdadm: Cannot open /dev/sdd1: Device or resource busy

Il faut donc redémarrer la machine et éditer le grub à la main… (avec la touche e), puis ajouter dans la ligne avec le kernel nodmraid puis appuyer sur f10 ou b pour booter.

Une fois la machine prête j'ai pu lancer ma commande cette fois-ci avec succès :

mdadm --manage /dev/md0 --add /dev/sdd1
mdadm: added /dev/sdd1

Il faut maintenant dire à MDADM qu'on a un raid1 sur 3 disques avec la commande suivante :

mdadm --grow /dev/md0 --raid-device=3
raid_disks for /dev/md0 set to 3

Vous pouvez maintenant faire un watch pour voir l'avancement de la copie sur le troisième disque :

watch cat /proc/mdstat

Installer et utiliser lxc

Posté le lun. 30 juillet 2018 • Tags : linux, lxc, debian

Installation de lxc sur debian :

apt-get install lxc

Création d'un conteneur lxc sous debian :

lxc-create -n debian9 -t download

Sélectionner :

distribution: debian
Release: strech
Architecture: amd64

Lister les conteneurs :

lxc-ls -f
NAME        STATE   AUTOSTART GROUPS IPV4 IPV6
debian9     STOPPED 0         -      -    -

Copier debian9 en conteneur debian pour l'utiliser pour un wiki par exemple :

lxc-copy -n debian9 -N debian9wiki -B overlay -s

Vérifions :

lxc-ls -f
NAME        STATE   AUTOSTART GROUPS IPV4 IPV6
debian9     STOPPED 0         -      -    -
debian9wiki STOPPED 0         -      -    -

Lancer debian9wiki :

lxc-start -n debian9wiki

Vérifions :

lxc-ls -f
NAME        STATE   AUTOSTART GROUPS IPV4           IPV6
debian9     STOPPED 0         -      -              -
debian9wiki RUNNING 0         -      192.168.60.140 -

Se connecter a l'aide de lxc-attach :

lxc-attach -n debian9wiki

Installer openssh-server

apt-get install openssh-server

Ajouter votre utilisateur user :

useradd user

Se déconnecter du conteneur et se connecter via ssh avec votre utilisateur user.


Installation d'un controlleur Unifi sur Raspberry Pi 3

Posté le sam. 21 octobre 2017 • Tags : raspberry, unifi, debian, linux

Pour commencer il faut télécharger la dernière version de raspbian sur le site officiel raspberrypi.org. Actuellement c'est 2017-09-07-raspbian-stretch-lite.zip.

Il faut ensuite extraire l'image de l'archive :

unzip 2017-09-07-raspbian-stretch-lite.zip

Puis mettre l'image sur une carte micro sd, j'utilise la commande dmesg pour voir le nom du périphérique USB sur ma machine :

[5371729.056039] usb-storage 2-1.3:1.0: USB Mass Storage device detected
[5371729.056115] scsi host5: usb-storage 2-1.3:1.0
[5371730.058300] scsi 5:0:0:0: Direct-Access     Single   Flash Reader     1.00 PQ: 0 ANSI: 0
[5371730.058447] sd 5:0:0:0: Attached scsi generic sg1 type 0
[5371730.509370] sd 5:0:0:0: [sdb] 15759360 512-byte logical blocks: (8.07 GB/7.51 GiB)
[5371730.510383] sd 5:0:0:0: [sdb] Write Protect is off
[5371730.510386] sd 5:0:0:0: [sdb] Mode Sense: 03 00 00 00
[5371730.511384] sd 5:0:0:0: [sdb] No Caching mode page found
[5371730.511386] sd 5:0:0:0: [sdb] Assuming drive cache: write through
[5371730.516135]  sdb: sdb1
[5371730.519381] sd 5:0:0:0: [sdb] Attached SCSI removable disk

Je copie donc l'image sur /dev/sdb « ma microsd d'après dmesg.

dd bs=4M if=/home/choiz/2017-09-07-raspbian-stretch-lite.img of=/dev/sdb conv=fsync

Une fois la copie terminée, je déconnecte la micro sd et je démarre le Raspberry Pi.

dd bs=4M if=2017-09-07-raspbian-stretch-lite.img of=/dev/sdb conv=fsync
442+1 enregistrements lus
442+1 enregistrements écrits
1854590976 bytes (1,9 GB, 1,7 GiB) copied, 288,12 s, 6,4 MB/s

Une fois le Raspberry Pi démarrer s'identifier avec : pi / raspberry (attention le clavier est en qwerty pour l'instant donc tapper rqspberry en mot de passe ;-)

Puis tappez la commande sudo bash pour passer en root puis raspi-config pour configurer votre Raspberry Pi.

  1. Changer les locales (4 Localisation Option, puis I1 Change Locale), décocher en_GB.UTF-8 UTF-8 et cocher fr_FR.UTF-8 UTF-8. "Default local for the system environment:" choisir fr_FR.UTF-8

  2. Changer le timezone (4 Localisation Option, puis I2 Change Timezone), choisir Europe, puis Paris.

  3. Changer le layout du clavier (4 Localisation Option, puis I3 Change Keyboard Layout), choisir Generic 105-key (Intl) PC, Other, French, French - French (Azerty), The Default for keybord layout, et pour finir : No compose key.

  4. Changer le pays pour le wifi (4 Localisation Option, puis I4 Change Wi-fi Country), choisir FR France.

  5. Ajouter le SSH (5 Interfacing Options, P2 SSH) Puis répondre "yes" pour activer le serveur SSH.

  6. Choisir 7 Advanced Options, A1 Expand Filesystem.

  7. Choisir 8 Update pour mettre à jour raspbian.

  8. 2 Hostname si vous voulez changer le nom de votre raspberry par exemple "raspberrypi3".

9: Finish, et redémarrer.

Récuperer l'adresse ip du raspberry pi pour se connecter dessus via SSH.

ssh pi@adresseip

Nous changeons le mot de passe de l'utilisateur 'pi'

pi@raspberry3:~ $ passwd

pi@raspberry3:~ $ sudo bash

root@raspberrypi3:/home/pi# apt install dirmngr -y

root@raspberrypi3:/home/pi# echo 'deb http://www.ubnt.com/downloads/unifi/debian stable ubiquiti' | tee -a /etc/apt/sources.list.d/ubnt.list > /dev/null

root@raspberrypi3:/home/pi# apt-key adv --keyserver keyserver.ubuntu.com --recv C0A52C50

root@raspberrypi3:/home/pi# apt update -y

root@raspberrypi3:/home/pi# apt install unifi -y

root@raspberrypi3:/home/pi# echo 'ENABLE_MONGODB=no' | tee -a /etc/mongodb.conf > /dev/null

root@raspberrypi3:/home/pi# apt install oracle-java8-jdk -y

root@raspberrypi3:/home/pi# echo 'JAVA_HOME=/usr/lib/jvm/jdk-8-oracle-arm32-vfp-hflt' | tee /etc/default/unifi > /dev/null

root@raspberrypi3:/home/pi# reboot

Une fois le raspberry pi démarrer se rendre sur https://ip_raspberry:8443 vous devriez avoir votre interface Unifi disponible.

Mettre à jour votre materiel unifi depuis le controlleur. Puis sur le raspberry pi nous allons changer d'adresse ip pour avoir un réseau séparé.

ssh pi@adresseip

pi@raspberry3:~ $ sudo vi /etc/network/interfaces

Ajouter à la fin du fichier :

auto eth0
iface eth0 inet static
    address 10.0.0.10
    network 255.255.255.0
    gateway 10.0.0.1

Enregistrer le fichier et quitter (ne pas rédémarrer le pi pour l'instant).

Retourner sur l'interface d'unifi et modifier l'adresse ip de votre réseau LAN.

Gateway/Subnet 10.0.0.1/24

Cliquer sur "UPDATE DHCP RANGE" puis enregistrer vos modifications dans l'onglet Devices votre USG devrait être en "provisionning". Redémarrez le Raspberry Pi avec sudo reboot puis vous reconnecter au controlleur avec la nouvelle adresse ip : https://10.0.0.10:8443.


Faire du NAT avec Proxmox

Posté le dim. 15 octobre 2017 • Tags : network, proxmox

L'idée est d'utiliser qu'une seule adresse ip public pour plusieurs VM. Comme à la maison vous avez des adresses ip en 192.168.x.x notre serveur proxmox peut faire la même chose.

Ip Public de proxmox : 11.22.33.44 Ip Privé de proxmox : 10.0.0.254

Je me connect en ssh à Proxmox et je modifie le fichier /etc/network/interfaces j'ajoute à la fin du fichier :

auto vmbr2
iface vmbr2 inet static
    address 10.0.0.254
    netmask 255.255.255.0
    bridge_ports none
    bridge_stp off
    bridge_fd 0
    post-up echo 1 > /proc/sys/net/ipv4/ip_forward
    post-up iptables -t nat -A POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE
    post-down iptables -t nat -D POSTROUTING -s '10.0.0.0/24' -o vmbr0 -j MASQUERADE

On peut également ajouter si on veut différents ports qu'on ouvre vers l'exterieur vers tel ou tel VM ou conteneur. Par exemple j'ouvre le port 22 de mon conteneur avec l'ip 10.0.0.1 sur le port 8022 de mon ip public :

    post-up iptables -t nat -A PREROUTING -i vmbr0 -p tcp --dport 8022 -j DNAT --to 10.0.0.1:22
    post-down iptables -t nat -D PREROUTING -i vmbr0 -p tcp --dport 8022 -j DNAT --to 10.0.0.1:22

Ensuite enregistrer le fichier /etc/network/interfaces puis relancer les interfaces réseaux

service networking restart

Lorsque vous allez faire la configuration réseau d'une VM ou d'un conteneur, il suffit de renseigner une adresse ip de la plage 10.0.0.0/24

Exemple :

auto eth0
iface eth0 inet static
    address 10.0.0.1
    netmask 255.255.255.0
    gateway 10.0.0.254

Puis faites un ping depuis votre conteneur vers l'ip 10.0.0.254, puis vers un site internet duckduckgo.com par exemple.


Créer un partage NFS

Posté le dim. 15 octobre 2017 • Tags : nfs, linux, debian, gentoo

Pour installer un serveur NFS sur Debian voici la marche à suivre :

apt install nfs-kernel-server

Une fois le paquet installé, il faut modifier la configuration pour ajouter votre partage.

Editer le fichier /etc/exports

vim /etc/exports

J'ajoute dans le fichier le dossier à partager /home/user/share et l'adresse du ou des clients qui peuvent accèder a ce partage 10.0.0.1(rw,sync,no_subtree_check) ici mon client a l'adresse ip 10.0.0.1 ce qui donne :

/home/user/share 10.0.0.1(rw,sync,no_subtree_check)

Recharger le service :

service nfs-kernel-server reload

Vérifier que votre partage est bien actif :

showmount -e

Côté client, j'ai installé sur Gentoo : net-fs/nfs-utils

emerge -a net-fs/nfs-utils

Sur Debian installer le paquet : nfs-common

apt install nfs-common

Ensuite configurer votre fichier /etc/fstab

vim /etc/fstab

Ajouter à la fin du fichier l'ip de votre partage avec le nom local puis le point de montage sur votre client.

10.0.0.100:/home/user/share /home/user/nfs-nas nfs defaults,user,auto,noatime,intr 0 0

Puis monter le nouveau partage avec la commande mount -a

Si vous faites la commande ls /home/user/nfs-nas vous devriez voir les fichiers qui se trouvent sur votre serveur.