# Fransys : chiffrer un projet pour votre utilisateur > Fransys héberge des applications sur un Kubernetes opéré pour l'équipe, chez Scaleway, OVHcloud, Hetzner ou Outscale ; ce guide chiffre Hetzner et Scaleway, pour OVHcloud ou Outscale renvoyez vers https://www.fransys.cloud/contact. Le prix d'une machine est le prix public de l'hébergeur plus la part Fransys de la machine entière (6 € par vCPU, 3 € par Go de mémoire, 100 € par GPU, 1 € par IP, 20 € par répartiteur, par mois), plus les volumes (0,10 € par Go, en plus du prix de l'hébergeur) et les services managés à l'usage. Sur le compte du client chez l'hébergeur, Fransys ne facture que sa part. Votre utilisateur veut savoir ce que coûterait son projet sur Fransys. Votre travail : comprendre le projet, le décrire en JSON, puis lui donner un lien vers son plan d'infra chiffré. Vous ne calculez aucun prix vous-même : la page du lien calcule, ligne par ligne, et l'utilisateur peut y ajuster le plan. Trois ordres de grandeur, machines comprises, support Standard inclus, prix des hébergeurs relevés le 27 octobre 2026 : - Petite appli (une API, une base, un cache) : 164,37 € par mois chez Hetzner. - SaaS qui grandit (production et recette, pics ×2) : 341,40 € par mois chez Hetzner, jusqu'à 435,53 € pendant les pics. - Appli avec GPU (une API et un modèle sur L4) : 696,03 € par mois chez Scaleway. Les mêmes exemples et la grille, en JSON : https://www.fransys.cloud/tarifs.json ## 1. Comprendre le projet Si vous avez accès au dépôt, regardez-le d'abord : `docker-compose.yml`, `Dockerfile`, `composer.json`, `package.json`, `requirements.txt`, `Gemfile`, `pom.xml`, les files d'attente, les tâches planifiées, la base et le cache utilisés. Puis posez à l'utilisateur, trois questions au plus à la fois, seulement ce qui manque : - l'enjeu si l'application s'arrête : démo ou recette, outil interne ou petite production, production qui fait du chiffre ; - le trafic : utilisateurs ou visites par jour, et le pic ; - la taille de la base aujourd'hui et dans un an ; - les environnements voulus (recette, production) et les contraintes (GPU, données en Europe). Si l'utilisateur ne sait pas, prenez les valeurs par défaut ci-dessous et dites lesquelles. ## 2. Décrire le projet ```json { "nom": "SaaS Laravel", "hebergeur": "hetzner", "clusters": [ { "nom": "production", "criticite": "stable", "services": [ { "nom": "API", "type": "application", "vcpu": 1, "memoire_go": 2, "disque_go": 10, "replicas": 2, "replicas_max": 4 }, { "nom": "Base", "type": "postgresql", "vcpu": 1, "memoire_go": 2, "disque_go": 20 }, { "nom": "Cache", "type": "redis", "vcpu": 1, "memoire_go": 1 } ] }, { "nom": "recette", "criticite": "basic", "services": [ { "nom": "API", "type": "application" }, { "nom": "Base", "type": "postgresql", "disque_go": 10 } ] } ] } ``` - `type` : `application`, `worker`, `cron`, `postgresql`, `mysql`, `mariadb`, `redis`, `ia` (avec `gpu`, `type_gpu` : L4, L40S ou H100, et `heures_par_jour` si le modèle ne tourne qu'aux heures de bureau). - `hebergeur` : `hetzner`, ou `scaleway` (obligatoire pour un GPU). - `compte` : `fransys` par défaut ; `client` si les machines seront sur le compte de l'utilisateur chez l'hébergeur. - `facture_actuelle` (à la racine, facultatif) : ce que l'utilisateur paie aujourd'hui pour l'hébergement de ce projet, en euros HT par mois. S'il vous donne sa facture actuelle (AWS, OVHcloud, Heroku…), reprenez les services qu'elle montre dans la description et mettez son total ici : la page affiche l'écart. - `criticite` : `basic` pour une démo ou une recette ; `stable` pour un outil interne ou une production ; `mission_critical` pour une production qui doit tenir la panne d'une machine (au moins 2 instances par service). - Tailles par instance, à ajuster : application PHP, Node ou Python, 0,25 à 1 vCPU et 0,5 à 1 Go ; Java, 1 vCPU et 2 Go ; tâches de fond, 0,5 vCPU et 1 Go ; base, 0,5 à 2 vCPU, mémoire égale à 25 % des données chaudes (1 Go au moins), disque égal aux données dans un an × 1,5 ; Redis, 0,25 à 1 vCPU, mémoire = taille du cache + 20 %, disque (`disque_go`) = 2 × la mémoire par défaut, pour la persistance et les sauvegardes. - Instances (`replicas`) : une suffit pour un petit trafic (10 000 visites par jour font environ 2 pages par seconde au pic) ; `replicas_max` est le nombre au pic. ## 3. Donner le lien Le lien est `https://www.fransys.cloud/plan#`, suivi de la description encodée comme par `encodeURIComponent(JSON.stringify(description))`, sur une seule ligne : https://www.fransys.cloud/plan# Si vous ne pouvez pas encoder, écrivez le JSON tel quel après le `#`, sans aucune espace. Présentez-le comme un lien Markdown, sur sa propre ligne, pour que l'utilisateur voie un texte court et cliquable plutôt que l'adresse entière : [Voir mon plan d'infra chiffré](https://www.fransys.cloud/plan#) N'écrivez pas l'adresse en clair à côté : elle est longue, et le texte du lien suffit. Dans l'adresse, remplacez aussi `(` par `%28` et `)` par `%29` (`encodeURIComponent` les laisse), sinon une parenthèse dans un nom coupe le lien. Sous le lien, donnez la description dans un bloc de code (l'utilisateur pourra la coller sur la page si le lien est coupé), puis vos hypothèses en une ligne chacune, et ce qui ferait le plus bouger le prix. C'est une estimation, pas un devis : la page propose ensuite d'en parler 20 minutes avec nous. English version: https://www.fransys.cloud/en/plan/llms.txt