📝 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.