walk-hoary

Archives pour la catégorie Non classé

Home assistant supervised sur Raspberry Pi

Je vous détail dans cet article l’installation de Home-assistant supervised dans un container sur RaspberryPi.

Introduction

Home assistant peut être installé de 4 façon différentes :

  • Hassio OS : Vous utilisez leur système d’exploitation (basé sur alpine)
  • Container : Vous lancez home assistant dans un docker à partir d’un docker-compose
  • Supervised : Vous installez les services de gestion sur votre débian qui s’occuperont de configurer les containers
  • Core : Vous installez tout à la main (python)

J’ai choisis de m’appuyer sur leur manager supervised, les 2 grands interrêts que je vois sont que j’ai la main sur le container où tournera supervised, et qu’il me permet d’installer des add-ons facilement.

Cela signifie que Home-assistant tournera dans des containers dockers géré par supervised qui tournera dans un container LXC de mon Raspberry Pi.

Je pars du principe que vous avez déjà un Raspberry Pi fonctionnel avec une interface bridge (pour des raisons précisés ici).

Installation de LXC et création d’un container attaché au réseau

Installation LXC :

apt-get install lxc

Création du container qui accueillera supervised de Home-assistant :

lxc-create -t download -n homeassistant -- -d debian -r bookworm -a arm64

On édit la configuration du container pour qu’il soit attaché au bon réseau avec l’ip 10.35.7.10, pour cela, on édit le fichier /var/lib/lxc/homeassistant/config ainsi :

lxc.net.0.type = veth
lxc.net.0.link = br357
lxc.net.0.flags = up
lxc.net.0.ipv4.address = 10.35.7.10/24
lxc.net.0.ipv4.gateway = 10.35.7.254

On lance le container et on s’attache dessus :

lxc-start homeassistant

lxc-attach homeassistant

Installation de supervised

A partir d’ici, on est dans le shell du container « homeassistant » (voir commande lxc-attach) qui lancera supervised. On installe les dépendances :

apt install apparmor cifs-utils curl dbus jq libglib2.0-bin lsb-release network-manager nfs-common systemd-journal-remote systemd-resolved udisks2 wget -y

On installe docker :

curl -fsSL get.docker.com | sh

On installe os-agent :

wget https://github.com/home-assistant/os-agent/releases/download/1.6.0/os-agent_1.6.0_linux_aarch64.deb
apt install ./os-agent_1.6.0_linux_aarch64.deb

On Installe les dépendances pour supervised :

wget -O homeassistant-supervised.deb https://github.com/home-assistant/supervised-installer/releases/latest/download/homeassistant-supervised.deb
apt install ./homeassistant-supervised.deb

Répondez quemu-aarch64 quand il vous demandera l’architecture. Attendez quelques minutes qui supervised démarre les instances home-assistant.

Vous pouvez vous rendre sur la page http://10.35.7.85:8123 comme indiqué dans la console, il vous sera proposé de configurer Home-assistant à travers un assistant web.

Remarques

En utilisant Supervised de Home-assistant dans un container LXC, certaines technos ne seront pas compatibles. J’en ai relevé 3 et restent facultatives sans retirer des fonctionnalités à Home-assistant :

  • cgroup v1 (on est en v2)
  • NetworkManager
  • Apparmor

J’ai pu configurer NetworkManager, mais je ne pense pas que cela soit nécessaire. J’ai tout de même eu le problème de « homeassistant.components.hassio.handler.HassioAPIError: 'HomeAssistantCore.update' blocked from execution, no host internet connection« , alors que j’arrive à pinguer depuis le container et même depuis chaque docker…

J’ai réglé ce souci en bypassant ce check avec la commande suivante dans le container lxc :

ha jobs options --ignore-conditions internet_host

En faisant cela, vous aurez une autre alerte ce qui est normal : Ignored job conditions

Installation la dernière version Firefox sous Debian

Par défaut, sur les versions stables et testing, c’est Firefox-ESR qui est installé. Je vous explique ici comment installer à la place, la dernière version courante grâce aux dépôts officiels Debian.

Ici, nous nous appuierons sur le dépôts unstable de Debian en les passant à une priorité faible afin qu’il ne passe pas notre système en unstable. Puis nous installerons Firefox en précisant vouloir utiliser ce dépôt.

Lets go!…

Désinstallez firefox-esr

# apt remove firefox-esr*

Ajoutez les dépôts instables de chez Debian

# echo "deb http://deb.debian.org/debian/ unstable main contrib non-free" | tee /etc/apt/sources.list.d/debian-unstable.list

Passez cette source unstable en faible priorité

# cat <<EOF tee /etc/apt/preferences.d/99pin-unstable
Package: *
Pin: release a=stable
Pin-Priority: 900

Package: *
Pin: release a=unstable
Pin-Priority: 10
EOF

Installez Firefox

# apt update
# apt install -t unstable firefox firefox-l10n-fr

Tags: ,

Syncthing

Synchroniser des répertoire n’importe où et avec n’importe quoi.

Syncthing est un logiciel qui vous permet de synchroniser un répertoire avec une autre instance de syncthing en peer to peer sans ouvrir de ports. Il tourne en tâche de fond, et permet beaucoup d’option pour couvrir un tas de cas d’utilisation. En voici quelques uns :

  • Avoir une sauvegarde de votre disque d:\ sur un nas avec rétention des données sur 30 jours
  • Avoir un mirroir de vos photos ou traces GPS de votre smartphone sur votre pc uniquement par le wifi
  • Partager des documents d’un événement avec 3 autres bénévoles d’une association en limitant la bande passante sortante
  • Partager en lecture seule votre bibliothèque de musique avec un ami

Voici son interface de gestion, il s’agit d’une simple page web. Cela signifie que vous pouvez l’installer n’importe où, un navigateur suffit pour le configurer.

https://syncthing.net/img/screenshot-dark.png
Interface de contrôle

Principe de fonctionnement

Syncthing fonctionne avec 2 niveaux d’association : association d’appareil (nous parlerons d’instance de syncthing) et association de dossier (nous parlerons de partage). Avant de partager quelque chose avec une autre instance, vous devez d’abord associer votre 2 instances.

L’identifiant d’instance

Il s’agit ‘est votre identifiant unique à votre instance. C’est grâce à elle que les autres instance vont vous trouver et demander de s’associer. L’association ne peux se faire que si les 2 personnes ont acceptées (l’un fait la demande en entrant l’identifiant, l’autre doit accepter via une notification sur l’interface de gestion).

Cet identifiant est un chaine de caractère, et peut être affiché sous forme de qrcode pour une facilité d’association avec un smartphone. Si vous êtes sur le même réseau, votre instance peut vous la proposer au moment d’associer une nouvelle instance.

L’identifiant de partage

Ils permettent d’identifier un partages parmi votre instance mais également parmi toutes les instances auxquels vous êtes associé. L’identifiant de partage devrait toujours être unique pour ne pas rentrer en conflit avec un partage d’une autre instance.

Le partage

Une fois que vous avez associé votre instance à une autre et défini un partage, vous pouvez choisir avec quelle instance vous souhaitez associer votre partage.

Réglages

Plusieurs options existent également pour contrôler et affiner comment est fait le partage :

  • Choisir ou non une rétention des fichiers sur une durée, un nombre de version ou même en appelant un script
  • Exclure des fichiers
  • Faire un partage qu’en envoi, en réception ou les deux
  • Limiter l’occupation disque

D’autres option existent au niveau de l’association avec un autre instance :

  • Limiter la bande-passante montante / descendante
  • Imposer une adresse ip fixe (réseau local uniquement par exemple)
  • Mode « appareil introducteur ». A éviter en général. Cela permet d’associer automatiquement d’autres instances sans les avoir validé ; on lui donne donc entière confiance.
  • Mode « Accepter automatiquement ». A éviter en génral. Cela permet de créer le partage (et le dossier donc) si une instance nous partage quelque chose.

Enfin, vous pouvez ouvrir l’interface de gestion sur votre réseau local en y paramétrant un mot de passe par exemple.

Sur syncthing mobile, vous pouvez également limiter l’execution de la synchronisation uniquement lorsque vous êtes en charge et sur certains wifis…

Terminal Windows

Il existe une multitude de gestionnaire de terminal sous Windows, j’utilisais jusqu’à présent ConEmu. Il me permettait de rassembler des terminaux de type Command Windows, Cygwin, powershell et Debian en WSL, Mono. Il fallait cependant le configurer pour qu’il découvre les différents terminaux de ma machine.

J’ai essayé Terminal Windows, il me semble très prometteur puisque j’ai pas eu grand chose à faire pour y être à l’aise.

Où le trouver ?

Il est en version preview. Vous le trouverez dans le Windows Store sous le nom de Windows Terminal.

Il est disponible aussi via chocolate si vous l’utilisez (l’APT/Ansible sous Windows) via un choco install microsoft-windows-terminal

Que propose t-il ?

  • Un terminal multi-onglets en couleur, réactif et rapide à se lancer
  • Un système de copier-coller commun aux containers WSL
  • La proposition de terminaux : Command, PowerShell, Wsl, AzureCloud shell…
  • Un code source ouvert et une une communauté sous github.

La configuration se fait avec un bête fichier JSON (Attention, il faut que votre système sache ouvrir les fichiers JSON, sinon ça ne fait rien quand on clique sur « Settings »).

Vous utilisez Oh My Zsh ?

J’utilise Oh-my-zsh sous WSL (il existe aussi Oh-My-Posh pour PowerShell) qui rend la console plus agréable.

Pour installer zsh, il faut faut déjà git et zsh, puis rentrez cette commande dans votre shell :

sh -c "$(curl -fsSL https://raw.github.com/ohmyzsh/ohmyzsh/master/tools/install.sh)"

Installez la police Delugia.Nerd.Font.ttf de chez adam7/delugia-code.

Remplacez le thème par défaut par agnoster avec la commande :

sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="agnoster"/g' ~/.zshrc

Puis ajouter ceci dans la la section « profiles » -> « defaults » :

"fontFace" : "Delugia Nerd Font"

Relancer un shell.

Liseuse non surveillée

Pour cette fin d’année (2019), j’ai voulu me prendre une liseuse que je puisse garder avec moi lors de moment divagantes. J’ai cherché un modèle promouvant le libre, et surtout non rattaché à des compte cloud dans tout les sens. Bref je voulais une liseuse, pas un tablette connectée déguisée.

Je suis d’abord tombé sur Booken qui me semble être le plus rapprochant aujourd’hui (Français en plus). Malheureusement un autre critère qu’est le style de tablette m’a fait penché vers Kobo. En effet bien que provenant de rakuten, il existe pour cette dernière, la Clara HD à 100€ chez darty, un hack pour ne pas avoir de compte et être maitre du système (un accès root via telnet).

Image associée
Kobo Clara HD (sortie en 2017 – oui les liseuse n’évoluent pas vraiment)

Bypass de la connexion

A l’allumage, la liseuse vous propose de vous connecter. Dites non. La liseuse passera alors en disque USB. Il vous suffira de lancer sur ce disque monté :

sqlite3 .kobo/KoboReader.sqlite
INSERT INTO user(UserID,UserKey) VALUES('1','');
CTRL+D pour quitter

La tablette va alors basculer en anonymous au bout de quelques secondes. Vous pouvez à présent l’utiliser comme liseuse non connecter en plaçant vos epub sur le disque monté.

Gestion de vos ebooks

Je vous conseille d’utiliser le logiciel libre calibre pour gérer vos livres avec la tablette. Il s’agit d’une référence libre pour gérer vos e-books (propriétaires ou non) sur vos liseuses (propriétaires ou non) à travers la connexion USB.

Résultat de recherche d'images pour "calibre"

Utiliser NFS dans openvz/proxmox

L’usage de NFS est possible dans openvz (je l’utilise avec proxmox 3.3 via wheezy). Je souhaite vous donner quelques prérequis à connaitre :

Monter un serveur NFS sous un conteneur VZ demande :

  • Avoir le module nfs chargé sur l’hyperviseur
  • Avoir la feature nfs activée dans le conteneur
  • Avoir partagé un répertoire NFS. exemple pour moi : /mnt/datas      10.9.1.0/24(ro,sync,no_subtree_check,no_root_squash)

Monter un partage NFS depuis un conteneur VZ demande :

  • Avoir le module nfs chargé sur l’hyperviseur
  • Avoir la feature nfs activée dans le conteneur
  • Monter le partage via le fichier mount de proxmox et non depuis le fstab du conteneur (si vous utilisez le fstab, votre VM ne demarrera pas, si vous faites un mount depuis le conteneur, vous aurez « mount.nfs: No such device »). Ci dessous un exemple de mon /etc/vz/conf/116.mount que j’ai crée (le point de montage doit exister sinon le conteneur ne démarre pas) :

#!/bin/bash
source /etc/vz/vz.conf
source ${VE_CONFFILE}
mount -t nfs 10.9.1.222:/mnt/datas ${VE_ROOT}/mnt/remote-datas

 

Script bash mono-instance

Voici un petit script bash à inclure dans votre script si vous souhaitez qu’il ne soit lancé qu’une seule fois. Je l’ai fait à La Rache dans le but qu’un rsync ne se lance pas plusieurs fois.

Vous pouvez l’inclure par un simple :

. /usr/local/bin/run_once.sh

 

/usr/local/bin/run_once.sh

#!/bin/sh
SCRIPTNAME=`basename $0`
export LOCKSYNC="/var/run/$SCRIPTNAME.lock"
PID=$$
echo "["`date +"%Y/%m/%d %H:%M:%S"`"] Demarrage du script $0"
if [ -f "$LOCKSYNC" ]
then
echo "Fichier lock "$LOCKSYNC" present. Deja en cours ?"
PIDLOCK=`cat $LOCKSYNC`
if [ -f /proc/$PIDLOCK/exe ]
then
echo "Le process semble etre toujours en cours. Lancement de $SCRIPTNAME impossible."
exit
else
echo "Le process ne semble plus etre en cours, Lancement de $SCRIPTNAME"
rm $LOCKSYNC
fi
fi
echo "Creation du lock "$LOCKSYNC
echo $PID > $LOCKSYNC

Pour le fonctionnement, il va créer un fichier lock correspondant au nom du script qui indiquera si le programme est déjà lancé ou non. Si le lock est présent, le script va également vérifier que le processus est toujours actif.

Je m’en sers dans la machine proxy transparent qui sert de dépôt locaux lors de nos install party. Cela est particulièrement utile car nous sommes plusieurs admins sur la machine en question.

Et joyeuses fêtes !

Services – Non je ne suis pas mort

Petit coucou rapide… J’ai toujours fait en sorte que les quelques services sur ce site soit fonctionnel car je m’en sert souvent pour ne pas dire tous quotidiennement. Je vous les fait donc partager car il s’agit de logiciel libres.

Les logiciels que je mets à disposition

Partage de texte

http://paste.qth.fr

Il s’agit de zerobin, un pastebin dont le contenu coté serveur est chiffré par la clé contenue dans l’url. Il a des options interessante comme le fil de conversation ou la destruction après lecture.

Upload d’image

http://pix.qth.fr

Lui est très récent, il permet de mettre en ligne une image. j’utilisais toujours celui des TDCT ou toile-libre.org mais j’ai fini par créer le miens.

Rédaction collaborative

http://pad.qth.fr

Il s’agit d’un framapad pour écrire un texte avec plusieurs participant (en live) en donnant simplement l’URL du « pad ».

Agrégateur de RSS

http://rss.qth.fr

C’est mon lecteur RSS en ligne, il est basé sous tiny-tiny-rss. Il a un client sous Android très bien fait. Je l’utilise plusieurs fois par jour et le recommande si vous avez beaucoup de flux à surveiller. Si cela vous interesse, vous pouvez l’auto-héberger ou vous créer un compte sur le miens. (Places limitées)

Gestionnaire de bookmarks

http://links.qth.fr

Il s’agit là de mes bookmarks personnels que je rend public (ou non) en y indiquant une description. Ces bookmarks peuvent être surveillées par flux rss. Cela est basé sous shaarli, je l’utilise plusieurs fois par jour de n’importe où. (et la rivière de shaarlis ici)

Sondages

http://studs.qth.fr/

Pour créer des sondages en ligne. (de studs. Il en existe d’autres tel que papillon)

Redmine

http://labs.qth.fr

Pour gérer mes projets personnels. Il s’agit là de projets relativement fermés ou peu interessant pour le monde.

Statusnet

http://status.qth.fr/

Pourquoi je le garde ? Car il fonctionne bien ! Malheureusement peu utilisé.

Mindmap

http://mindmap.qth.fr/

Pour faire rapidement des mindmap (de mindmaps)

Dessins SVG en ligne

http://svg.qth.fr/

Pour dessiner vite fait… (de svg-edit)

Les autres services que j’utilise

Yourls pour créer des liens courts ou mémotechnique. Cela permet en autre de gérer la destination de vos liens ou visualiser les stats car il s’agit de redirection.

Subsonic pour écouter ma musique ou la partager. Un bonne application cliente sous android existe aussi.

Redmine pour la lecture de mes emails

owncloud pour la gestion de mes contacts et de mon agenda. Je l’utilise sur mon android afin de me libérer de google sur ces 2 aspects.

piwigo pour gérer mes statistiques à la façon google analytics.

Booter en PXE via USB ou CD-ROM

Certaines cartes mère ne permettent pas le boot PXE. Une solution existe : GPXE.

GPXE est bootable sur de mutiples supports : USB, CD-ROM… et permet d’éffectuer un boot réseau.

  • Rendez vous sur la page http://rom-o-matic.net/gpxe/gpxe-1.0.1/contrib/rom-o-matic/build.php
  • Choisissez le type d’image souhaité (usb pour les clés, iso pour les cdrom)
  • Ajoutez les commandes suivantes (Adapatez l’ip à celui de votre serveur tftp)
dhcp net0
set next-server 10.9.0.1
set filename pxelinux.0
autoboot

Tags: , , ,

Un gestionnaire de projet

Le gestionnaire de projet redmine est passé en version stable 1.0.0. Je l’ai donc mis à jour sur http://labs.qth.fr .

J’y stocke les différents projets qui ne sont pas attachés à une autre forge. Voici les quelques projets :

  • Pizza : Un serveur pour install-party faisant proxy-cache-dépots de distribution de façon transparante…
  • FileTransferManager : Un gestionnaire de transfert en arrière plan basé sur un démon bash.
  • Table Touch : Une table ou dalle tactile basée sur de l’infrarouge et une webcam.
  • QTH : Les outils des serveurs QTH que je partage.
  • http://labs.qth.fr

    Tags: , ,

    Je n'aime pas les boîtes noires.