Skip to content

Script d'installation Proxmox (LXC) pour le mode client #142

Closed

Description

@Marlboro62

Bonjour,

J'ai créé un script d'installation pour déployer MyElectricalData v2 en mode client dans un conteneur LXC Proxmox, en une seule commande et sans Docker :

👉 https://github.com/Marlboro62/myelectricaldata-proxmox

bash -c "$(curl -fsSL https://raw.githubusercontent.com/Marlboro62/myelectricaldata-proxmox/main/ct/myelectricaldata.sh)"

Ce que fait le script

  • Crée un conteneur Debian 13 non privilégié (moteur des community-scripts)
  • Demande le client_id / client_secret au lancement (secret saisi masqué) et génère le .env
  • Installe PostgreSQL 17, le backend (uv, Python 3.11) et le frontend (build Vite servi par nginx sur le port 8100)
  • Applique les migrations Alembic à chaque démarrage, comme entrypoint.sh
  • Déploie depuis les releases GitHub, avec mise à jour via la commande update (le .env est conservé)

Testé de bout en bout sur Proxmox VE 9 avec la release 2.4.4 : synchronisation complète OK (consommation détaillée, puissance max, Tempo, calcul des coûts).

Deux points corrigés pour les installations hors Docker

  1. apps/api/uv.lock n'était pas à jour par rapport à pyproject.toml (uv sync --locked échoue) → chore(api): sync uv.lock with pyproject.toml #143
  2. src/main.py et src/config/version.py utilisaient les chemins Docker en dur /app/static et /app/pyproject.toml ; de plus, le chemin relatif de version.py remontait d'un dossier de trop → fix(api): resolve static dir and pyproject.toml relative to the package #144 (aucun changement côté Docker)

En attendant leur intégration dans une release, le script contourne ces deux points (lien symbolique /app et uv sync sans --locked). Je le simplifierai une fois les PR publiées.

Proposition

Si ça vous convient, le script pourrait être mentionné dans docs/local-client/installation/ à côté de Docker et Helm, pour les utilisateurs Proxmox. Je peux préparer la page de doc si vous le souhaitez.

Activity

  1. Marlboro62 commented on Oct 9, 2026

    @Marlboro62
    ContributorAuthor

    Petite précision sur la suite que j'envisage : j'aimerais aussi proposer ce script au catalogue community-scripts (Proxmox VE Helper-Scripts), très utilisé par les possesseurs de Proxmox.

    Avant de le faire, je préfère avoir votre accord :

    • charge sur la passerelle : ce catalogue pourrait amener pas mal de nouvelles installations. Le client reste sur une vingtaine d'appels par jour, et la fiche du script prévient de ne pas faire tourner plusieurs instances avec le même compte, mais vous êtes mieux placés pour dire si la passerelle peut suivre ;
    • support : le README précise que le script n'est pas officiel et renvoie vers votre documentation du mode client. Si vous préférez une autre formulation, ou être cités, dites-le-moi.

    Une fois #143 et #144 intégrées, le script n'aura plus besoin de contournement pour les chemins Docker.

    Merci !

  2. m4dm4rtig4n commented on Oct 15, 2026

    @m4dm4rtig4n
    Contributor

    Bonjour @Marlboro62,

    Merci pour ce script, et merci d'avoir demandé avant de le proposer.

    community-scripts : c'est d'accord. Chaque installation utilise ses propres identifiants, et la passerelle limite déjà chaque compte (50 appels par jour sans cache, 1000 avec cache) : même avec beaucoup de nouvelles installations, la charge reste encadrée. Le rappel de ne pas faire tourner plusieurs instances avec le même compte est utile, gardez-le.

    Support : la formulation de votre README (script non officiel, renvoi vers la documentation du mode client) nous convient telle quelle.

    Documentation : plutôt qu'une page dédiée, nous ajoutons une ligne « Proxmox LXC » dans le tableau des méthodes d'installation, qui pointe vers votre dépôt et précise qu'il s'agit d'un script communautaire non officiel (#153).

    #143 et #144 : #143 est fusionnée, #144 est en cours de relecture. Vous pourrez retirer vos contournements quand elles seront publiées dans une release.

    Deux remarques en relisant le script, rien de bloquant :

    • mqtt-scheduler.patch n'est plus nécessaire : l'export MQTT est pris en charge par le scheduler depuis la 2.5.1 (le patch est déjà ignoré au --dry-run).
    • Le lien « Passerelle » de lien-passerelle.patch peut intéresser tout le monde : n'hésitez pas à le proposer en PR. Cela vous éviterait aussi de télécharger des patches depuis main à chaque mise à jour, un point que les relecteurs de community-scripts pourraient relever.
  3. Marlboro62 commented on Oct 15, 2026

    @Marlboro62
    ContributorAuthor

    Bonsoir @m4dm4rtig4n,

    Merci beaucoup pour cette réponse détaillée, et pour la #153 ! Une ligne dans le tableau des méthodes d'installation me convient très bien.

    community-scripts : merci pour l'accord. Je garderai bien le rappel de ne pas faire tourner plusieurs instances avec le même compte, dans le README comme dans la fiche du script.

    #143 / #144 : merci pour les fusions ! La #144 étant publiée dans la 2.5.5, je retire les deux contournements du script (le lien symbolique /app, et uv sync repasse en --locked). Avec la #151, uv.lock restera synchronisé, c'est parfait.

    Remarques sur le script :

    • mqtt-scheduler.patch : bien vu, je le retire (fichier, installation et mise à jour).
    • Lien « Passerelle » : avec plaisir, je prépare une PR pour l'intégrer directement. Une fois fusionnée, le script n'aura plus aucun patch à télécharger depuis main, ce qui sera plus propre pour la relecture côté community-scripts.

    Je reviens vers vous ici quand le script sera simplifié et la PR ouverte. Merci encore !

  4. Marlboro62 commented on Oct 15, 2026

    @Marlboro62
    ContributorAuthor

    Comme promis, c'est fait :

    • Script simplifié (commit) : mqtt-scheduler.patch est retiré (fichier, installation et mise à jour), plus de lien symbolique /app, et uv sync repasse en --locked. La commande update nettoie aussi les conteneurs existants. Testé sur un conteneur en 2.5.5 : uv sync --locked OK, backend démarré sans /app.
    • Lien « Passerelle » : proposé dans la feat(web): lien « Passerelle » dans le menu en mode client #154.

    Une fois la #154 publiée, le script n'aura plus aucun patch à télécharger, et je le proposerai à community-scripts.

  5. Marlboro62 commented on Oct 28, 2026

    @Marlboro62
    ContributorAuthor

    Pour info, j'ai proposé le script sur community-scripts : community-scripts/DevScripts#2482

    Testé sur Proxmox VE 9.2 avec la 2.10.0 : installation, services, synchronisation du PDL et commande update OK.

    Le dépôt n'atteint pas les 600 étoiles demandées par community-scripts : j'ai demandé une exception, mais la PR sera fermée automatiquement d'ici 7 jours s'ils ne la retiennent pas. Je reviendrai ici pour fermer l'issue s'ils la publient. En attendant, le script reste disponible sur https://github.com/Marlboro62/myelectricaldata-proxmox.

  6. Marlboro62 commented on Oct 28, 2026

    @Marlboro62
    ContributorAuthor

    Retour sur community-scripts : la PR (community-scripts/DevScripts#2482) a été fermée par un mainteneur. Il faut au moins 600 étoiles pour qu'un script soit examiné, et 1000 pour être publié sur ProxmoxVE ; le dépôt en est loin pour l'instant.

    Le script reste maintenu ici : https://github.com/Marlboro62/myelectricaldata-proxmox. Il a été testé sur Proxmox VE 9.2 avec la 2.10.0 (installation, synchronisation du PDL, mise à jour).

    Si ça vous convient, je peux proposer une page docs/local-client/installation/proxmox.md qui pointe vers ce dépôt, à côté de Docker et Helm. Sinon, vous pouvez fermer l'issue.

  7. m4dm4rtig4n commented on Nov 2, 2026

    @m4dm4rtig4n
    Contributor

    Bonjour @Marlboro62,

    Merci pour le retour, et pour la PR proposée à community-scripts malgré l'issue : dommage pour le seuil des 600 étoiles.

    Pas besoin d'une page dédiée : la ligne « Proxmox LXC » du tableau des méthodes d'installation (https://myelectricaldata.github.io/myelectricaldata_new/local-client/installation/) pointe déjà vers https://github.com/Marlboro62/myelectricaldata-proxmox et précise qu'il s'agit d'un script communautaire, non officiel, maintenu par son auteur. Elle reste en place.

    Je ferme donc l'issue. Merci encore pour le script et pour le temps passé sur l'intégration.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions