{"id":32522045,"url":"https://github.com/julienhmmt/pvmss","last_synced_at":"2025-10-28T06:50:38.570Z","repository":{"id":319349920,"uuid":"1018913956","full_name":"julienhmmt/pvmss","owner":"julienhmmt","description":"PVMSS is a lightweight, self-service web portal for Proxmox Virtual Environment. It allows users to create and manage virtual machines without needing direct access to the Proxmox web UI.","archived":false,"fork":false,"pushed_at":"2025-10-25T21:39:04.000Z","size":195090,"stargazers_count":10,"open_issues_count":0,"forks_count":0,"subscribers_count":0,"default_branch":"main","last_synced_at":"2025-10-25T22:07:41.792Z","etag":null,"topics":["docker","docker-image","kubernetes","kubernetes-deployment","proxmox","proxmox-apis","proxmox-ve"],"latest_commit_sha":null,"homepage":"https://j.hommet.net/pvmss","language":"JavaScript","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/julienhmmt.png","metadata":{"files":{"readme":"README.fr.md","changelog":null,"contributing":null,"funding":null,"license":null,"code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2025-07-13T10:31:59.000Z","updated_at":"2025-10-25T08:38:33.000Z","dependencies_parsed_at":null,"dependency_job_id":"541b9813-81bc-4bc1-ad7d-91ea1a66a746","html_url":"https://github.com/julienhmmt/pvmss","commit_stats":null,"previous_names":["julienhmmt/pvmss"],"tags_count":4,"template":false,"template_full_name":null,"purl":"pkg:github/julienhmmt/pvmss","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julienhmmt%2Fpvmss","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julienhmmt%2Fpvmss/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julienhmmt%2Fpvmss/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julienhmmt%2Fpvmss/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/julienhmmt","download_url":"https://codeload.github.com/julienhmmt/pvmss/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/julienhmmt%2Fpvmss/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":281397302,"owners_count":26493908,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","status":"online","status_checked_at":"2025-10-28T02:00:06.022Z","response_time":60,"last_error":null,"robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":true,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["docker","docker-image","kubernetes","kubernetes-deployment","proxmox","proxmox-apis","proxmox-ve"],"created_at":"2025-10-28T06:50:37.475Z","updated_at":"2025-10-28T06:50:38.558Z","avatar_url":"https://github.com/julienhmmt.png","language":"JavaScript","funding_links":[],"categories":[],"sub_categories":[],"readme":"# Proxmox VM Self-Service (PVMSS)\n\n[![Lint](https://github.com/julienhmmt/pvmss/actions/workflows/lint.yml/badge.svg?branch=main\u0026event=push)](https://github.com/julienhmmt/pvmss/actions/workflows/lint.yml)\n\nVersion anglaise : [README.md](README.md)\n\nPVMSS est un portail web léger et en libre-service pour Proxmox Virtual Environment (PVE). Il permet aux utilisateurs de créer et de gérer des machines virtuelles (VM) sans avoir besoin d'un accès direct à l'interface web de Proxmox. L'application est conçue pour être simple, rapide et facile à déployer en tant que conteneur Docker.\n\n⚠️ L'application est actuellement en version de développement et présente des limites, listées en bas de page.\n\n## Fonctionnalités\n\n### Pour les utilisateurs\n\n- **Créer une VM** : Créer une nouvelle machine virtuelle avec des ressources personnalisables (CPU, RAM, stockage).\n- **Accès console VM** : Accès console noVNC direct aux machines virtuelles via un client VNC web intégré.\n- **Gestion des VM** : Démarrer, arrêter, redémarrer et supprimer des machines virtuelles.\n- **Recherche de VM** : Trouver des machines virtuelles par VMID ou son nom.\n- **Détails des VM** : Afficher les informations complètes des VM incluant le statut, la description, l'uptime, CPU, mémoire, utilisation disque et configuration réseau.\n- **Gestion du profil** : Consulter et gérer ses propres VM, réinitialiser son mot de passe.\n- **Multi-langue** : L'interface est disponible en anglais et en français avec détection automatique de la langue.\n\n### Pour les administrateurs\n\n- **Gestion des nœuds** : Configurer et gérer les nœuds Proxmox disponibles pour le déploiement de VM.\n- **Gestion du pool d'utilisateurs** : Ajouter ou supprimer des utilisateurs avec génération automatique de mots de passe.\n- **Gestion des tags** : Créer et gérer des tags pour l'organisation des VM.\n- **Gestion des ISO** : Configurer les images ISO disponibles pour l'installation de VM.\n- **Configuration réseau** : Gérer les ponts réseau disponibles (VMBRs) pour le réseau des VM.\n- **Gestion du stockage** : Configurer les emplacements de stockage pour les disques des VM.\n- **Limites de ressources** : Définir les limites de CPU, RAM et disque pour la création de VM.\n- **Documentation** : Documentation utilisateur intégrée accessible depuis le panneau d'administration.\n\n## Démarrage\n\nSuivez ces instructions pour lancer PVMSS localement avec Docker.\n\n### Prérequis\n\n- [Docker](https://docs.docker.com/get-docker/)\n- [Docker Compose](https://docs.docker.com/compose/install/)\n\n### 1. Configurer les variables d'environnement\n\nVous pouvez utiliser le fichier d'exemple fourni `env.example` pour créer votre propre fichier `.env`. Ou vous pouvez modifier le fichier d'exemple directement.\n\n**Configuration :**\n\n- `ADMIN_PASSWORD_HASH` : Un hash bcrypt du mot de passe pour le panneau d'administration. Vous pouvez en générer un à l'aide d'un outil en ligne ou d'un script simple.\n- `LOG_LEVEL` : Définir le niveau de log de l'application : `INFO` ou `DEBUG` (par défaut : `INFO`).\n- `PROXMOX_API_TOKEN_NAME` : Le nom de votre token API Proxmox pour les opérations backend (ex : `user@pve!token`).\n- `PROXMOX_API_TOKEN_VALUE` : La valeur secrète de votre token API.\n- `PROXMOX_URL` : L'URL complète vers votre endpoint API Proxmox (ex : `https://proxmox.example.com:8006/api2/json`).\n- `PROXMOX_VERIFY_SSL` : Définir à `false` si vous utilisez un certificat auto-signé sur Proxmox (par défaut : `false`).\n- `PVMSS_OFFLINE` : Définir à `true` pour activer le mode déconnecté (désactive tous les appels API Proxmox). Utile pour le développement ou lorsque Proxmox n'est pas disponible (par défaut : `false`).\n- `SESSION_SECRET` : Clé secrète pour le chiffrement des sessions (changez pour une chaîne aléatoire unique, par exemple `$ openssl rand -hex 32`).\n\n### 2. Lancer le conteneur\n\nAvec Docker en cours d'exécution, exécutez la commande suivante depuis la racine du projet :\n\n```bash\n# Démarrer le conteneur en mode détaché\ndocker compose up -d\n```\n\nOu lancez le conteneur avec `docker run` :\n\n```bash\ndocker run -d \\\n  --name pvmss \\\n  --restart unless-stopped \\\n  -p 50000:50000 \\\n  -v $(pwd)/backend/settings.json:/app/settings.json \\\n  -e ADMIN_PASSWORD_HASH=\"$2y$10$Ppg7Wl3sNYrmxZmWgcq4reOyznt7AeqMrQucaH4HY.dBrzavhPP1e\" \\\n  -e LOG_LEVEL=INFO \\\n  -e PROXMOX_API_TOKEN_NAME=\"tokenName@changeMe!value\" \\\n  -e PROXMOX_API_TOKEN_VALUE=\"aaaaaaaa-0000-44aa-1111-aaaaaaaaaaa\" \\\n  -e PROXMOX_URL=https://ip-or-name:8006/api2/json \\\n  -e PROXMOX_VERIFY_SSL=false \\\n  -e SESSION_SECRET=\"$(openssl rand -hex 32)\" \\\n  -e TZ=Europe/Paris \\\n  jhmmt/pvmss:0.1\n```\n\nL'application sera disponible à l'adresse [http://localhost:50000](http://localhost:50000).\n\n### 3. Consulter les logs\n\nPour voir les logs de l'application, exécutez :\n\n```bash\ndocker compose logs -f pvmss\n```\n\n## Architecture\n\nPVMSS suit une architecture client-serveur moderne avec des fonctionnalités avancées :\n\n- **Backend** : Une application Go qui sert l'interface web et communique avec l'API Proxmox. Elle gère toute la logique métier, y compris l'authentification, les opérations VM, le rendu des templates et la fonctionnalité de proxy console.\n- **Frontend** : HTML, CSS et JavaScript minimal standards. Utilise le [framework CSS Bulma](https://bulma.io/) pour un design propre et responsive avec noVNC intégré pour l'accès console.\n- **Accès console** : Intégration noVNC intégrée avec proxy basé sur les sessions pour un accès console VM transparent, supportant les déploiements HTTP et HTTPS.\n- **Gestion d'état** : Gestion d'état thread-safe avec injection de dépendances pour une opération robuste.\n- **Conteneurisation** : L'application entière est empaquetée et déployée en tant que conteneur Docker unique.\n\n## Limitations\n\n- L'application est conçue pour être utilisée en tant que conteneur Docker unique.\n- Seulement un seul hôte Proxmox est supporté (hors cluster).\n- Il n'y a pas eu de tests rigoureux de sécurité, attention lors du déploiement.\n- Pas de support de Cloud-Init.\n\n## Licence\n\nPVMSS  © 2025 by Julien HOMMET is licensed under Creative Commons Attribution-NonCommercial-NoDerivatives 4.0 International. To view a copy of this license, visit \u003chttps://creativecommons.org/licenses/by-nc-nd/4.0/\u003e.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjulienhmmt%2Fpvmss","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fjulienhmmt%2Fpvmss","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fjulienhmmt%2Fpvmss/lists"}