đź“ť Editer ses fichiers depuis HA (sans l'add-on File Editor)

Ceux qui ne disposent pas du Superviseur (voir les méthodes d’installation) et qui entendent parler d’édition de fichiers directement depuis HA via File Editor alors qu’ils ne peuvent pas installer d’add-on sont parfois frustrés :frowning_face:

Et bien voici une méthode à base de container Docker afin de rendre tout cela possible :+1:

Il s’agit de profiter du container qu’utilise HA et de l’utiliser de la même façon.

Voici donc le compose que j’utilise et que vous pouvez ajouter dans les Stacks de Portainer par exemple :wink:

################################################
  # Configurator
################################################
  hass-configurator:
    image: "causticlab/hass-configurator-docker:arm"  #<-- le container pour un rpi4 par exemple
    restart: always
    ports:
      - "8124:3218/tcp"   #<-- File Editor sera disponible Ă  @ip:8124
    volumes:
      - "./data/configurator-config:/config" #le chemin relatif (absolu possible) vers le dossier de configuration du container
      - "/home/homeassistant/.homeassistant:/hass-config" #Chemin absolu (relatif possible) vers le dossier de configuration de l'instance HA
    environment:
      - HC_BASEPATH=/hass-config #<-- Le dossier au démarrage de l'application web (arbo du container)
      - HC_ENFORCE_BASEPATH=true #<-- Limiter la visualisation Ă  l'arborescence (impossible de remonter plus haut que le chemin du volume pointant sur HC_BASEPATH
      - HC_DIRSFIRST=true #<-- Afficher les dossiers en premier (plutôt que mélanger avec les fichiers par ordre alphabétique)

Il est possible de se connecter au API de HA, toutes les informations se trouvent sur le Wiki :

Personnellement, l’API ne m’intéresse pas, je veux juste pouvoir modifier ma configuration depuis HA (quand je suis en déplacement surtout sinon c’est VS Code / Notepad++)

Et si nous allions plus loin ?
Si on met à false la variable HC_ENFORCE_BASEPATH et que l’on se promène dans l’arborescence du container, on trouve des dossiers vides…
Et bien nous allons les remplir :yum:

On va ajouter un volume afin de pointer n’importe quel dossier de notre hôte (où est installé Docker) dans File Editor afin de le rendre accessible à travers lui (et toujours depuis HA).

Par exemple, avec ce compose, on monte dans le répertoire /mnt de File Editor le dossier (et sous-dossier) de l’utilisateur que l’on veut :

################################################
  # Configurator
################################################
  hass-configurator:
    image: "causticlab/hass-configurator-docker:arm"  #<-- le container
    restart: always
    ports:
      - "8124:3218/tcp"   #<-- File Editor sera disponible Ă  @ip:8124
    volumes:
      - "./data/configurator-config:/config" #le chemin relatif (absolu possible) vers le dossier de configuration du container
      - "/home/homeassistant/.homeassistant:/hass-config" #Chemin absolu (relatif possible) vers le dossier de configuration de l'instance HA
      - "/home/homeassistant:/mnt" #Chemin absolu (relatif possible) vers le dossier de l'utilisateur monté dans le dossier /mnt du container
    environment:
      - HC_BASEPATH=/hass-config #<-- Le dossier au démarrage de l'application web (arbo du container)
      - HC_ENFORCE_BASEPATH=true #<-- Limiter la visualisation Ă  l'arborescence (impossible de remonter plus haut que le chemin du volume pointant sur HC_BASEPATH
      - HC_DIRSFIRST=true #<-- Afficher les dossiers en premier (plutôt que mélanger avec les fichiers par ordre alphabétique)

Voilà, vous l’aurez compris, si vous mettez le volume :

     volumes:
       - "/:/mnt"

Vous monter la racine de votre PC hôte dans le container… ( :warning: Dangereux)

Et comment y accéder dans HA ?

Et bien en passant par les panel_iframe :+1:

Ajouter ces lignes Ă  votre fichier configuration.yaml :

  configurator:
    title: "Editeur de fichiers" #Le titre dans la barre latérale
    #url: "http://@IP:8124"  cette url ne fonctionne que depuis votre réseau local, donc votre domicile -> sans grand intérêt
    url: "https://fileditor.nom_de_domaine.fr" #connexion sécurisée obtenue via Nginx Proxy Manager par exemple
    require_admin: true #Seul les administrateurs voient le lien de la barre latérale
    icon: mdi:file-document-multiple-outline #l'icône affichée dans la barre latérale

En image ça donne :

animate

2 « J'aime »

Bonjour Clemalex

Je teste l’ajout d’édition des fichiers (file editor).
Malgré l’indication du port 8124, celui-ci ne répond pas.

Sur Portainer, le port n’apparaît pas, voici le log si ça peut aider. Merci

No configuration file found proceeding with default values
INFO:2022-07-24 17:39:48,086:hass_configurator.configurator:Starting server
INFO:2022-07-24 17:39:48,086:hass_configurator.configurator:Listening on: http://0.0.0.0:3218
Traceback (most recent call last):
  File "/usr/local/bin/hass-configurator", line 8, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.9/site-packages/hass_configurator/configurator.py", line 1809, in main
    os.chdir(BASEPATH)
FileNotFoundError: [Errno 2] No such file or directory: '/hass-config'

Partage ton compose.

Il semblerait que le volume hass-config soit mal configuré.

1 « J'aime »

Je viens de voir mon erreur, je n’avais pas de dossier hass, je ne pouvais donc pas pointer dessus…
Ce qui semble évident pour beaucoup n’est encore qu’une découverte pour moi :sweat_smile: Merci

1 « J'aime »

Merci @Clemalex … un peut tard :slight_smile:
Je viens de l’installer mais je doute l’ouverture vers l’internet.
Comment ajouter ce route sur ton rev.proxy ? Faut-il ouvrir un autre port sur le router aussi?

Ton reverse proxy doit intercepter tous sur le 443 idéalement…donc la route se configure dans le reverse pas la box.

J’utilise nginx proxy manager. Tu as des tutos sur le forum.

J’ai Syno revproxy et il n’accepte pas deux routes sur 443 pour le même URL… ce que me semble logique d’un côté…je vais chercher un peu sur l’internet

il y a un sujet pour le syno, demande de l’aide la bas :+1:

Pour cloturer les échanges sur le reverse proxy, qui n’est pas le sujet ici, le 443 n’est que sur ton reverse proxy ensuite, il faut jouer soit avec les ports (je déconseille car trop contraignant à partager) soit avec les sous domaines (je conseille)

Merci, j’ai la solution aussi par sub-domain maintenant.

Merci pour ce post @Clemalex ça marche nickel. Par contre, je me demande comment vous gérez la protection du sous-domaine qui donne accès à hass configurator ?

Pour l’instant j’ai ajouté un user et un mot de passe dans sa configuration, et je pensais pouvoir les passer dans l’URL de l’iframe de panel_iframe mais chrome bloque ces urls dans les iframe.

Personnellement, file Editor est accessible uniquement avec l’identifiant administrateur.

Donc en http, car je ne configure pas HA lors de mes déplacement.

Si jamais je devais éditer HA en voyage, je passe par un server vpn et accède directement au fichier comme à la maison.

Ce n’est pas parce que l’on peut que l’on doit… :innocent: (j’avoue que l’exemple que j’ai mis est en https…:astonished:)

Tu cherches a sécuriser l’accès à la page mais est-ce bien nécessaire d’y acceder par ce biais en extérieur ?

Non, c’est sur, c’est pas vital d’y accéder depuis l’extérieur :smirk: mais j’avoue que comme je bidouille HA depuis mon portable loin de mon wifi sur la terrasse en 4G c’est bien pratique ! Bon ok c’est pas vraiment un cas très courant et tu as raison un VPN ferait le job et serait sûrement mieux.

Mais oui j’ai cru être passé à côté d’un truc étant donné que tu parlais d’un sous domaine, et en plus en HTTPS, pour moi c’était du coup forcément accessible de l’éditeur. Après la basic authentification fait le job pour sécuriser mais bon…

Mais du coup je vois pas bien l’utilité de passer par un sous domaine si on reste en local, je préfère encore utiliser l’ip et le port je crois.

Par contre, j’en déduis que tu as deux users, un en admin et l’autre pas ? Et qu’en temps normal tu ne te sers pas de l’admin ?

C’est tout à fait ça.

1 « J'aime »

Bonjour Ă  tous
je fais des tests sur l’installation home assistant en docker avec les add’on manuel
je me penche sur file editor en docker. cela marche nickel :+1:

pour aller plus loin j’ai voulu mettre une basic authent : c’est ok ça marche
mais du coup le mot de passe est en clair dans le compose (y’a bien l’option {sha256} qui fonctionne bien aussi :wink: )
pour aller encore plus loin j’ai voulu essayer d’utiliser les « secrets » de docker
j’ai bien créé un fichier configurator_password avec le mot de passe
voici mon compose :

version: '3.8'
services:
################################################
  # Configurator
################################################
  hass-configurator:
    image: "causticlab/hass-configurator-docker:latest"
    container_name: configurator
    restart: unless-stopped
    ports:
      - "8124:3218/tcp"
    networks:
      - MyHaNet
    volumes:
      - /home/.../Docker/hass-configurator/config:/config
      - /home/.../Docker/homeassistant/config:/hass-config
      - /home/.../Docker/homeassistant/ssl:/ssl
    environment:
      - HC_BASEPATH=/hass-config
      - HC_ENFORCE_BASEPATH=true
      - HC_DIRSFIRST=true
      - HC_IGNORE_SSL=true
      - HC_SSL_CERTIFICATE=/ssl/myhass.crt
      - HC_SSL_KEY=/ssl/myhass.key
      - HC_USERNAME=xxxxxxx
      - HC_PASSWORD=/run/secrets/configurator_password

    secrets:
      - configurator_password

secrets:
  configurator_password:
    file: configurator_password

networks:
  MyHaNet:
    external: true

je lance le container c’est ok
dans mon container j’ai bien mon fichier créé dans /run/secrets/configurator_password (qui contient « test » )

bash-5.1# cat /run/secrets/configurator_password
test

et quand je me connecte à l’interface : https://monip:8124 j’ai bien le popup qui me demande mon user /mot de passe et là si je met mon user + « test » et bien ça ne fonctionne pas
il faut que je mette mon user + « /run/secrets/configurator_password » :grin:
je pense que l’add’on ne sait pas faire le lien avec les secrets docker

C’est pas indispensable, je suis en local, mais si jamais quelqu’un a un petit retour ? une idée ?

Plusieurs pistes :

Je suis pour ma part dans la catégorie des utilisateurs sous docker sur mon Synology et je cherchais un moyen d’éditer mes fichiers yalm sans la possibilité d’installer l’add-on File Editor.
Je suis tombé sur cette solution:
GitHub - htmltiger/config-editor-card: Home Assistant Configuration Files Editor for Lovelace
Facile à installer et utiliser… je voulais partager.

1 « J'aime »

Bonjour,
Je rebondis sur ce post, car j’ai également galéré pour installer File Editor.
D’abord parce ce qu’une fois installé, il faut retourner dans le module complémentaire pour activer « Afficher dans la barre latérale » afin de le voir dans la partie gauche.
Ensuite, il s’obstinait à me dire « add on not started ». J’ai résolu en faisantr un redémarrage COMPLET du PC : Il y a des options avancées dans démarrage, pour relancer totalement le PC. (sinon, débrancher la prise ça marche aussi…).
Voilà, si ça peut aider.

1 « J'aime »

Pour perdre toute sa configuration sûrement :grin:

1 « J'aime »