Compare commits

..

3 Commits

@ -9,6 +9,8 @@ RewriteRule ^mentionslegales$ /mentionslegales.php [L]
RewriteRule ^transparence$ /transparence.php [L]
RewriteRule ^faq$ /faq.php [L]
RewriteRule ^finances$ /finances.php [L]
RewriteRule ^tarifs$ /tarifs.php [L]
RewriteRule ^clients$ /clients.php [L]
## nginx rules
#location /cgu {
@ -32,4 +34,3 @@ RewriteRule ^finances$ /finances.php [L]
#location /faq {
# rewrite ^/faq$ /faq.php last;
#}

@ -0,0 +1,326 @@
const storage_price = [.0656,.0878,.1093,.1231];
const prices = {
nc: {
storage: storage_price,
users: [0.66,1.16,1.76,2.16],
options: {
lxc: {
basePrice: 31,
factor: 1.217
},
dedicated: {
basePrice: 64,
factor: 1.753
},
onprem: {
basePrice: 111,
factor: 1.498
},
vol: [75,90,105,120]
}
},
wh: {
storage: storage_price,
sites: [3.6,4.7,6.9,9.1],
options: {
preinstall: {
basePrice: 3.773,
factor: 1.168
}
}
},
mail: {
storage: storage_price,
users: [2.1,4.2,7.3,11.4],
options: {
catchall: {
basePrice: 3.787,
factor: 1.196
}
}
},
vps: {
storage: storage_price.map(x => x * 1.1297),
cpu: [6.146, 7.687, 9.218, 10.749],
ram: [1.646, 2.057, 2.468, 2.879]
}
};
$('.ui.accordion')
.accordion({
exclusive: true,
collapsible: false
})
;
$('.ui.sticky')
.sticky()
;
$('.shape').shape();
$('.ui.toggle.checkbox').checkbox({
onChange: function () {
updatePrice();
}
});
$('#nc_opt_vol_val').on('change', function() {
updatePrice();
});
$('.ui.toggle.checkbox.nc_opt_lxc').checkbox({
onChange: function() {
updatePrice();
$('#ncusers').shape('flip up');
$('#nextcloud_users_source').toggleClass('disabled');
},
onChecked: function() {
$('.ui.toggle.checkbox.nc_opt_decicated').checkbox('set enabled');
},
onUnchecked: function() {
$('.ui.toggle.checkbox.nc_opt_decicated').checkbox('uncheck').checkbox('set disabled');
$('.ui.toggle.checkbox.nc_opt_onprem').checkbox('uncheck').checkbox('set disabled');
}
});
$('.ui.toggle.checkbox.nc_opt_decicated').checkbox({
onChange: function() {
updatePrice();
},
onChecked: function() {
$('.ui.toggle.checkbox.nc_opt_onprem').checkbox('set enabled');
},
onUnchecked: function() {
$('.ui.toggle.checkbox.nc_opt_onprem').checkbox('uncheck').checkbox('set disabled');
}
}).checkbox('set disabled');
$('.ui.toggle.checkbox.nc_opt_onprem').checkbox({
onChange: function() {
updatePrice();
}
}).checkbox('set disabled');
$('#nextcloud_stockage_source')
.slider({
showThumbTooltip: true,
restrictedLabels: [0, 50, 100, 200, 300, 400, 500],
min: 0,
max: 500,
step: 5,
autoAdjustLabels: false,
onMove: function(range, firstVal, secondVal) {
$('#nextcloud_stockage_display').html(firstVal);
updatePrice();
}
})
;
$('#nextcloud_users_source')
.slider({
showThumbTooltip: true,
restrictedLabels: [0, 5, 10, 15, 20, 30, 40, 50],
min: 0,
max: 50,
// step: 10,
autoAdjustLabels: false,
onMove: function(range, firstVal, secondVal) {
$('#nextcloud_users_display').html(firstVal);
updatePrice();
}
})
;
$('#wh_stockage_source')
.slider({
showThumbTooltip: true,
restrictedLabels: [0, 5, 10, 25, 50, 75, 100],
min: 0,
max: 100,
step: 1,
autoAdjustLabels: false,
onMove: function(range, firstVal, secondVal) {
$('#wh_stockage_display').html(firstVal);
updatePrice();
}
})
;
$('#wh_sites_source')
.slider({
showThumbTooltip: true,
restrictedLabels: [0, 5, 10, 15, 20],
min: 0,
max: 20,
// step: 10,
autoAdjustLabels: false,
onMove: function(range, firstVal, secondVal) {
$('#wh_sites_display').html(firstVal);
updatePrice();
}
})
;
$('#mail_stockage_source')
.slider({
showThumbTooltip: true,
restrictedLabels: [0, 5, 10, 25, 50, 75, 100],
min: 0,
max: 100,
step: 1,
autoAdjustLabels: false,
onMove: function(range, firstVal, secondVal) {
$('#mail_stockage_display').html(firstVal);
updatePrice();
}
})
;
$('#mail_users_source')
.slider({
showThumbTooltip: true,
restrictedLabels: [0, 5, 10, 15, 20],
min: 0,
max: 20,
// step: 10,
autoAdjustLabels: false,
onMove: function(range, firstVal, secondVal) {
$('#mail_users_display').html(firstVal);
updatePrice();
}
})
;
$('#vps_stockage_source')
.slider({
showThumbTooltip: true,
restrictedLabels: [0, 25, 50, 75, 100, 200, 300, 400, 500],
min: 0,
max: 500,
step: 25,
autoAdjustLabels: false,
onMove: function(range, firstVal, secondVal) {
$('#vps_stockage_display').html(firstVal);
updatePrice();
}
})
;
$('#vps_cpu_source')
.slider({
showThumbTooltip: true,
restrictedLabels: [0, 1, 2, 4, 8, 16, 32, 48, 64],
min: 0,
max: 64,
step: 1,
autoAdjustLabels: false,
onMove: function(range, firstVal, secondVal) {
$('#vps_cpu_display').html(firstVal);
updatePrice();
}
})
;
$('#vps_ram_source')
.slider({
showThumbTooltip: true,
restrictedLabels: [0, 1, 2, 4, 6, 8, 12, 16, 24, 32, 48, 64, 96, 128],
min: 0,
max: 128,
step: 1,
autoAdjustLabels: false,
onMove: function(range, firstVal, secondVal) {
$('#vps_ram_display').html(firstVal);
updatePrice();
}
})
;
function updatePrice() {
let ncPriceStorage = $('#nextcloud_stockage_source').slider('get value');
const ncPriceUsers = $('#nextcloud_users_source').slider('get value');
const whPriceStorage = $('#wh_stockage_source').slider('get value');
const whPriceSites = $('#wh_sites_source').slider('get value');
const mailPriceStorage = $('#mail_stockage_source').slider('get value');
const mailPriceUsers = $('#mail_users_source').slider('get value');
const vpsPriceStorage = $('#vps_stockage_source').slider('get value');
const vpsPriceCpu = $('#vps_cpu_source').slider('get value');
const vpsPriceRam = $('#vps_ram_source').slider('get value');
const cbNcLxc = $('.ui.toggle.checkbox.nc_opt_lxc').checkbox('is checked');
const cbNcDedicated = $('.ui.toggle.checkbox.nc_opt_decicated').checkbox('is checked');
const cbNcOnprem = $('.ui.toggle.checkbox.nc_opt_onprem').checkbox('is checked');
const cbWhPreinstall = $('.ui.toggle.checkbox.wh_opt_preinstall').checkbox('is checked');
const cbMailCatchall = $('.ui.toggle.checkbox.mail_opt_catchall').checkbox('is checked');
let opt = { basePrice: 0, factor: 1 };
if (cbNcLxc) {
opt = prices.nc.options.lxc;
}
if (cbNcLxc && cbNcDedicated) {
opt = prices.nc.options.dedicated;
}
if (cbNcLxc && cbNcDedicated && cbNcOnprem) {
opt = prices.nc.options.onprem;
}
const ncOptVol = $('.ui.checkbox.nc_opt_vol').checkbox('is checked')
? parseInt($('#nc_opt_vol_val').val()) || 1
: 0;
for (let i=0; i<4; i++) {
// base nc price calculation
let ncPrice = ncPriceStorage * prices.nc.storage[i];
if (!cbNcLxc) ncPrice += ncPriceUsers * prices.nc.users[i];
// add options pricing if any
ncPrice = (ncPrice + opt.basePrice) * opt.factor;
if (ncOptVol>0) ncPrice += Math.max(100, Math.pow(ncOptVol, 0.7) * prices.nc.options.vol[i]);
if (ncOptVol>0) {
if (i == 0) {
$('#teraeurolow').html((ncPrice / ncOptVol).toPrecision(3));
}
if (i == 3) {
$('#teraeurohigh').html((ncPrice / ncOptVol).toPrecision(3));
}
} else {
$('#teraeurolow').html('-');
$('#teraeurohigh').html('-');
}
// base wh price calculation
let whPrice = whPriceStorage * prices.wh.storage[i]
+ whPriceSites * prices.wh.sites[i];
if (cbWhPreinstall) whPrice = (whPrice + prices.wh.options.preinstall.basePrice) * prices.wh.options.preinstall.factor;
// base mail price calculation
let mailPrice = mailPriceStorage * prices.mail.storage[i]
+ mailPriceUsers * prices.mail.users[i];
if (cbMailCatchall) mailPrice = (mailPrice + prices.mail.options.catchall.basePrice) * prices.mail.options.catchall.factor;
// base VPS price calculation
let vpsPrice = vpsPriceStorage * prices.vps.storage[i]
+ vpsPriceCpu * prices.vps.cpu[i]
+ vpsPriceRam * prices.vps.ram[i];
let totalPrice = ncPrice + whPrice + mailPrice + vpsPrice;
totalPrice = Math.ceil(totalPrice);
$('#price_'+i).html(totalPrice+'€');
}
}
$(document)
.ready(function() {
updatePrice();
});

@ -0,0 +1,55 @@
<?php
require_once 'includes/_config.php';
$currentPage = $pages['clients'];
?><!DOCTYPE html>
<html lang="fr">
<head>
<?php include 'includes/_meta.php'; ?>
<meta name="description" content="clawd.fr Accès aux services" />
<link rel="canonical" href="https://clawd.fr/faq" />
<title>clawd.fr - Accès aux services</title>
<?php include 'includes/_assets.php'; ?>
</head>
<body class="clawd">
<?php include 'includes/_menus.php'; ?>
<!-- Page Contents -->
<div class="pusher">
<div class="ui inverted vertical masthead center aligned segment">
<?php include 'includes/_mainmenu.php'; ?>
<div class="ui text container">
<h1 class="ui header clawdlogo">CLAWD.FR</h1>
<h2>HÉBERGEUR ENGAGÉ</h2>
</div>
</div>
<div class="ui container borderless center aligned">
<h1>ACCÈS AUX SERVICES</h1>
</div>
<div class="ui vertical stripe segment" style="padding: 3em 0;">
<div class="ui middle aligned grid container">
<div class="ui text container" style="padding: 0">
<p>Si vous êtes déjà clients, vous retrouverez sur cette page l'adresse directe des services de clawd.fr.</p>
<ul style="padding-left: 0">
<li style="list-style-type: none"><h5>Nextcloud: <a href="https://nc.clawd.fr/" target="_blank">nc.clawd.fr</a></h5></li>
<li style="list-style-type: none"><h5>Webmail: <a href="https://webmail.clawd.fr/" target="_blank">webmail.clawd.fr</a></h5></li>
<li style="list-style-type: none"><h5>Administration web/mail: <a href="https://ispc.atreides.pool.clawd.net/" target="_blank">ISPConfig</a></h5></li>
</ul>
</div>
</div>
</div>
<?php include 'includes/_footer.php'; ?>
</div>
<?php include 'includes/_assetsLate.php'; ?>
</body>
</html>

Binary file not shown.

After

Width:  |  Height:  |  Size: 28 KiB

@ -84,14 +84,16 @@ $currentPage = $pages['faq'];
<div class="ui middle aligned grid container">
<div class="row">
<h3 class="">Comment se déroule l'installation d'un nouveau client?</h3>
<p>Lorsqu'un nouveau client souscrit un contrat pour un VPS le déploiement se passe ainsi, dans l'ordre:</p>
<p>Lorsqu'un client souscrit un contrat pour un VPS le déploiement se passe ainsi, dans l'ordre:</p>
<ul>
<li>Création du VPS "vierge" selon un modèle pré-configuré sur Proxmox (un template interne que je maintiens à jour).</li>
<li>Configuration du nouveau VPS: attributionn de l'espace de stockage et des adresses IP sur le réseau interne, routage, procédures de backup et de monitoring, entre autres.</li>
<li>Configuration de l'instance Nextcloud: modification des DNS du nom de domaine du client si besoin, configuration de l'URL correspondante sur l'instance Nextcloud, ajout des premiers comptes administrateurs, vérification de l'état de l'instance et des fonctionnalités.</li>
<li>Création du VPS "vierge" selon un modèle pré-configuré sur Proxmox.</li>
<li>Configuration du nouveau VPS: attribution de l'espace de stockage et des adresses IP sur le réseau interne, routage, procédures de backup et de monitoring, entre autres.</li>
<li>Création des entrées DNS IPv4 et IPv6 par défaut (chaque VPS est livré avec un <a href="https://fr.wikipedia.org/wiki/Fully_qualified_domain_name" target="_blank">FQDN</a> dédié).</li>
<li>Première sauvegarde et restauration pour confirmer que tout est fonctionnel.</li>
<li>Livraison au client de sa nouvelle instance Nextcloud et de mon numéro de téléphone en cas de besoin.</li>
<li>Création des accès client à l'hyperviseur Proxmox (pour l'accès KVM, la gestion des sauvegardes et du firewall) et au monitoring.</li>
<li>Livraison au client de son nouveau VPS et de mon numéro de téléphone en cas de besoin.</li>
</ul>
<p>Pour les clients web et mail, les opérations sont un peu différentes et consistent essentiellement à créer des accès et configurer l'infrastructure pour accueillir un nouveau nom de domaine. Pour des comptes Nextcloud sur l'instance mutualisée c'est encore plus simple puisqu'il s'agit simplement d'y créer un compte par nouvel utilisateur.</p>
</div>
</div>
</div>

@ -56,6 +56,11 @@ $pages = [
"name" => "Tarifs",
"desc" => "Comment estimer un tarif libre",
],
"clients" => [
"key" => "clients",
"name" => "Déjà client?",
"desc" => "Raccourcis vers les services",
],
"finances" => [
"key" => "finances",
"name" => "Finances",
@ -71,6 +76,7 @@ $mainMenu = [
$pages["interventions"],
$pages["faq"],
];
$mainMenuRight = [$pages["clients"]];
$currentPage = $pages["index"];
@ -81,7 +87,7 @@ $currentPage = $pages["index"];
* @param array $override optional override options, same format as $p
* @return string HTML <a> element
*/
function pageLink(array $p, array $override = [])
function pageLink(array $p, array $override = []): string
{
global $currentPage;
@ -89,15 +95,16 @@ function pageLink(array $p, array $override = [])
$p = array_replace($p, $override);
}
$css = $currentPage == $p ? ["active", "item"] : ["item"];
$css = $currentPage['key'] == $p['key'] ? ["active", "item"] : ["item"];
if (isset($p['css'])) $css = array_unique(array_merge($css, explode(" ", $p['css'])));
$anchor = isset($p["anchor"]) ? "#" . $p["anchor"] : "";
$key = $p["key"] == "index" ? "index" : $p["key"];
$key = $p["key"] == "index" ? '' : $p["key"];
$url = "/" . $key . $anchor;
return '<a class="' .
implode(" ", $css) .
'" href="http://leto.local/clawd.fr' .
$url . '.php' .
'" href="https://clawd.fr' .
$url .
'" target="_self" title="' .
$p["desc"] .
'">' .

@ -7,6 +7,9 @@
foreach ($mainMenu as $item) {
echo ' ' . pageLink($item)."\r\n";
}
foreach ($mainMenuRight as $item) {
echo ' ' . pageLink($item, ['css'=>'right floated'])."\r\n";
}
?>
</div>
</div>

@ -25,7 +25,7 @@ $currentPage = $pages['index'];
<div class="ui container">
<h1 class="ui header clawdlogo">CLAWD.FR</h1>
<h2>HÉBERGEUR ENGAGÉ</h2>
<span class="intro">Vous avez des besoins en stockage de fichiers en ligne?<br>Vous voulez sortir des griffes des GAFAM et retrouver la maîtrise de vos données?<br>Vous êtes au bon endroit, laissez-vous guider!</span>
<span class="intro">Vous avez des besoins d'outils en ligne?<br>Vous voulez sortir des griffes des GAFAM et retrouver la maîtrise de vos données?<br>Vous êtes au bon endroit, laissez-vous guider!</span>
</div>
</div>
@ -33,7 +33,7 @@ $currentPage = $pages['index'];
<div class="ui four column doubling stackable grid container">
<div class="column">
<h2>Hébergeur</h2>
<p>Je propose actuellement des solutions <?= pageLink($pages['services'], array('name'=>'d\'hébergement Nextcloud')) ?>, à destination des particuliers, associations, TPE/PME et autres structures à taille humaine. Mon objectif premier est de rendre à l'utilisateur final la <strong>souveraineté de ses données</strong>.</p>
<p>Je propose des solutions d'hébergement <?= pageLink($pages['services'], array('name'=>'Nextcloud', 'anchor'=>'nextcloud')) ?>, <?= pageLink($pages['services'], array('name'=>'Web', 'anchor'=>'web')) ?>, <?= pageLink($pages['services'], array('name'=>'Mail', 'anchor'=>'mail')) ?>, et <?= pageLink($pages['services'], array('name'=>'VPS', 'anchor'=>'vps')) ?>. Mon objectif premier est de rendre à l'utilisateur final la <strong>souveraineté de ses données</strong>.</p>
<p>Concrètement, cela signifie que j'utilise exclusivement des logiciels open-source, qui garantissent à mes clients <strong>l'interopérabilité et la portabilité</strong> de leurs données.</p>
</div>
<div class="column">
@ -44,7 +44,7 @@ $currentPage = $pages['index'];
<div class="column">
<h2>À prix libre</h2>
<p>Oui, vous avez bien lu! Je pense que si vous me faites assez confiance pour prendre soin de vos données, je me dois de vous rendre la pareille en vous laissant juger de la valeur du service fourni.</p>
<p>Évidemment, j'ai moi aussi des factures à payer, je souhaite donc pouvoir tirer un bénéfice de mon activité. Ainsi, afin de vous permettre de prendre <strong>une décision éduquée</strong> quant au prix que vous voulez payer, je mets un point d'honneur à être <strong>aussi <?= pageLink($pages['transparence'], ['name'=>'transparent']) ?> que possible</strong> sur mes frais fixes.</p>
<p>Évidemment, j'ai moi aussi des factures à payer, je souhaite donc pouvoir tirer un bénéfice de mon activité. Ainsi, afin de vous permettre de prendre <strong>une décision éduquée</strong> quant au prix que vous voulez payer, je mets un point d'honneur à être <strong>aussi <?= pageLink($pages['transparence'], ['name'=>'transparent']) ?> que possible</strong> et je vous propose un <?= pageLink($pages['tarifs'], ['name'=>'calculateur']) ?> de tarif pour estimer au mieux vos mensualités.</p>
</div>
<div class="column">
<h2>Transparent</h2>

@ -36,7 +36,7 @@ $currentPage = $pages["interventions"];
<div class="ui text container">
<h2>Incidents en cours, interventions planifiées ou en cours</h2>
<p>Aucun incident en cours. Dernier incident le <a href="#incident-241027">27 Octobre 2024</a>.</p>
<p>Aucune intervention planifiée. Dernière intervention le <a href="#interv-241020">20 Octobre 2024</a>.</p>
<p>Aucune intervention planifiée. Dernière intervention le <a href="#interv-250919">19 Septembre 2025</a>.</p>
<!-- <p>Prochaine intervention planifiée le <a href="#interv-241020">20 Octobre 2024</a>.</p>-->
</div>
</div>
@ -65,6 +65,18 @@ $currentPage = $pages["interventions"];
<div class="ui text container">
<h2>Incidents & interventions passés</h2>
<a name="interv-250919"></a>
<div class="ui raised segment">
<div class="ui clearing basic segment">
<h4 class="ui left floated header">Nouveau serveur et mise à jour du site</h4>
<h4 class="ui right floated header dimmed">le 19/09/2025</h4>
</div>
<div class="ui basic segment">
<p>Un nouveau serveur dédié à été ajouté à l'infrastructure, ce serveur est spécialement configuré et réservé pour l'hébergement de clients sur VPS seulement. J'y ai également installé le backend hautes-performances (HPB) pour Nextcloud Talk, qui est accessible depuis l'instance Nextcloud mutualisée. Cela devrait améliorer grandement les possibilités de visio-conférence via Nextcloud.</p>
<p>Quelques pages du site ont aussi été mises à jour, notamment pour y ajouter l'offre VPS maintenant officiellement proposée.</p>
</div>
</div>
<a name="interv-250712"></a>
<div class="ui raised segment">
<div class="ui clearing basic segment">

@ -33,6 +33,7 @@ $currentPage = $pages['services'];
<h1>SERVICES PROPOSÉS</h1>
</div>
<a name="nextcloud"></a>
<div class="ui vertical stripe segment">
<div class="ui middle aligned stackable grid container">
<div class="row">
@ -75,6 +76,7 @@ $currentPage = $pages['services'];
</div>
</div>
<a name="web"></a>
<div class="ui vertical stripe segment">
<div class="ui middle aligned stackable grid container">
<div class="row">
@ -106,6 +108,7 @@ $currentPage = $pages['services'];
</div>
</div>
<a name="mail"></a>
<div class="ui vertical stripe segment">
<div class="ui middle aligned stackable grid container">
<div class="row">
@ -132,6 +135,38 @@ $currentPage = $pages['services'];
</div>
</div>
<a name="vps"></a>
<div class="ui vertical stripe segment">
<div class="ui middle aligned stackable grid container">
<div class="row">
<div class="column">
<h2>Hébergement VPS</h2>
<p>Si vos besoins en hébergement sont spécifiques ou que vous avez tout simplement besoin d'avoir un accès root sur un serveur, c'est la solution.</p>
<p>Vous pourrez être livré rapidement d'un VPS sous Debian 13 (autres OS sur demande) avec une plage IPv6 (/112) publique (IPv4: 100 ports via NAT + 80/443 via PROXY), un accès KVM via l'hyperviseur Proxmox et les sauvegardes pré-installés (PVE + borg).</p>
</div>
</div>
</div>
<div class="ui two column doubling stackable grid container">
<div class="column">
<h3>Pour quoi?</h3>
<ul class="list">
<li>Stack docker/compose</li>
<li>Application spécifique linux</li>
<li>Pipeline CI/CD</li>
<li>Boutique en ligne (Prestashop, Magento, Sylius)</li>
<li>Backend ou API pour une autre application</li>
</ul>
</div>
<div class="column">
<h3>Pour qui?</h3>
<p>Petites et moyennes entreprises, associations, administrations, groupes d'amis ou familiaux, équipes de développement, travailleurs indépendants</p>
<p><a href="mailto:contact@clawd.fr" title="Envoyer un mail" target="_blank" class="ui button primary big"><i class="icon envelope outline"></i> contact@clawd.fr</a></p>
</div>
</div>
</div>
<a name="infogerance"></a>
<div class="ui vertical stripe segment">
<div class="ui middle aligned stackable grid container">
<div class="row">
@ -158,6 +193,7 @@ $currentPage = $pages['services'];
</div>
</div>
<a name="conseil"></a>
<div class="ui vertical stripe segment">
<div class="ui middle aligned stackable grid container">
<div class="row">

@ -0,0 +1,444 @@
<?php
require_once "includes/_config.php";
$currentPage = $pages["tarifs"];
?><!DOCTYPE html>
<html lang="fr">
<head>
<?php include "includes/_meta.php"; ?>
<meta name="description" content="clawd.fr Solutions d'hébergement Nextcloud à prix libre" />
<link rel="canonical" href="https://clawd.fr/tarifs" />
<title>clawd.fr - Service d'hébergement Nextcloud à prix libre</title>
<?php include "includes/_assets.php"; ?>
<style>
p.highlight {
color: #000000;
text-shadow: 0 0px 3px rgb(247 255 133);
}
#calc {
border: none;
box-shadow: none;
padding: 0;
margin-bottom: 2em;
}
#calc .accordion .title.active {
padding: 0 inherit;
}
#calc .accordion .title h4 {
display: inline;
font-size: 3em;
line-height: 0.1em;
position: relative;
top: 3px;
}
#calc .accordion .content {
padding: 2em;
}
#calc .accordion .content h5 {
font-size: 2.4em;
color: #414141;
}
#calc .ui.placeholder.segment {
margin: 4em 0;
padding: 1em;
min-height: 10em;
}
#calc .ui.placeholder.segment:first-of-type {
background-color: #ffffff;
border: none;
}
.tarif {
position: relative;
transform: translate(0);
transform-style: preserve-3d;
border: none;
background-color: #ffffff;
}
.tarif:before {
content:"";
position: absolute;
inset: -5px;
transform: translate3d(0,0,-1px);
background: conic-gradient(from 90deg at 40% -25%, #ffd700, #f79d03, #ee6907, #e6390a, #de0d0d, #d61039, #cf1261, #c71585, #cf1261, #d61039, #de0d0d, #ee6907, #f79d03, #ffd700, #ffd700, #ffd700);
filter: blur(10px);
}
#calc .ui.placeholder.segment p,
#calc .ui.placeholder.segment div.ui.list {
font-size: 1.3em;
padding: 1em 2em;
margin: 0;
}
#calc .ui.stackable.four.column.grid {
margin-bottom: 2em;
}
#calc .ui.stackable.four.column.grid .column {
padding: .6em 1.2em;
}
.ui.label.price {
font-family: "League Gothic";
font-variant-caps: all-small-caps;
padding: .0em .3em .1em .3em;
text-shadow: 0 1px 0 rgb(99 99 99 / 40%);
}
.ui.list .ui.label.price {
font-size: 2rem;
line-height: 1rem;
height: 1.6rem;
padding: .2rem;
}
.ui.list .item {
/*line-height: 2em;*/
}
.ui.grid .ui.label.price {
font-size: 3.5em;
line-height: 1em;
width: 100%;
display: block;
}
.ui.list .ui.label.price span.text,
.ui.list .ui.label.price span.price {
color: #ffffff;
}
.ui.grid .ui.label.price span.text,
.ui.grid .ui.label.price span.price {
color: #ffffff;
}
#calc .ui.segment.placeholder .ui.list .item {
/*padding-bottom: 0;*/
}
#calc .ui.stackable.four.column.grid.sticky {
background-color: rgba(255, 255, 255, .8);
box-shadow: #ffffff 0 0 4px;
}
#calc .ui.stackable.four.column.grid.sticky.fixed {
margin-top: 46px !important;
margin-left: 0px;
}
.ui.grid .ui.label.price.teal,
.ui.list .ui.label.price.inverted.teal {
background-color: #00b5ad;
}
.ui.grid .ui.label.price.blue,
.ui.list .ui.label.price.inverted.blue {
background-color: #2185d0;
}
.ui.grid .ui.label.price.violet,
.ui.list .ui.label.price.inverted.violet {
background-color: #6435c9;
}
.ui.grid .ui.label.price.purple,
.ui.list .ui.label.price.inverted.purple {
background-color: #a333c8;
}
#calc .ui.horizontal.wrapping.segments .ui.segment>* {
position: relative;
}
#calc .ui.stackable.four.column.grid .ui.label .detail.price {
float: right;
opacity: 1;
margin-left: 0;
}
#calc .ui.toggle.checkbox.nc_opt_vol>* {
display: inline;
}
#calc .ui.shape, #calc .ui.shape > * {
width: 100%;
}
@media only screen and (max-width: 800px) {
#calc {
margin: 0 0 2em 0;
}
#calc .ui.placeholder.segment p,
#calc .ui.placeholder.segment div.ui.list {
font-size: 1.2em;
padding: .2em .5em;
margin: 0;
}
#calc .accordion .content {
padding: 1em;
padding-top: 0;
}
#calc .accordion .content h5 {
margin: 2px 0;
}
#calc .ui.stackable.four.column.grid .column {
padding: 0 1.2em;
}
#calc .ui.stackable.four.column.grid .ui.label {
font-size: 2.5em;
line-height: .7em;
}
#calc .ui.stackable.four.column.grid.sticky.fixed {
margin-top: 4px;
margin-left: 0px;
}
}
</style>
</head>
<body class="clawd">
<?php include "includes/_menus.php"; ?>
<!-- Page Contents -->
<div class="pusher">
<div class="ui inverted vertical masthead center aligned segment">
<?php include "includes/_mainmenu.php"; ?>
<div class="ui text container">
<h1 class="ui header clawdlogo">CLAWD.FR</h1>
<h2>HÉBERGEUR ENGAGÉ</h2>
</div>
</div>
<div class="ui container borderless center aligned">
<h1>TARIFS</h1>
</div>
<div class="ui middle aligned stackable container">
<div class="row">
<div class="wide column">
<p>Tarif libre ne veut pas dire gratuit, mais estimer la valeur d'un service n'est pas une mince affaire. Pour vous aider dans le choix du tarif de votre offre, voici un calculateur qui vous permettra à la fois de sélectionner vos options et de connaître la fourchette habituelle dans laquelle vous pourrez vous positionner.</p>
<p>Ce calculateur est là pour vous assister dans vos choix et vous donner une idée des tarifs habituels. La fourchette donnée n'est pas définitive ni contractuelle, tout est négociable et peut être revu ensemble à tout moment.</p>
<p>Pour l'utiliser, choisissez dans chaque catégorie les spécifications que vous estimez adéquates à votre besoin, et la fourchette de tarif sera mise à jour automatiquement.</p>
<p>La fourchette de tarif se présente en 4 tranches:</p>
<div class="ui list items unstackable">
<div class="item">
<span class="ui label inverted teal price">
<span class="text">Minimum</span>
</span>
<div class="content">
C'est le seuil en dessous duquel je ne peux pas accepter.
</div>
</div>
<div class="item">
<span class="ui label inverted blue price">
<span class="text">Correct</span>
</span>
<div class="content">
Le tarif que je trouverais adapté pour la même offre chez un autre membre du CHATONS.
</div>
</div>
<div class="item">
<span class="ui label inverted violet price">
<span class="text">Généreux</span>
</span>
<div class="content">
Un tarif un peu plus élevé qui incite à soutenir l'engagement.
</div>
</div>
<div class="item">
<span class="ui label inverted purple price">
<span class="text">Maximum</span>
</span>
<div class="content">
Il y a une limite à tout et voilà la mienne.
</div>
</div>
</div>
</div>
</div>
</div>
<div class="ui container borderless">
<div class="ui segment container borderless" id="calc">
<div class="ui placeholder segment tarif">
<div class="ui two column stackable left aligned grid">
<div class="top aligned row">
<div class="column first">
<h4 class="ui header">les tarifs sont</h4>
<ul class="ui list">
<li class="item">
mensuels
</li>
<li class="item">
sans engagement
</li>
<li class="item">
non-assujettis à la TVA
</li>
<li class="item">
négociables
</li>
</ul>
</div>
<div class="column second">
<h4 class="ui header">et incluent</h4>
<ul class="ui list">
<li class="item">
la mise en place de vos options
</li>
<li class="item">
la maintenance des services
</li>
<li class="item">
la sauvegarde régulière des données
</li>
<li class="item">
un interlocuteur unique et humain
</li>
</ul>
</div>
</div>
</div>
</div>
<div class="ui stackable doubling four column grid sticky">
<div class="column">
<div class="ui label inverted teal huge price">
<span class="text">minimum&nbsp;</span>
<span class="detail price min" id="price_0">0€</span>
</div>
</div>
<div class="column">
<div class="ui label inverted blue huge price">
<span class="text">correct&nbsp;</span>
<span class="detail price cor" id="price_1">0€</span>
</div>
</div>
<div class="column">
<div class="ui label inverted violet huge price">
<span class="text">généreux&nbsp;</span>
<span class="detail price gen" id="price_2">0€</span>
</div>
</div>
<div class="column">
<div class="ui label inverted purple huge price">
<span class="text">maximum&nbsp;</span>
<span class="detail price max" id="price_3">0€</span>
</div>
</div>
</div>
<div class="ui fluid styled accordion">
<div class="title active">
<i class="dropdown icon"></i>
<h4>Nextcloud</h4>
</div>
<div class="content active">
<h5><i class="icon hdd"></i> Stockage: <span id="nextcloud_stockage_display">0</span>&nbsp;Go</h5>
<p>Volume de stockage à répartir entre vos comptes et dossiers partagés.</p>
<div class="ui labeled ticked slider grey" id="nextcloud_stockage_source"></div>
<div class="ui shape" id="ncusers">
<div class="sides">
<div class="ui side">
<h5><i class="icon users"></i>Comptes et groupes illimités <i class="icon infinity"></i></h5>
<p>+ Personnalisation et installation d'applications à volonté.</p>
</div>
<div class="ui side active">
<h5><i class="icon users"></i>Comptes et groupes utilisateurs: <span id="nextcloud_users_display">0</span></h5>
<p>Les dossiers partagés sont à compter comme un compte supplémentaire.</p>
</div>
</div>
</div>
<p></p>
<div class="ui labeled ticked slider grey" id="nextcloud_users_source"></div>
<h5><i class="icon privacy"></i>Options</h5>
<p></p>
<div class="ui toggle checkbox nc_opt_vol">
<input type="checkbox" name="nc_opt_vol" id="nc_opt_vol">
<label for="nc_opt_vol"><strong>Gros volume</strong></label>:
</div>
ajouter
<div class="ui right labeled input">
<input id="nc_opt_vol_val" name="nc_opt_vol_val" type="number" placeholder="1" value="1" min="1" max="150" step="1">
<div class="ui basic label">
To
</div>
</div> d'espace supplémentaire. Entre <span id="teraeurolow">-</span> et <span id="teraeurohigh">-</span> € par To.
<p></p>
<div class="ui toggle checkbox nc_opt_lxc">
<input type="checkbox" name="nc_opt_lxc" id="nc_opt_lxc">
<label for="nc_opt_lxc"><strong>Privé</strong>: votre propre instance Nextcloud privée, administrable et configurable.</label>
</div>
<p></p>
<div class="ui toggle checkbox nc_opt_decicated">
<input type="checkbox" name="nc_opt_decicated" id="nc_opt_decicated">
<label for="nc_opt_decicated"><strong>Dédié</strong>: sur un serveur dédié à votre structure (<strong>serveur inclus</strong>).</label>
</div>
<p></p>
<div class="ui toggle checkbox nc_opt_onprem">
<input type="checkbox" name="nc_opt_onprem" id="nc_opt_onprem">
<label for="nc_opt_onprem"><strong>Sur site</strong>: sur un serveur dédié à votre structure, dans vos locaux (<strong>serveur non inclus!</strong>).</label>
</div>
</div>
<div class="title">
<i class="dropdown icon"></i>
<h4>Hébergement web</h4>
</div>
<div class="content">
<h5><i class="icon hdd"></i>Stockage: <span id="wh_stockage_display">0</span>&nbsp;Go</h5>
<p>Volume de stockage à répartir entre vos différents sites. Il s'agit d'un quota souple: la limite "dure" étant de 2 fois le quota souple.</p>
<div class="ui labeled ticked slider grey" id="wh_stockage_source"></div>
<h5><i class="icon door open"></i>Sites: <span id="wh_sites_display">0</span></h5>
<p>Un site comprend une adresse en HTTPS, une base de données (limitée à 500Mo) et jusqu'à 3 comptes FTP.</p>
<div class="ui labeled ticked slider grey" id="wh_sites_source"></div>
<h5><i class="icon coffee"></i>Options</h5>
<p></p>
<div class="ui toggle checkbox wh_opt_preinstall">
<input type="checkbox" name="wh_opt_preinstall" id="wh_opt_preinstall">
<label for="wh_opt_preinstall"><strong>Clé-en-main</strong>: Wordpress ou un autre outil de construction de site, pré-installé et configuré pour vous.</label>
</div>
</div>
<div class="title">
<i class="dropdown icon"></i>
<h4>Hébergement mail</h4>
</div>
<div class="content">
<h5><i class="icon hdd"></i> Stockage: <span id="mail_stockage_display">0</span>&nbsp;Go</h5>
<p>Volume de stockage à répartir entre vos différentes boîtes mail.</p>
<div class="ui labeled ticked slider grey" id="mail_stockage_source"></div>
<h5><i class="icon inbox"></i>Boîtes mail: <span id="mail_users_display">0</span></h5>
<p>Le nombre de boîtes mail dont vous avez besoin.</p>
<div class="ui labeled ticked slider grey" id="mail_users_source"></div>
<h5><i class="icon at"></i>Options</h5>
<p></p>
<div class="ui toggle checkbox mail_opt_catchall">
<input type="checkbox" name="mail_opt_catchall" id="mail_opt_catchall">
<label for="mail_opt_catchall"><strong>Catch-all</strong>: envoyer et recevoir de n'importe quelle adresse@votredomaine depuis une seule et même boîte mail.</label>
</div>
</div>
<div class="title">
<i class="dropdown icon"></i>
<h4>Hébergement VPS</h4>
</div>
<div class="content">
<h5><i class="icon hdd"></i> HDD: <span id="vps_stockage_display">0</span>&nbsp;Go</h5>
<p>Volume de stockage attaché à votre VPS.</p>
<div class="ui labeled ticked slider grey" id="vps_stockage_source"></div>
<h5><i class="icon microchip"></i> vCPU: <span id="vps_cpu_display">0</span></h5>
<p>Nombre de cœurs pour le processeur de votre VPS.</p>
<div class="ui labeled ticked slider grey" id="vps_cpu_source"></div>
<h5><i class="icon memory"></i> RAM: <span id="vps_ram_display">0</span>&nbsp;Go</h5>
<p>Volume de mémoire vive.</p>
<div class="ui labeled ticked slider grey" id="vps_ram_source"></div>
</div>
</div>
</div>
</div>
<?php include "includes/_footer.php"; ?>
</div>
<?php include "includes/_assetsLate.php"; ?>
<script src="assets/calc.js"></script>
</body>
</html>

@ -40,8 +40,7 @@ $currentPage = $pages['transparence'];
<div class=" wide column">
<h2>Une structure à taille humaine</h2>
<p>L'entreprise qui soutient mon activité suit le régime de la micro-entreprise. Je suis seul à gérer l'administration technique de l'infrastructure et la relation client.</p>
<p>Vous profitez d'une relation directe et franche avec une personne réelle et impliquée, j'étudie toutes les demandes et problématiques particulières, et si c'est possible pour chacun, je préfère toujours rencontrer en personne mes clients potentiels. Tout ceci demande du temps, un solide bagage technique et une veille permanente, que je suis heureux de proposer à mes clients.</p>
<p>L'autre côté de la pièce est assez évident: sans moi, plus personne aux commandes. Mon infrastructure se veut redondante, pas moi. À ce jour la solution envisagée à ce problème passe par un partenariat avec un autre hébegeur du même type: quelqu'un qui partagerait les mêmes valeurs et avec qui je passerais un accord qui autoriserait légalement et techniquement chacun à reprendre le flambeau de l'autre en cas d'accident grave. Les recherches sont en cours de ce côté et des pistes s'esquissent déjà, plus d'informations à ce sujet en temps utiles.</p>
<p>Vous profitez d'une relation directe et franche avec une personne réelle et impliquée, j'étudie toutes les demandes et problématiques particulières, et si c'est possible pour chacun, j'apprécie toujours de rencontrer en personne mes clients. Tout ceci demande du temps, un solide bagage technique et une veille permanente, que je suis heureux de proposer à mes clients.</p>
</div>
</div>
</div>
@ -56,14 +55,15 @@ $currentPage = $pages['transparence'];
</div>
<div class="eight wide column">
<h3>Matériel</h3>
<p>L'infrastructure d'hébergement est actuellement composée d'un seul serveur hébergé par la société <a href="https://www.hetzner.com/" target="_blank">Hetzner Online GmbH</a> dans son datacenter de Falkenstein en Allemagne (FSN1-DC1). Étant un <a href="https://fr.wikipedia.org/wiki/Serveur_d%C3%A9di%C3%A9" target="_blank">serveur dédié</a>, je suis le seul administrateur de cette machine.</p>
<p>Ce serveur est équipé d'un processeur Intel Xeon E3-1270V3 et utilise 4 disques durs de 10TB chacun, agrégés en un volume <a href="https://fr.wikipedia.org/wiki/RAID_(informatique)#RAID_10_(ou_RAID_1+0)" target="_blank">RAID10</a> (hardware) de 20TB et peut donc supporter sans perte de données la panne d'un disque dur, voire deux dans certains cas. La mémoire vive utilisée (32GB DDR3) est certifiée <a href="https://fr.wikipedia.org/wiki/M%C3%A9moire_%C3%A0_code_correcteur_d%27erreurs" target="_blank">ECC</a>. Cette machine ne dispose actuellement que d'un seul bloc d'alimentation et d'une seule interface réseau (Intel I210, 1Gbps).</p>
<p>J'utilise également un NAS Synology à mon domicile pour y stocker une copie complète des sauvegardes quotidiennes cryptées.</p>
<p>L'infrastructure d'hébergement est actuellement composée de deux serveurs loués à la société <a href="https://www.hetzner.com/" target="_blank">Hetzner Online GmbH</a> dans son datacenter de Falkenstein en Allemagne (FSN1). Étant des <a href="https://fr.wikipedia.org/wiki/Serveur_d%C3%A9di%C3%A9" target="_blank">serveurs dédiés</a>, je suis le seul administrateur de ces machines.</p>
<p>Le premier serveur <strong>atreides</strong> est équipé d'un CPU Intel Xeon E3-1270V3, utilise 4 disques durs de 10TB chacun, et dispose de 32GB de RAM (DDR3 ECC).</p>
<p>Le second serveur <strong>corrino</strong> est équipé d'un CPU Intel Xeon E3-1275V6, utilise 4 disques durs de 4TB chacun, et dispose de 64GB de RAM (DDR4 ECC).</p>
<p>Les deux serveurs ont chacun un contrôleur réseau Intel 1Gbps (I210 et I219-LM), leurs disques durs sont aggrégés en <a href="https://fr.wikipedia.org/wiki/RAID_(informatique)" target="_blank">RAID 1+0</a>, leur mémoire vive est certifiée <a href="https://fr.wikipedia.org/wiki/M%C3%A9moire_%C3%A0_code_correcteur_d%27erreurs" target="_blank">ECC</a>, et il n'ont qu'un seul bloc d'alimentation.</p>
</div>
<div class="eight wide column">
<h3>Logiciel</h3>
<p>Le serveur utilise l'<a href="https://fr.wikipedia.org/wiki/Hyperviseur" target="_blank">hyperviseur</a> <a href="https://www.proxmox.com/en/" target="_blank">Proxmox</a> basé sur la distribution <a href="https://www.debian.org/" target="_blank">Debian</a>. Chaque client est hébergé sur un conteneur <a href="https://fr.wikipedia.org/wiki/LXC" target="_blank">LXC</a> sous Debian également. Côté sauvegarde, c'est le logiciel <a href="https://www.borgbackup.org/" target="_blank">borgbackup</a> qui est utilisé pour effectuer une sauvegarde complète de l'hyperviseur et des conteneurs clients chaque jour, ces sauvegardes sont ensuite chiffrées puis envoyées vers un serveur de stockage géré par <a href="https://www.borgbase.com/" target="_blank">BorgBase</a> dans un datacenter d'Hetzner en Finlande.</p>
<p>Les logiciels cités ici sont tous open-source, cependant le contrôleur RAID Hardware (Adaptec 8405 SGL) de ce serveur utilise un micro-logiciel dont je n'ai pas pu trouver les détails de licence ou le code source, je dois donc le considérer comme propriétaire et non libre.</p>
<p>Les serveurs utilisent l'<a href="https://fr.wikipedia.org/wiki/Hyperviseur" target="_blank">hyperviseur</a> <a href="https://www.proxmox.com/en/" target="_blank">Proxmox</a> basé sur la distribution <a href="https://www.debian.org/" target="_blank">Debian</a>. Les différents services et clients sont hébergés sur des VM sous Debian également. Côté sauvegarde, c'est le logiciel <a href="https://www.borgbackup.org/" target="_blank">borgbackup</a> qui est utilisé pour effectuer une sauvegarde complète de l'hyperviseur et des VM chaque jour, ces sauvegardes sont chiffrées est envoyées vers un serveur de stockage géré par <a href="https://www.borgbase.com/" target="_blank">BorgBase</a> dans un datacenter d'Hetzner en Finlande.</p>
<p>Les logiciels cités ici sont tous open-source, cependant le contrôleur RAID Hardware (Adaptec 8405 SGL) du serveur atreides utilise un micro-logiciel dont je n'ai pas pu trouver les détails de licence ou le code source, je dois donc le considérer comme propriétaire et non libre.</p>
</div>
</div>
<div class="sixteen wide column">
@ -87,20 +87,20 @@ $currentPage = $pages['transparence'];
<div class="height wide column">
<h3>Locations et licences</h3>
<ul class="list">
<li>Serveur: ~100€/mois</li>
<li>Licence Proxmox "Community": 90€/an</li>
<li>Noms de domaine (clawd.fr & clawd.net): 30€/an</li>
<li>Stockage des sauvegardes: 2TB ~128€/an; ~4.27€/TB/mois au delà</li>
<li>Serveurs: ~160€/mois</li>
<li>Licence Proxmox "Community": 90€/an/serveur</li>
<li>Noms de domaine (.fr .net .org): 45€/an</li>
<li>Stockage des sauvegardes: 2TB ~160€/an</li>
</ul>
<p>Total environ 1930€ par an soit ~120€/mois</p>
<p>Pour résumer, si la totalité des 20TB étaient tous loués pour 60€ par TB et par mois, je ferais un bénéfice mensuel net d'environ 770€. Pas de quoi s'affoler, mais bien assez pour attaquer <a href="#objectifs" target="_self" title="Objectifs à moyen et long terme">la suite du plan</a>!</p>
<p>Total environ 2300€ par an soit ~190€/mois</p>
<p>Sans compter bien sûr le temps de travail.</p>
</div>
<div class="height wide column">
<h3>Temps de travail</h3>
<ul class="list">
<li>Installation et configuration initiale de l'infrastructure: environ 40h</li>
<li>Installation simple d'un nouveau client: 1 à 2h</li>
<li>Maintenance et mises à jour: 4h pour l'infrastructure + 20 minutes par client, 2 à 4 fois par an</li>
<li>Installation et configuration initiale de l'infrastructure: environ 60h par serveur</li>
<li>Installation simple d'un nouveau client: 15 minutes à 2 heures selon le cas</li>
<li>Maintenance et mises à jour: 8h pour l'infrastructure + 20 minutes par client, 2 à 4 fois par an</li>
<li>Veille technique, maintenance et sécurité: 1 à 4 heures par jour, 2 à 4 jours par semaine</li>
<li>Vérification de l'état des sauvegardes: 10 minutes par client, une fois par mois</li>
</ul>
@ -124,15 +124,15 @@ $currentPage = $pages['transparence'];
<div class="eight wide column">
<h3>Infrastructure multi-sites</h3>
<p>Actuellement l'infrastructure d'hébergement est assez robuste pour accueillir de nombreux clients, cependant une panne majeure du serveur, un incident grave dans le datacenter ou un piratage ciblé pourraient perturber voire interrompre les services. Les sauvegardes sont là pour ça et me permettraient de rétablir les services assez rapidement (quelques heures à quelque jours selon la gravité du problème).<br>
Il existe cependant des moyens techniques de se prémunir des pannes les plus courantes. Le premier stade consiste à multiplier les serveurs en les répartissant sur des zones géographiques différentes. Avec plusieurs serveurs il est possible de faire basculer automatiquement les clients d'un serveur à un autre en cas de panne de l'un d'eux. En fonctionnement normal cela permet aussi de répartir la charge sur plusieurs machines et ainsi d'améliorer la qualité de service.<br>
Ce type d'infrastructure n'est pas difficile à mettre en place, la principale difficulté reste financière, aussi je ne pourrai m'engager dans cette voie que lorsque j'aurai assez de clients pour soutenir une telle charge.</p>
<p>Actuellement l'infrastructure d'hébergement est assez robuste pour accueillir de nombreux clients, cependant une panne majeure d'un serveur, un incident grave dans le datacenter ou un piratage ciblé pourraient perturber voire interrompre les services. Les sauvegardes sont là pour ça et me permettraient de rétablir les services assez rapidement (quelques heures à quelque jours selon la gravité du problème).<br>
Il existe cependant des moyens techniques de se prémunir des pannes les plus courantes. Le premier stade consiste à multiplier les serveurs en les répartissant sur des zones géographiques différentes. Avec plusieurs serveurs configurés ensemble il est possible de faire basculer automatiquement les clients d'un serveur à un autre en cas de panne de l'un d'eux. En fonctionnement normal cela permet aussi de répartir la charge sur plusieurs machines et ainsi d'améliorer la qualité de service.<br>
Ce type d'infrastructure n'est pas difficile à mettre en place, la principale difficulté reste financière, aussi je ne pourrai m'engager dans cette voie que lorsque j'arriverai à tirer un bénéfice suffisant pour supporter une telle charge.</p>
</div>
<div class="eight wide column">
<h3>Garantie de disponibilité</h3>
<p>Un des objectifs à moyen terme et de pouvoir garantir à mes clients par engagement contractuel une disponibilité des services de 99.9%.</p>
<p>Un des objectifs à moyen terme et de pouvoir garantir à mes clients par engagement contractuel une disponibilité des services de 99.9% (<a href="https://uptime.is/99.9" target="_blank">SLA "trois neufs"</a>).</p>
<h3>Garantie de continuité</h3>
<p>Étant au commencement de cette activité, je ne peux garantir sa perrennité au delà de quelques mois. Avec une base de clients suffisante je pourrai garantir une continuité de service plus longue même en cas d'arrêt planifié de l'activité.</p>
<p>L'activité ayant maintenant quelques années, je sais que même en cas d'arrêt planifié je peux continuer à assurer les services pour au moins 6 mois, ce qui est confortable pour permettre à chaque client de migrer ses données et services sans problème.</p>
</div>
</div>

Loading…
Cancel
Save