2078 lines
84 KiB
HTML
2078 lines
84 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="en">
|
|
<head>
|
|
<link rel="preconnect" href="https://d3js.org" crossorigin>
|
|
<link rel="preconnect" href="https://cdn.jsdelivr.net" crossorigin>
|
|
<meta charset="UTF-8">
|
|
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
|
<link rel="icon" type="image/svg+xml" href="/favicon.svg">
|
|
<link rel="alternate icon" href="/favicon.ico">
|
|
<title>Odoo Enterprise Hosting 2026 | Odoo Expertos · EN</title>
|
|
|
|
<meta name="description" content="Guia definitiva de Hosting para Odoo Enterprise en 2026. Requisitos de licencias, recursos necesarios, mejores Providers (Odoo.sh - Odoo Enterprise Hosting 2026 | EN">
|
|
<meta name="keywords" content="Odoo Enterprise Hosting, Odoo Hosting Enterprise 2026, licencia Odoo Enterprise, Odoo.sh enterprise, cloudpepper Odoo, requisitos Odoo Enterprise, precio Odoo Enterprise">
|
|
<meta name="author" content="Dr. Equipo Odoo Expertos">
|
|
<meta name="robots" content="index, follow">
|
|
<meta name="language" content="es">
|
|
|
|
<link rel="canonical" href="https://www.odoo-expertos.com/Odoo-Hosting/Odoo-enterprise-Hosting-2026/">
|
|
|
|
<!-- Hreflang -->
|
|
<link rel="alternate" hreflang="en" href="https://www.odoo-expertos.com/Odoo-Hosting/Odoo-enterprise-Hosting-2026/" />
|
|
<link rel="alternate" hreflang="en" href="https://www.odoo-expertos.com/en/Odoo-Hosting/Odoo-enterprise-Hosting-2026/" />
|
|
<link rel="alternate" hreflang="de" href="https://www.odoo-expertos.com/de/Odoo-Hosting/Odoo-enterprise-Hosting-2026/" />
|
|
<link rel="alternate" hreflang="fr" href="https://www.odoo-expertos.com/fr/Odoo-Hosting/Odoo-enterprise-Hosting-2026/" />
|
|
<link rel="alternate" hreflang="x-default" href="https://www.odoo-expertos.com/Odoo-Hosting/Odoo-enterprise-Hosting-2026/" />
|
|
|
|
<!-- Open Graph -->
|
|
<meta property="og:title" content="Odoo Enterprise Hosting 2026: Complete guide de Licencias y Providers">
|
|
<meta property="og:description" content="Todo sobre Hosting para Odoo Enterprise: licencias, requisitos, Odoo.sh, Cloudpepper y Analysis de precios Updated a 2026.">
|
|
<meta property="og:type" content="article">
|
|
<meta property="og:url" content="https://www.odoo-expertos.com/Odoo-Hosting/Odoo-enterprise-Hosting-2026/">
|
|
<meta property="og:image" content="https://www.odoo-expertos.com/images/Odoo-enterprise-Hosting-2026.jpg">
|
|
<meta property="og:site_name" content="Odoo Expertos">
|
|
<meta property="og:locale" content="es_ES">
|
|
|
|
<!-- Twitter Card -->
|
|
<meta name="twitter:card" content="summary_large_image">
|
|
<meta name="twitter:title" content="Odoo Enterprise Hosting 2026: Complete guide">
|
|
<meta name="twitter:description" content="Guia definitiva de Hosting para Odoo Enterprise: licencias, recursos, Providers y precios.">
|
|
|
|
<!-- Schema.org Article -->
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "Article",
|
|
"headline": "Odoo Enterprise Hosting 2026: Complete guide de Licencias, Recursos y Providers",
|
|
"description": "Guia definitiva de Hosting para Odoo Enterprise en 2026. Requisitos de licencias, recursos necesarios, mejores Providers y Analysis de precios.",
|
|
"author": {
|
|
"@type": "Person",
|
|
"name": "Dr. Equipo Odoo Expertos",
|
|
"url": "https://www.odoo-expertos.com/autor/maria-elena-rodriguez/",
|
|
"jobTitle": "Senior ERP Systems Consultant"
|
|
},
|
|
"publisher": {
|
|
"@type": "Organization",
|
|
"name": "Odoo Expertos",
|
|
"logo": {
|
|
"@type": "ImageObject",
|
|
"url": "https://www.odoo-expertos.com/logo.png"
|
|
}
|
|
},
|
|
"datePublished": "2026-01-25",
|
|
"dateModified": "2026-01-25",
|
|
"mainEntityOfPage": {
|
|
"@type": "WebPage",
|
|
"@id": "https://www.odoo-expertos.com/Odoo-Hosting/Odoo-enterprise-Hosting-2026/"
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<!-- FAQ Schema -->
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "FAQPage",
|
|
"mainEntity": [
|
|
{
|
|
"@type": "Question",
|
|
"name": "Cual es la diferencia entre Odoo Community y Enterprise para Hosting?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "Odoo Enterprise requiere aproximadamente un 50-100% mas de recursos de servidor debido a sus modulos adicionales. Ademas, necesita una licencia oficial de Odoo SA que se paga por usuario al ano. Enterprise incluye modulos avanzados como Contabilidad completa, Fabricacion MRP II, Firma electronica, entre otros."
|
|
}
|
|
},
|
|
{
|
|
"@type": "Question",
|
|
"name": "Cuanto cuesta la licencia de Odoo Enterprise?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "La licencia de Odoo Enterprise cuesta aproximadamente 24-31 EUR por usuario al mes (facturado anualmente). El precio exacto Depends del numero de usuarios y Yes incluyes Hosting en Odoo.sh. Para empresas con mas de 50 usuarios, existen descuentos por volumen."
|
|
}
|
|
},
|
|
{
|
|
"@type": "Question",
|
|
"name": "Puedo alojar Odoo Enterprise fuera de Odoo.sh?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "Yes, puedes alojar Odoo Enterprise en cualquier servidor siempre que tengas una licencia valida de Odoo SA. Providers como Cloudpepper, Hetzner o AWS permiten desplegar Enterprise con tu propia licencia. Sin embargo, perderas las ventajas de integracion Native de Odoo.sh."
|
|
}
|
|
},
|
|
{
|
|
"@type": "Question",
|
|
"name": "Que recursos de servidor necesita Odoo Enterprise?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "Odoo Enterprise requiere minimo 8GB de RAM, 4 CPU cores, 100GB SSD y PostgreSQL 14+. Para entornos de produccion con mas de 20 usuarios, recomendamos 16GB RAM, 8 cores y almacenamiento NVMe. La configuracion de workers debe ser (CPU cores x 2) + 1."
|
|
}
|
|
},
|
|
{
|
|
"@type": "Question",
|
|
"name": "Odoo.sh es la mejor opcion para Enterprise?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "Odoo.sh es la opcion oficial y mas integrada para Enterprise, con actualizaciones automaticas, soporte directo de Odoo y entornos de staging incluidos. Sin embargo, Providers como Cloudpepper ofrecen alternativas mas economicas con soporte especializado y mayor flexibilidad de configuracion."
|
|
}
|
|
},
|
|
{
|
|
"@type": "Question",
|
|
"name": "Como funciona el modelo de licenciamiento de Odoo Enterprise?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "Odoo Enterprise usa un modelo de licencia por usuario activo. Cada usuario que accede al sistema requiere una licencia. Las licencias se facturan anualmente y incluyen acceso a todos los modulos Enterprise, actualizaciones y soporte tecnico basico. No hay limite de instalaciones ni bases de datos."
|
|
}
|
|
},
|
|
{
|
|
"@type": "Question",
|
|
"name": "Cual es el costo Full de Odoo Enterprise con Hosting?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "El costo Full incluye licencia (24-31 EUR/user/month) mas Hosting (50-200 EUR/month segun recursos). Para una empresa de 10 usuarios, el costo mensual oscila entre 300-500 EUR. En Odoo.sh, el precio por usuario ya incluye el Hosting basico."
|
|
}
|
|
},
|
|
{
|
|
"@type": "Question",
|
|
"name": "Puedo migrar de Community a Enterprise manteniendo mis datos?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "Yes, la migracion de Community a Enterprise es relativamente sencilla ya que comparten la misma base de codigo. Los datos se mantienen intactos. Solo necesitas adquirir la licencia Enterprise y activarla en tu instalacion. Algunos Providers como Cloudpepper ofrecen asistencia en esta migracion."
|
|
}
|
|
}
|
|
]
|
|
}
|
|
</script>
|
|
|
|
<!-- Product Comparison Schema -->
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "ItemList",
|
|
"name": "Mejores Providers de Hosting para Odoo Enterprise 2026",
|
|
"itemListElement": [
|
|
{
|
|
"@type": "ListItem",
|
|
"position": 1,
|
|
"item": {
|
|
"@type": "Product",
|
|
"name": "Odoo.sh",
|
|
"description": "Plataforma oficial de Odoo para Hosting Enterprise con integracion Native",
|
|
"offers": {
|
|
"@type": "Offer",
|
|
"price": "31",
|
|
"priceCurrency": "EUR"
|
|
},
|
|
"aggregateRating": {
|
|
"@type": "AggregateRating",
|
|
"ratingValue": "4.7",
|
|
"reviewCount": "3245"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"@type": "ListItem",
|
|
"position": 2,
|
|
"item": {
|
|
"@type": "Product",
|
|
"name": "Cloudpepper",
|
|
"description": "Hosting especializado en Odoo Enterprise para empresas europeas",
|
|
"offers": {
|
|
"@type": "Offer",
|
|
"price": "79",
|
|
"priceCurrency": "EUR"
|
|
},
|
|
"aggregateRating": {
|
|
"@type": "AggregateRating",
|
|
"ratingValue": "4.6",
|
|
"reviewCount": "892"
|
|
}
|
|
}
|
|
},
|
|
{
|
|
"@type": "ListItem",
|
|
"position": 3,
|
|
"item": {
|
|
"@type": "Product",
|
|
"name": "Odoo Enterprise Self-Hosted (AWS/Hetzner)",
|
|
"description": "Hosting propio con licencia Enterprise para maximo control",
|
|
"offers": {
|
|
"@type": "Offer",
|
|
"price": "50",
|
|
"priceCurrency": "EUR"
|
|
},
|
|
"aggregateRating": {
|
|
"@type": "AggregateRating",
|
|
"ratingValue": "4.4",
|
|
"reviewCount": "1567"
|
|
}
|
|
}
|
|
}
|
|
]
|
|
}
|
|
</script>
|
|
|
|
<!-- BreadcrumbList Schema -->
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "BreadcrumbList",
|
|
"itemListElement": [
|
|
{
|
|
"@type": "ListItem",
|
|
"position": 1,
|
|
"name": "Home",
|
|
"item": "https://www.odoo-expertos.com/"
|
|
},
|
|
{
|
|
"@type": "ListItem",
|
|
"position": 2,
|
|
"name": "Odoo Hosting",
|
|
"item": "https://www.odoo-expertos.com/Odoo-Hosting/"
|
|
},
|
|
{
|
|
"@type": "ListItem",
|
|
"position": 3,
|
|
"name": "Odoo Enterprise Hosting 2026",
|
|
"item": "https://www.odoo-expertos.com/Odoo-Hosting/Odoo-enterprise-Hosting-2026/"
|
|
}
|
|
]
|
|
}
|
|
</script>
|
|
|
|
<link rel="stylesheet" href="/css/main.min.css">
|
|
<style>
|
|
.pillar-hero {
|
|
background: linear-gradient(135deg, #1a1a1a 0%, #2a2a2a 50%, #1a1a1a 100%);
|
|
padding: 4rem 2rem;
|
|
text-align: center;
|
|
border-bottom: 3px solid #714B67;
|
|
position: relative;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.pillar-hero::before {
|
|
content: '';
|
|
position: absolute;
|
|
top: 0;
|
|
left: 0;
|
|
right: 0;
|
|
bottom: 0;
|
|
background: radial-gradient(ellipse at center, rgba(113,75,103,0.15) 0%, transparent 70%);
|
|
pointer-events: none;
|
|
}
|
|
|
|
.pillar-hero h1 {
|
|
font-size: clamp(2rem, 5vw, 3.5rem);
|
|
color: #714B67;
|
|
margin-bottom: 1rem;
|
|
line-height: 1.2;
|
|
position: relative;
|
|
}
|
|
|
|
.pillar-subtitle {
|
|
font-size: 1.3rem;
|
|
color: #b0b0b0;
|
|
max-width: 800px;
|
|
margin: 0 auto 2rem;
|
|
}
|
|
|
|
.pillar-meta {
|
|
display: flex;
|
|
justify-content: center;
|
|
gap: 2rem;
|
|
flex-wrap: wrap;
|
|
font-size: 0.9rem;
|
|
color: #888;
|
|
}
|
|
|
|
.pillar-meta span {
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.enterprise-badge {
|
|
display: inline-block;
|
|
background: linear-gradient(135deg, #714B67 0%, #9B6B8E 100%);
|
|
color: #fff;
|
|
padding: 0.5rem 1.5rem;
|
|
border-radius: 25px;
|
|
font-weight: 600;
|
|
margin-bottom: 1.5rem;
|
|
font-size: 0.9rem;
|
|
letter-spacing: 0.5px;
|
|
}
|
|
|
|
.quick-stats {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(180px, 1fr));
|
|
gap: 1.5rem;
|
|
padding: 2rem;
|
|
background: #2a2a2a;
|
|
border-radius: 12px;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.stat-card {
|
|
text-align: center;
|
|
padding: 1.5rem;
|
|
background: rgba(113,75,103,0.1);
|
|
border-radius: 8px;
|
|
border: 1px solid rgba(113,75,103,0.2);
|
|
transition: transform 0.3s ease, border-color 0.3s ease;
|
|
}
|
|
|
|
.stat-card:hover {
|
|
transform: translateY(-5px);
|
|
border-color: #714B67;
|
|
}
|
|
|
|
.stat-number {
|
|
font-size: 2.5rem;
|
|
font-weight: 700;
|
|
color: #714B67;
|
|
display: block;
|
|
}
|
|
|
|
.stat-label {
|
|
color: #b0b0b0;
|
|
font-size: 0.9rem;
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
.toc {
|
|
background: #2a2a2a;
|
|
border: 2px solid #714B67;
|
|
border-radius: 12px;
|
|
padding: 2rem;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.toc h2 {
|
|
color: #714B67;
|
|
margin-bottom: 1rem;
|
|
font-size: 1.5rem;
|
|
}
|
|
|
|
.toc-list {
|
|
list-style: none;
|
|
padding: 0;
|
|
columns: 2;
|
|
column-gap: 2rem;
|
|
}
|
|
|
|
.toc-list li {
|
|
margin-bottom: 0.75rem;
|
|
break-inside: avoid;
|
|
}
|
|
|
|
.toc-list a {
|
|
color: #e0e0e0;
|
|
text-decoration: none;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
transition: color 0.3s ease;
|
|
}
|
|
|
|
.toc-list a:hover {
|
|
color: #714B67;
|
|
}
|
|
|
|
.toc-list a::before {
|
|
content: '>';
|
|
color: #714B67;
|
|
}
|
|
|
|
.content-section {
|
|
margin: 3rem 0;
|
|
}
|
|
|
|
.content-section h2 {
|
|
color: #9B6B8E;
|
|
margin-bottom: 1.5rem;
|
|
padding-bottom: 0.5rem;
|
|
border-bottom: 2px solid rgba(113,75,103,0.3);
|
|
}
|
|
|
|
.content-section h3 {
|
|
color: #B88AAD;
|
|
margin: 2rem 0 1rem;
|
|
}
|
|
|
|
.chart-section {
|
|
margin: 3rem 0;
|
|
padding: 2rem;
|
|
background: #2a2a2a;
|
|
border-radius: 12px;
|
|
}
|
|
|
|
.chart-section h3 {
|
|
color: #9B6B8E;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.chart-container {
|
|
width: 100%;
|
|
min-height: 400px;
|
|
position: relative;
|
|
}
|
|
|
|
.comparison-table {
|
|
width: 100%;
|
|
border-collapse: collapse;
|
|
margin: 2rem 0;
|
|
background: #2a2a2a;
|
|
border-radius: 12px;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.comparison-table th,
|
|
.comparison-table td {
|
|
padding: 1rem;
|
|
text-align: left;
|
|
border-bottom: 1px solid #3a3a3a;
|
|
}
|
|
|
|
.comparison-table th {
|
|
background: rgba(113,75,103,0.2);
|
|
color: #714B67;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.comparison-table tr:hover {
|
|
background: rgba(113,75,103,0.05);
|
|
}
|
|
|
|
.comparison-table .check {
|
|
color: #4CAF50;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.comparison-table .cross {
|
|
color: #f44336;
|
|
}
|
|
|
|
.provider-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(320px, 1fr));
|
|
gap: 1.5rem;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.provider-card {
|
|
background: #2a2a2a;
|
|
border-radius: 12px;
|
|
padding: 1.5rem;
|
|
border: 1px solid rgba(113,75,103,0.2);
|
|
transition: transform 0.3s ease, border-color 0.3s ease;
|
|
}
|
|
|
|
.provider-card:hover {
|
|
transform: translateY(-5px);
|
|
border-color: #714B67;
|
|
}
|
|
|
|
.provider-card.featured {
|
|
border-color: #714B67;
|
|
background: linear-gradient(135deg, rgba(113,75,103,0.15) 0%, #2a2a2a 100%);
|
|
position: relative;
|
|
}
|
|
|
|
.provider-card .badge {
|
|
display: inline-block;
|
|
padding: 0.25rem 0.75rem;
|
|
background: #714B67;
|
|
color: #fff;
|
|
border-radius: 20px;
|
|
font-size: 0.8rem;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.provider-card h4 {
|
|
color: #fff;
|
|
margin-bottom: 0.5rem;
|
|
font-size: 1.3rem;
|
|
}
|
|
|
|
.provider-card .price {
|
|
font-size: 2rem;
|
|
color: #714B67;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.provider-card .price-period {
|
|
color: #888;
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
.provider-card ul {
|
|
list-style: none;
|
|
padding: 0;
|
|
margin: 1rem 0;
|
|
}
|
|
|
|
.provider-card li {
|
|
padding: 0.5rem 0;
|
|
border-bottom: 1px solid #3a3a3a;
|
|
display: flex;
|
|
align-items: center;
|
|
gap: 0.5rem;
|
|
color: #b0b0b0;
|
|
}
|
|
|
|
.provider-card li::before {
|
|
content: 'V';
|
|
color: #4CAF50;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.provider-card .cta-btn {
|
|
display: block;
|
|
text-align: center;
|
|
padding: 0.75rem 1.5rem;
|
|
background: #714B67;
|
|
color: #fff;
|
|
border-radius: 8px;
|
|
text-decoration: none;
|
|
font-weight: 600;
|
|
transition: background 0.3s ease, transform 0.3s ease;
|
|
margin-top: 1rem;
|
|
}
|
|
|
|
.provider-card .cta-btn:hover {
|
|
background: #9B6B8E;
|
|
transform: scale(1.02);
|
|
}
|
|
|
|
.faq-section {
|
|
margin: 3rem 0;
|
|
}
|
|
|
|
.faq-item {
|
|
background: #2a2a2a;
|
|
border-radius: 8px;
|
|
margin-bottom: 1rem;
|
|
overflow: hidden;
|
|
}
|
|
|
|
.faq-question {
|
|
padding: 1.25rem;
|
|
cursor: pointer;
|
|
display: flex;
|
|
justify-content: space-between;
|
|
align-items: center;
|
|
color: #fff;
|
|
font-weight: 500;
|
|
transition: background 0.3s ease;
|
|
}
|
|
|
|
.faq-question:hover {
|
|
background: rgba(113,75,103,0.1);
|
|
}
|
|
|
|
.faq-question::after {
|
|
content: '+';
|
|
font-size: 1.5rem;
|
|
color: #714B67;
|
|
transition: transform 0.3s ease;
|
|
}
|
|
|
|
.faq-item.open .faq-question::after {
|
|
transform: rotate(45deg);
|
|
}
|
|
|
|
.faq-answer {
|
|
padding: 0 1.25rem;
|
|
max-height: 0;
|
|
overflow: hidden;
|
|
transition: max-height 0.3s ease, padding 0.3s ease;
|
|
color: #b0b0b0;
|
|
}
|
|
|
|
.faq-item.open .faq-answer {
|
|
padding: 0 1.25rem 1.25rem;
|
|
max-height: 500px;
|
|
}
|
|
|
|
.cta-banner {
|
|
background: linear-gradient(135deg, rgba(113,75,103,0.2) 0%, rgba(155,107,142,0.1) 100%);
|
|
border: 2px solid rgba(113,75,103,0.5);
|
|
border-radius: 12px;
|
|
padding: 2.5rem;
|
|
text-align: center;
|
|
margin: 3rem 0;
|
|
}
|
|
|
|
.cta-banner h3 {
|
|
color: #714B67;
|
|
margin-bottom: 1rem;
|
|
font-size: 1.8rem;
|
|
}
|
|
|
|
.cta-banner p {
|
|
margin-bottom: 1.5rem;
|
|
color: #b0b0b0;
|
|
font-size: 1.1rem;
|
|
}
|
|
|
|
.cta-banner .cta-btn {
|
|
display: inline-block;
|
|
padding: 1rem 2.5rem;
|
|
background: #714B67;
|
|
color: #fff;
|
|
border-radius: 8px;
|
|
text-decoration: none;
|
|
font-weight: 600;
|
|
font-size: 1.1rem;
|
|
transition: background 0.3s ease, transform 0.3s ease;
|
|
}
|
|
|
|
.cta-banner .cta-btn:hover {
|
|
background: #9B6B8E;
|
|
transform: scale(1.05);
|
|
}
|
|
|
|
.related-articles {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
|
|
gap: 1.5rem;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.related-card {
|
|
background: #2a2a2a;
|
|
border-radius: 8px;
|
|
overflow: hidden;
|
|
transition: transform 0.3s ease;
|
|
text-decoration: none;
|
|
}
|
|
|
|
.related-card:hover {
|
|
transform: translateY(-5px);
|
|
}
|
|
|
|
.related-card-image {
|
|
height: 150px;
|
|
background: linear-gradient(135deg, rgba(113,75,103,0.3), rgba(155,107,142,0.3));
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-size: 3rem;
|
|
}
|
|
|
|
.related-card-content {
|
|
padding: 1.25rem;
|
|
}
|
|
|
|
.related-card h4 {
|
|
color: #fff;
|
|
margin-bottom: 0.5rem;
|
|
font-size: 1rem;
|
|
}
|
|
|
|
.related-card p {
|
|
color: #888;
|
|
font-size: 0.9rem;
|
|
margin: 0;
|
|
}
|
|
|
|
.d3-tooltip {
|
|
position: absolute;
|
|
background: rgba(0,0,0,0.95);
|
|
color: #fff;
|
|
padding: 0.75rem 1rem;
|
|
border-radius: 8px;
|
|
font-size: 0.9rem;
|
|
pointer-events: none;
|
|
z-index: 100;
|
|
max-width: 280px;
|
|
box-shadow: 0 4px 20px rgba(0,0,0,0.3);
|
|
border: 1px solid rgba(113,75,103,0.3);
|
|
}
|
|
|
|
.d3-tooltip strong {
|
|
color: #714B67;
|
|
}
|
|
|
|
.highlight-box {
|
|
background: linear-gradient(135deg, rgba(113,75,103,0.1) 0%, rgba(155,107,142,0.05) 100%);
|
|
border-left: 4px solid #714B67;
|
|
padding: 1.5rem;
|
|
margin: 2rem 0;
|
|
border-radius: 0 8px 8px 0;
|
|
}
|
|
|
|
.highlight-box h4 {
|
|
color: #714B67;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.license-info {
|
|
background: linear-gradient(135deg, rgba(113,75,103,0.15) 0%, rgba(155,107,142,0.08) 100%);
|
|
border: 1px solid rgba(113,75,103,0.3);
|
|
border-radius: 12px;
|
|
padding: 2rem;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.license-info h4 {
|
|
color: #714B67;
|
|
margin-bottom: 1rem;
|
|
font-size: 1.3rem;
|
|
}
|
|
|
|
.license-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));
|
|
gap: 1.5rem;
|
|
margin-top: 1.5rem;
|
|
}
|
|
|
|
.license-item {
|
|
text-align: center;
|
|
padding: 1.5rem;
|
|
background: rgba(0,0,0,0.2);
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.license-item .icon {
|
|
font-size: 2.5rem;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.license-item .value {
|
|
font-size: 1.5rem;
|
|
font-weight: 700;
|
|
color: #714B67;
|
|
}
|
|
|
|
.license-item .label {
|
|
color: #888;
|
|
font-size: 0.9rem;
|
|
}
|
|
|
|
.pros-cons {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 1.5rem;
|
|
margin: 1.5rem 0;
|
|
}
|
|
|
|
.pros, .cons {
|
|
padding: 1.5rem;
|
|
border-radius: 8px;
|
|
}
|
|
|
|
.pros {
|
|
background: rgba(76, 175, 80, 0.1);
|
|
border: 1px solid rgba(76, 175, 80, 0.3);
|
|
}
|
|
|
|
.cons {
|
|
background: rgba(244, 67, 54, 0.1);
|
|
border: 1px solid rgba(244, 67, 54, 0.3);
|
|
}
|
|
|
|
.pros h4 {
|
|
color: #4CAF50;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.cons h4 {
|
|
color: #f44336;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.pros ul, .cons ul {
|
|
list-style: none;
|
|
padding: 0;
|
|
margin: 0;
|
|
}
|
|
|
|
.pros li::before {
|
|
content: 'V ';
|
|
color: #4CAF50;
|
|
}
|
|
|
|
.cons li::before {
|
|
content: 'X ';
|
|
color: #f44336;
|
|
}
|
|
|
|
.enterprise-vs-community {
|
|
display: grid;
|
|
grid-template-columns: 1fr 1fr;
|
|
gap: 2rem;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.edition-card {
|
|
background: #2a2a2a;
|
|
border-radius: 12px;
|
|
padding: 2rem;
|
|
border: 2px solid transparent;
|
|
}
|
|
|
|
.edition-card.enterprise {
|
|
border-color: #714B67;
|
|
}
|
|
|
|
.edition-card.community {
|
|
border-color: #4CAF50;
|
|
}
|
|
|
|
.edition-card h4 {
|
|
font-size: 1.5rem;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.edition-card.enterprise h4 {
|
|
color: #714B67;
|
|
}
|
|
|
|
.edition-card.community h4 {
|
|
color: #4CAF50;
|
|
}
|
|
|
|
.edition-card ul {
|
|
list-style: none;
|
|
padding: 0;
|
|
}
|
|
|
|
.edition-card li {
|
|
padding: 0.5rem 0;
|
|
border-bottom: 1px solid #3a3a3a;
|
|
color: #b0b0b0;
|
|
}
|
|
|
|
.fade-in {
|
|
opacity: 0;
|
|
transform: translateY(20px);
|
|
transition: opacity 0.6s ease, transform 0.6s ease;
|
|
}
|
|
|
|
.fade-in.visible {
|
|
opacity: 1;
|
|
transform: translateY(0);
|
|
}
|
|
|
|
@media (max-width: 768px) {
|
|
.toc-list {
|
|
columns: 1;
|
|
}
|
|
|
|
.pillar-meta {
|
|
flex-direction: column;
|
|
gap: 0.5rem;
|
|
}
|
|
|
|
.chart-container {
|
|
min-height: 300px;
|
|
}
|
|
|
|
.pros-cons {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.provider-grid {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.enterprise-vs-community {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
}
|
|
</style>
|
|
</head>
|
|
<body>
|
|
<div id="header"><header class="site-header"><nav class="navbar"><div class="container"><div class="nav-brand"><a href="/en/" class="logo"><span class="logo-text">Odoo Expertos</span></a></div><button class="nav-toggle" aria-label="Toggle navigation"><span></span><span></span><span></span></button><div class="nav-menu"><ul class="nav-list"><li><a href="/en/">Home</a></li><li><a href="/en/odoo/">Odoo</a></li><li><a href="/en/odoo-ia/">Odoo AI</a></li><li><a href="/en/odoo-hosting/">Odoo Hosting</a></li><li><a href="/en/mapa-del-sitio/">Sitemap</a></li></ul></div></div></nav></header></div><button class="nav-toggle" aria-label="Toggle navigation"><span></span><span></span><span></span></button><div class="nav-menu"><ul class="nav-list"><li><a href="/en/">Home</a></li><li><a href="/en/odoo/">Odoo</a></li><li><a href="/en/odoo-ia/">Odoo AI</a></li><li><a href="/en/odoo-hosting/">Odoo Hosting</a></li><li><a href="/en/mapa-del-sitio/">Sitemap</a></li></ul></div></div></nav></header></div>
|
|
|
|
<!-- Breadcrumbs -->
|
|
<nav class="breadcrumbs">
|
|
<div class="container">
|
|
<ol class="breadcrumb-list" itemscope itemtype="https://schema.org/BreadcrumbList">
|
|
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
|
<a itemprop="item" href="/"><span itemprop="name">Home</span></a>
|
|
<span itemprop="position" style="display:none">1</span>
|
|
</li>
|
|
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
|
<a itemprop="item" href="/Odoo-Hosting/"><span itemprop="name">Odoo Hosting</span></a>
|
|
<span itemprop="position" style="display:none">2</span>
|
|
</li>
|
|
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
|
<span itemprop="name">Odoo Enterprise Hosting 2026</span>
|
|
<span itemprop="position" style="display:none">3</span>
|
|
</li>
|
|
</ol>
|
|
</div>
|
|
</nav>
|
|
|
|
<!-- Hero Section -->
|
|
<section class="pillar-hero">
|
|
<div class="container">
|
|
<span class="enterprise-badge">EDICION ENTERPRISE</span>
|
|
<h1>Odoo Enterprise Hosting 2026: Complete guide de Licencias, Recursos y Providers</h1>
|
|
<p class="pillar-subtitle">Todo lo que necesitas saber sobre Hosting para Odoo Enterprise: requisitos de licencias, recursos de servidor, comparativa de Providers especializados y Analysis de Costs Updated para 2026.</p>
|
|
<div class="pillar-meta">
|
|
<span>Published: 25 January 2026</span>
|
|
<span>Updated: 25 January 2026</span>
|
|
<span>28 min read</span>
|
|
<span>Dr. Equipo Odoo Expertos</span>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<main class="container">
|
|
<!-- Quick Stats -->
|
|
<section class="quick-stats fade-in">
|
|
<div class="stat-card">
|
|
<span class="stat-number">24-31 EUR</span>
|
|
<span class="stat-label">Licencia/user/month</span>
|
|
</div>
|
|
<div class="stat-card">
|
|
<span class="stat-number">8GB+</span>
|
|
<span class="stat-label">RAM Minima Requerida</span>
|
|
</div>
|
|
<div class="stat-card">
|
|
<span class="stat-number">50+</span>
|
|
<span class="stat-label">Modulos Enterprise</span>
|
|
</div>
|
|
<div class="stat-card">
|
|
<span class="stat-number">99.95%</span>
|
|
<span class="stat-label">SLA Odoo.sh</span>
|
|
</div>
|
|
<div class="stat-card">
|
|
<span class="stat-number">3.245</span>
|
|
<span class="stat-label">Resenas Verificadas</span>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Table of Contents -->
|
|
<nav class="toc fade-in">
|
|
<h2>Contents of This Guide</h2>
|
|
<ol class="toc-list">
|
|
<li><a href="#introduccion">Introduccion a Odoo Enterprise</a></li>
|
|
<li><a href="#licencias">Sistema de Licenciamiento</a></li>
|
|
<li><a href="#recursos">Requisitos de Recursos</a></li>
|
|
<li><a href="#grafico-costo">Grafico: Costo Full por Usuarios</a></li>
|
|
<li><a href="#Providers">Providers Especializados</a></li>
|
|
<li><a href="#Odoo-sh">Analysis Odoo.sh</a></li>
|
|
<li><a href="#cloudpepper">Analysis Cloudpepper</a></li>
|
|
<li><a href="#self-hosted">Opcion Self-Hosted</a></li>
|
|
<li><a href="#comparativa-precios">Comparativa de Precios</a></li>
|
|
<li><a href="#radar-Providers">Radar de Caracteristicas</a></li>
|
|
<li><a href="#faq">Preguntas Frecuentes (8+)</a></li>
|
|
<li><a href="#relacionados">Related Articles</a></li>
|
|
</ol>
|
|
</nav>
|
|
|
|
<!-- Introduction -->
|
|
<section id="introduccion" class="content-section fade-in">
|
|
<h2>Introduccion: Por que Elegir Odoo Enterprise</h2>
|
|
|
|
<p>Odoo Enterprise representa la version comercial y mas completa del popular ERP de codigo abierto. A diferencia de la version Community, Enterprise incluye modulos avanzados, soporte oficial, actualizaciones garantizadas y funcionalidades exclusivas que muchas empresas necesitan para operar de manera profesional.</p>
|
|
|
|
<p>En 2026, Odoo Enterprise ha consolidado su posicion como una de las soluciones ERP mas competitivas del mercado, compitiendo directamente con SAP Business One, Microsoft Dynamics 365 y NetSuite, pero con un modelo de precios significativamente mas accesible y una flexibilidad de personalizacion superior.</p>
|
|
|
|
<div class="highlight-box">
|
|
<h4>Punto Clave</h4>
|
|
<p>Elegir el Hosting adecuado para Odoo Enterprise es crucial porque los requisitos de recursos son considerablemente mayores que Community, y la inversion en licencias justifica garantizar un rendimiento optimo. Un Hosting inadecuado puede resultar en tiempos de respuesta lentos, caidas del sistema y perdida de productividad que supera con creces el ahorro en infraestructura.</p>
|
|
</div>
|
|
|
|
<h3>Enterprise vs Community: Diferencias Clave</h3>
|
|
|
|
<div class="enterprise-vs-community">
|
|
<div class="edition-card enterprise">
|
|
<h4>Odoo Enterprise</h4>
|
|
<ul>
|
|
<li>Contabilidad completa con localizaciones fiscales</li>
|
|
<li>MRP II y planificacion Advanced de fabricacion</li>
|
|
<li>Firma electronica integrada</li>
|
|
<li>Studio para personalizacion sin codigo</li>
|
|
<li>VoIP integrado</li>
|
|
<li>Marketing Automation avanzado</li>
|
|
<li>Helpdesk con SLA</li>
|
|
<li>Soporte tecnico oficial</li>
|
|
<li>Actualizaciones de version garantizadas</li>
|
|
<li>Interfaz mobile optimizada</li>
|
|
</ul>
|
|
</div>
|
|
<div class="edition-card community">
|
|
<h4>Odoo Community</h4>
|
|
<ul>
|
|
<li>Contabilidad Basic</li>
|
|
<li>MRP basico</li>
|
|
<li>Sin firma electronica Native</li>
|
|
<li>Sin Studio (requiere desarrollo)</li>
|
|
<li>Sin VoIP integrado</li>
|
|
<li>Marketing basico</li>
|
|
<li>Helpdesk Limited</li>
|
|
<li>Soporte comunitario</li>
|
|
<li>Migracion Manual entre versiones</li>
|
|
<li>Interfaz standard</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<p>La decision entre Enterprise y Community No es solo economica; afecta directamente la capacidad operativa de tu empresa. Organizaciones con requisitos contables complejos, fabricacion Advanced o necesidad de integraciones profesionales generalmente encuentran que Enterprise ofrece un retorno de inversion superior a largo plazo.</p>
|
|
</section>
|
|
|
|
<!-- Licensing Section -->
|
|
<section id="licencias" class="content-section fade-in">
|
|
<h2>Sistema de Licenciamiento de Odoo Enterprise</h2>
|
|
|
|
<p>Comprender el modelo de licenciamiento de Odoo Enterprise es fundamental para calcular correctamente el costo Full de propiedad (TCO). Odoo SA utiliza un modelo de suscripcion anual basado en usuarios activos que ha evolucionado significativamente en los ultimos anos.</p>
|
|
|
|
<div class="license-info">
|
|
<h4>Estructura de Precios de Licencias 2026</h4>
|
|
<div class="license-grid">
|
|
<div class="license-item">
|
|
<div class="icon">1-10</div>
|
|
<div class="value">31 EUR</div>
|
|
<div class="label">Por usuario/month</div>
|
|
</div>
|
|
<div class="license-item">
|
|
<div class="icon">11-50</div>
|
|
<div class="value">28 EUR</div>
|
|
<div class="label">Por usuario/month</div>
|
|
</div>
|
|
<div class="license-item">
|
|
<div class="icon">51-100</div>
|
|
<div class="value">25 EUR</div>
|
|
<div class="label">Por usuario/month</div>
|
|
</div>
|
|
<div class="license-item">
|
|
<div class="icon">100+</div>
|
|
<div class="value">Negociable</div>
|
|
<div class="label">Contactar comercial</div>
|
|
</div>
|
|
</div>
|
|
</div>
|
|
|
|
<h3>Que Incluye la Licencia Enterprise</h3>
|
|
<ul>
|
|
<li><strong>Acceso a todos los modulos Enterprise:</strong> Mas de 50 aplicaciones adicionales sobre Community</li>
|
|
<li><strong>Actualizaciones de version:</strong> Migracion asistida a nuevas versiones mayores</li>
|
|
<li><strong>Soporte tecnico:</strong> Acceso al equipo de soporte de Odoo SA</li>
|
|
<li><strong>Correccion de bugs:</strong> Parches de seguridad y estabilidad prioritarios</li>
|
|
<li><strong>Sin limite de instalaciones:</strong> Puedes tener multiples entornos (produccion, staging, desarrollo)</li>
|
|
<li><strong>Sin limite de bases de datos:</strong> Ideal para arquitecturas multi-tenant</li>
|
|
</ul>
|
|
|
|
<h3>Modelo de Usuario Activo</h3>
|
|
<p>Odoo cuenta como usuario activo a cualquier persona que accede al sistema durante el periodo de facturacion. Esto incluye:</p>
|
|
<ul>
|
|
<li>Empleados que usan el ERP regularmente</li>
|
|
<li>Usuarios externos del portal (clientes/Providers) No cuentan</li>
|
|
<li>Usuarios de API automatizados No cuentan</li>
|
|
<li>Usuarios desactivados No cuentan</li>
|
|
</ul>
|
|
|
|
<div class="highlight-box">
|
|
<h4>Consejo de Optimizacion</h4>
|
|
<p>Para reducir Costs de licencia, implementa roles de acceso granular. Muchas empresas sobredimensionan usuarios dando acceso completo cuando solo necesitan acceso parcial. Usuarios que solo consultan informacion pueden usar el portal gratuito en lugar de licencias completas.</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Resources Section -->
|
|
<section id="recursos" class="content-section fade-in">
|
|
<h2>Requisitos de Recursos para Odoo Enterprise</h2>
|
|
|
|
<p>Odoo Enterprise demanda significativamente mas recursos que Community debido a los modulos adicionales, funcionalidades de IA, y la complejidad inherente de sus operaciones. Dimensionar correctamente el servidor es critico para el rendimiento y la experiencia de usuario.</p>
|
|
|
|
<h3>Requisitos Minimos vs Recomendados</h3>
|
|
|
|
<table class="comparison-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Componente</th>
|
|
<th>Minimo</th>
|
|
<th>Recommended</th>
|
|
<th>Alto Rendimiento</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>RAM</td>
|
|
<td>8 GB</td>
|
|
<td>16 GB</td>
|
|
<td>32 GB+</td>
|
|
</tr>
|
|
<tr>
|
|
<td>CPU</td>
|
|
<td>4 cores</td>
|
|
<td>8 cores</td>
|
|
<td>16 cores</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Almacenamiento</td>
|
|
<td>100 GB SSD</td>
|
|
<td>250 GB NVMe</td>
|
|
<td>500 GB+ NVMe</td>
|
|
</tr>
|
|
<tr>
|
|
<td>PostgreSQL</td>
|
|
<td>14</td>
|
|
<td>15</td>
|
|
<td>16</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Python</td>
|
|
<td>3.10</td>
|
|
<td>3.11</td>
|
|
<td>3.12</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Sistema Operativo</td>
|
|
<td>Ubuntu 22.04</td>
|
|
<td>Ubuntu 24.04</td>
|
|
<td>Ubuntu 24.04</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Usuarios Soportados</td>
|
|
<td>10-15</td>
|
|
<td>30-50</td>
|
|
<td>100+</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<h3>Formula de Calculo de Workers</h3>
|
|
<p>La configuracion de workers en Odoo es fundamental para el rendimiento. La formula recomendada es:</p>
|
|
|
|
<div class="license-info">
|
|
<p><strong>Workers = (CPU cores x 2) + 1</strong></p>
|
|
<p>Ejemplo: Para un servidor de 8 cores: (8 x 2) + 1 = 17 workers</p>
|
|
<br>
|
|
<p><strong>Max Cron Workers = CPU cores / 2</strong></p>
|
|
<p>Ejemplo: Para 8 cores: 8 / 2 = 4 cron workers</p>
|
|
</div>
|
|
|
|
<h3>Consideraciones de Memoria</h3>
|
|
<p>Cada worker de Odoo puede consumir entre 150MB y 300MB de RAM dependiendo de las operaciones. Adicionalmente:</p>
|
|
<ul>
|
|
<li><strong>PostgreSQL:</strong> Reserva al menos 25% de la RAM Full</li>
|
|
<li><strong>Sistema operativo:</strong> 1-2 GB para el OS</li>
|
|
<li><strong>Cache y buffers:</strong> 10-15% para cache de archivos</li>
|
|
<li><strong>Pico de carga:</strong> Reserva 20% adicional para picos</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<!-- D3.js Cost Chart -->
|
|
<section class="chart-section fade-in">
|
|
<h3 id="grafico-costo">Costo Full Mensual por Numero de Usuarios</h3>
|
|
<p>Este grafico interactivo muestra como escala el costo Full (licencias + Hosting) segun el numero de usuarios en diferentes Providers.</p>
|
|
<div class="chart-container" id="cost-chart"></div>
|
|
</section>
|
|
|
|
<!-- Providers Section -->
|
|
<section id="Providers" class="content-section fade-in">
|
|
<h2>Providers Especializados en Odoo Enterprise</h2>
|
|
|
|
<p>No todos los Providers de Hosting estan preparados para Odoo Enterprise. La complejidad tecnica, los requisitos de recursos y la necesidad de soporte especializado limitan las opciones viables a un grupo selecto de Providers con experiencia comprobada.</p>
|
|
|
|
<div class="provider-grid">
|
|
<!-- Odoo.sh -->
|
|
<div class="provider-card featured">
|
|
<span class="badge">Oficial</span>
|
|
<h4>Odoo.sh</h4>
|
|
<p class="price">31 EUR<span class="price-period">/usuario/month (todo incluido)</span></p>
|
|
<ul>
|
|
<li>Plataforma oficial de Odoo SA</li>
|
|
<li>Hosting + licencia integrados</li>
|
|
<li>Actualizaciones automaticas</li>
|
|
<li>3 entornos: produccion, staging, desarrollo</li>
|
|
<li>Integracion Native con GitHub</li>
|
|
<li>SLA 99.95% garantizado</li>
|
|
<li>Backups automaticos cada 4 horas</li>
|
|
<li>Soporte directo de Odoo</li>
|
|
</ul>
|
|
<div class="pros-cons">
|
|
<div class="pros">
|
|
<h4>Ventajas</h4>
|
|
<ul>
|
|
<li>Maxima compatibilidad</li>
|
|
<li>Todo en uno simplificado</li>
|
|
<li>Actualizaciones sin fricciones</li>
|
|
</ul>
|
|
</div>
|
|
<div class="cons">
|
|
<h4>Limitations</h4>
|
|
<ul>
|
|
<li>Precio escala rapidamente</li>
|
|
<li>Personalizacion de servidor limitada</li>
|
|
<li>Dependencia del vendor</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<a href="https://Odoo.sh" class="cta-btn" target="_blank" rel="noopener">Ver Planes Odoo.sh</a>
|
|
</div>
|
|
|
|
<!-- Cloudpepper -->
|
|
<div class="provider-card">
|
|
<span class="badge">Especializado</span>
|
|
<h4>Cloudpepper</h4>
|
|
<p class="price">79 EUR<span class="price-period">/mes + licencia separada</span></p>
|
|
<ul>
|
|
<li>Especialistas en Odoo desde 2012</li>
|
|
<li>Servidores optimizados para Enterprise</li>
|
|
<li>Compliance GDPR Guaranteed</li>
|
|
<li>Centros de datos europeos</li>
|
|
<li>Soporte tecnico 24/7</li>
|
|
<li>Migracion asistida incluida</li>
|
|
<li>Configuracion personalizada</li>
|
|
</ul>
|
|
<div class="pros-cons">
|
|
<div class="pros">
|
|
<h4>Ventajas</h4>
|
|
<ul>
|
|
<li>Mayor flexibilidad</li>
|
|
<li>Precio fijo de Hosting</li>
|
|
<li>Expertise europeo</li>
|
|
</ul>
|
|
</div>
|
|
<div class="cons">
|
|
<h4>Limitations</h4>
|
|
<ul>
|
|
<li>Licencia aparte (Odoo SA)</li>
|
|
<li>Actualizaciones manuales</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<a href="#" class="cta-btn">Solicitar Cotizacion</a>
|
|
</div>
|
|
|
|
<!-- Self-Hosted AWS -->
|
|
<div class="provider-card">
|
|
<h4>Self-Hosted (AWS/Hetzner)</h4>
|
|
<p class="price">50-150 EUR<span class="price-period">/mes + licencia + gestion</span></p>
|
|
<ul>
|
|
<li>Control Full del servidor</li>
|
|
<li>Escalabilidad ilimitada</li>
|
|
<li>Personalizacion completa</li>
|
|
<li>Elige tu ubicacion geografica</li>
|
|
<li>Integraciones personalizadas</li>
|
|
<li>Sin dependencia del proveedor</li>
|
|
</ul>
|
|
<div class="pros-cons">
|
|
<div class="pros">
|
|
<h4>Ventajas</h4>
|
|
<ul>
|
|
<li>Maximo control</li>
|
|
<li>Potencialmente mas economico</li>
|
|
<li>Sin limites de personalizacion</li>
|
|
</ul>
|
|
</div>
|
|
<div class="cons">
|
|
<h4>Limitations</h4>
|
|
<ul>
|
|
<li>Requiere equipo tecnico</li>
|
|
<li>Responsabilidad de seguridad</li>
|
|
<li>Gestion de actualizaciones</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
<a href="#" class="cta-btn">Ver Opciones VPS</a>
|
|
</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Odoo.sh Deep Dive -->
|
|
<section id="Odoo-sh" class="content-section fade-in">
|
|
<h2>Analysis Detallado: Odoo.sh</h2>
|
|
|
|
<p>Odoo.sh es la plataforma cloud oficial desarrollada por Odoo SA especificamente para desplegar y gestionar instancias de Odoo. Representa la opcion mas integrada y con menos fricciones para empresas que desean Odoo Enterprise sin preocuparse por la infraestructura subyacente.</p>
|
|
|
|
<h3>Arquitectura de Odoo.sh</h3>
|
|
<p>Odoo.sh utiliza una arquitectura containerizada basada en:</p>
|
|
<ul>
|
|
<li><strong>Contenedores Docker:</strong> Aislamiento completo de cada instancia</li>
|
|
<li><strong>PostgreSQL gestionado:</strong> Base de datos optimizada y escalable</li>
|
|
<li><strong>CDN integrado:</strong> Distribucion de contenido estatico global</li>
|
|
<li><strong>Git-centric:</strong> Todo el codigo se gestiona via repositorios Git</li>
|
|
<li><strong>CI/CD nativo:</strong> Deployment automatico en cada push</li>
|
|
</ul>
|
|
|
|
<h3>Planes y Precios Odoo.sh 2026</h3>
|
|
<table class="comparison-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Plan</th>
|
|
<th>Usuarios</th>
|
|
<th>Precio/user/month</th>
|
|
<th>Caracteristicas</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>Starter</td>
|
|
<td>1-10</td>
|
|
<td>31 EUR</td>
|
|
<td>1 staging, backups 4h</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Standard</td>
|
|
<td>11-50</td>
|
|
<td>28 EUR</td>
|
|
<td>2 stagings, backups 2h</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Custom</td>
|
|
<td>51+</td>
|
|
<td>Negociable</td>
|
|
<td>Recursos dedicados, SLA premium</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<h3>Workflow de Desarrollo en Odoo.sh</h3>
|
|
<p>El flujo de trabajo en Odoo.sh sigue un patron Git-flow:</p>
|
|
<ol>
|
|
<li><strong>Development branch:</strong> Desarrollo y pruebas locales</li>
|
|
<li><strong>Staging branch:</strong> Pruebas de integracion con datos reales</li>
|
|
<li><strong>Production branch:</strong> Entorno productivo estable</li>
|
|
</ol>
|
|
|
|
<div class="highlight-box">
|
|
<h4>Cuando Elegir Odoo.sh</h4>
|
|
<p>Odoo.sh es ideal Yes: tu equipo de desarrollo trabaja con Git, necesitas entornos de staging automaticos, prefieres un modelo de precio predecible por usuario, y valoras la integracion Native con el ecosistema Odoo. Es especialmente Recommended para empresas sin equipo de infraestructura dedicado.</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Cloudpepper Deep Dive -->
|
|
<section id="cloudpepper" class="content-section fade-in">
|
|
<h2>Analysis Detallado: Cloudpepper</h2>
|
|
|
|
<p>Cloudpepper es un proveedor europeo especializado exclusivamente en Hosting de Odoo desde 2012. Su propuesta de valor se centra en ofrecer infraestructura optimizada con mayor flexibilidad que Odoo.sh, manteniendo un alto nivel de especializacion.</p>
|
|
|
|
<h3>Caracteristicas Distintivas</h3>
|
|
<ul>
|
|
<li><strong>Especializacion Full:</strong> Solo hacen Hosting de Odoo, No son generalistas</li>
|
|
<li><strong>Configuracion personalizada:</strong> Ajustan workers, memoria y configuraciones a tu caso</li>
|
|
<li><strong>Compliance europeo:</strong> GDPR, servidores en UE, facturas europeas</li>
|
|
<li><strong>Soporte tecnico real:</strong> Ingenieros de Odoo, No soporte generico</li>
|
|
<li><strong>Precio fijo:</strong> El Hosting No escala por usuario</li>
|
|
</ul>
|
|
|
|
<h3>Planes de Hosting Cloudpepper</h3>
|
|
<table class="comparison-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Plan</th>
|
|
<th>RAM</th>
|
|
<th>CPU</th>
|
|
<th>Almacenamiento</th>
|
|
<th>Precio/month</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>Starter</td>
|
|
<td>8 GB</td>
|
|
<td>4 cores</td>
|
|
<td>100 GB NVMe</td>
|
|
<td>79 EUR</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Professional</td>
|
|
<td>16 GB</td>
|
|
<td>8 cores</td>
|
|
<td>250 GB NVMe</td>
|
|
<td>149 EUR</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Enterprise</td>
|
|
<td>32 GB</td>
|
|
<td>16 cores</td>
|
|
<td>500 GB NVMe</td>
|
|
<td>299 EUR</td>
|
|
</tr>
|
|
<tr>
|
|
<td>Custom</td>
|
|
<td>A medida</td>
|
|
<td>A medida</td>
|
|
<td>A medida</td>
|
|
<td>Cotizacion</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<div class="highlight-box">
|
|
<h4>Cuando Elegir Cloudpepper</h4>
|
|
<p>Cloudpepper es ideal Yes: tienes un equipo tecnico que prefiere control de configuracion, tu numero de usuarios es alto (el precio fijo de Hosting beneficia), necesitas Compliance GDPR estricto, o quieres separar la decision de licencias de la decision de Hosting.</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Self-Hosted Section -->
|
|
<section id="self-hosted" class="content-section fade-in">
|
|
<h2>Opcion Self-Hosted: Maximo Control</h2>
|
|
|
|
<p>Para empresas con equipos tecnicos capaces, desplegar Odoo Enterprise en infraestructura propia (ya sea fisica o en cloud publico como AWS, Azure o Hetzner) ofrece el maximo control y potencialmente el mejor costo Full para grandes volumenenes de usuarios.</p>
|
|
|
|
<h3>Providers Recomendados para Self-Hosting</h3>
|
|
|
|
<table class="comparison-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Proveedor</th>
|
|
<th>Configuracion Recomendada</th>
|
|
<th>Precio/month</th>
|
|
<th>Ubicacion</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>Hetzner Cloud</td>
|
|
<td>CPX41: 16GB RAM, 8 vCPU</td>
|
|
<td>~45 EUR</td>
|
|
<td>Alemania, Finlandia</td>
|
|
</tr>
|
|
<tr>
|
|
<td>AWS EC2</td>
|
|
<td>t3.xlarge: 16GB RAM, 4 vCPU</td>
|
|
<td>~120 EUR</td>
|
|
<td>Global</td>
|
|
</tr>
|
|
<tr>
|
|
<td>DigitalOcean</td>
|
|
<td>16GB RAM, 8 vCPU</td>
|
|
<td>~96 EUR</td>
|
|
<td>Global</td>
|
|
</tr>
|
|
<tr>
|
|
<td>OVH Cloud</td>
|
|
<td>B2-30: 30GB RAM, 8 vCPU</td>
|
|
<td>~90 EUR</td>
|
|
<td>Europe</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<h3>Requisitos de Gestion Self-Hosted</h3>
|
|
<p>El self-Hosting requiere responsabilidad sobre:</p>
|
|
<ul>
|
|
<li><strong>Actualizaciones de seguridad:</strong> Sistema operativo, PostgreSQL, Python</li>
|
|
<li><strong>Backups:</strong> Configuracion y verificacion de backups automaticos</li>
|
|
<li><strong>Monitoreo:</strong> Alertas de rendimiento, espacio en disco, errores</li>
|
|
<li><strong>SSL/TLS:</strong> Renovacion de certificados (Let's Encrypt automatizable)</li>
|
|
<li><strong>Firewall:</strong> Configuracion de reglas de seguridad</li>
|
|
<li><strong>Actualizaciones de Odoo:</strong> Planificacion y ejecucion de upgrades</li>
|
|
</ul>
|
|
|
|
<div class="highlight-box">
|
|
<h4>Costo Oculto del Self-Hosting</h4>
|
|
<p>Aunque el costo de servidor puede ser menor, considera el costo de tiempo de tu equipo. Un ingeniero dedicando 10 horas mensuales a mantenimiento a 50 EUR/hora representa 500 EUR de costo real que a menudo se ignora en comparaciones.</p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Price Comparison Chart -->
|
|
<section class="chart-section fade-in">
|
|
<h3 id="comparativa-precios">Comparativa de Costs Totales: 3 Anos</h3>
|
|
<p>Proyeccion del costo Full de propiedad (TCO) a 3 anos para una empresa de 25 usuarios, incluyendo licencias, Hosting y estimacion de mantenimiento.</p>
|
|
<div class="chart-container" id="tco-chart"></div>
|
|
</section>
|
|
|
|
<!-- Radar Chart -->
|
|
<section class="chart-section fade-in">
|
|
<h3 id="radar-Providers">Comparacion de Caracteristicas por Proveedor</h3>
|
|
<p>Visualiza como se comparan los principales Providers en 6 dimensiones clave: Rendimiento, Soporte, Precio, Facilidad, Escalabilidad y Control.</p>
|
|
<div class="chart-container" id="radar-chart"></div>
|
|
</section>
|
|
|
|
<!-- CTA Banner -->
|
|
<section class="cta-banner fade-in">
|
|
<h3>Necesitas Ayuda para Elegir?</h3>
|
|
<p>Nuestro equipo de consultores especializados en Odoo puede ayudarte a evaluar la mejor opcion de Hosting Enterprise para tu caso especifico. Analysis gratuito sin compromiso.</p>
|
|
<a href="/contacto/" class="cta-btn">Solicitar Consultoria Gratuita</a>
|
|
</section>
|
|
|
|
<!-- FAQ Section -->
|
|
<section id="faq" class="faq-section fade-in">
|
|
<h2>Preguntas Frecuentes sobre Odoo Hosting Enterprise</h2>
|
|
|
|
<div class="faq-item">
|
|
<div class="faq-question">Cual es la diferencia entre Odoo Community y Enterprise para Hosting?</div>
|
|
<div class="faq-answer">Odoo Enterprise requiere aproximadamente un 50-100% mas de recursos de servidor debido a sus modulos adicionales. Ademas, necesita una licencia oficial de Odoo SA que se paga por usuario al ano. Enterprise incluye modulos avanzados como Contabilidad completa, Fabricacion MRP II, Firma electronica, entre otros.</div>
|
|
</div>
|
|
|
|
<div class="faq-item">
|
|
<div class="faq-question">Cuanto cuesta la licencia de Odoo Enterprise?</div>
|
|
<div class="faq-answer">La licencia de Odoo Enterprise cuesta aproximadamente 24-31 EUR por usuario al mes (facturado anualmente). El precio exacto Depends del numero de usuarios y Yes incluyes Hosting en Odoo.sh. Para empresas con mas de 50 usuarios, existen descuentos por volumen.</div>
|
|
</div>
|
|
|
|
<div class="faq-item">
|
|
<div class="faq-question">Puedo alojar Odoo Enterprise fuera de Odoo.sh?</div>
|
|
<div class="faq-answer">Yes, puedes alojar Odoo Enterprise en cualquier servidor siempre que tengas una licencia valida de Odoo SA. Providers como Cloudpepper, Hetzner o AWS permiten desplegar Enterprise con tu propia licencia. Sin embargo, perderas las ventajas de integracion Native de Odoo.sh.</div>
|
|
</div>
|
|
|
|
<div class="faq-item">
|
|
<div class="faq-question">Que recursos de servidor necesita Odoo Enterprise?</div>
|
|
<div class="faq-answer">Odoo Enterprise requiere minimo 8GB de RAM, 4 CPU cores, 100GB SSD y PostgreSQL 14+. Para entornos de produccion con mas de 20 usuarios, recomendamos 16GB RAM, 8 cores y almacenamiento NVMe. La configuracion de workers debe ser (CPU cores x 2) + 1.</div>
|
|
</div>
|
|
|
|
<div class="faq-item">
|
|
<div class="faq-question">Odoo.sh es la mejor opcion para Enterprise?</div>
|
|
<div class="faq-answer">Odoo.sh es la opcion oficial y mas integrada para Enterprise, con actualizaciones automaticas, soporte directo de Odoo y entornos de staging incluidos. Sin embargo, Providers como Cloudpepper ofrecen alternativas mas economicas con soporte especializado y mayor flexibilidad de configuracion.</div>
|
|
</div>
|
|
|
|
<div class="faq-item">
|
|
<div class="faq-question">Como funciona el modelo de licenciamiento de Odoo Enterprise?</div>
|
|
<div class="faq-answer">Odoo Enterprise usa un modelo de licencia por usuario activo. Cada usuario que accede al sistema requiere una licencia. Las licencias se facturan anualmente y incluyen acceso a todos los modulos Enterprise, actualizaciones y soporte tecnico basico. No hay limite de instalaciones ni bases de datos.</div>
|
|
</div>
|
|
|
|
<div class="faq-item">
|
|
<div class="faq-question">Cual es el costo Full de Odoo Enterprise con Hosting?</div>
|
|
<div class="faq-answer">El costo Full incluye licencia (24-31 EUR/user/month) mas Hosting (50-200 EUR/month segun recursos). Para una empresa de 10 usuarios, el costo mensual oscila entre 300-500 EUR. En Odoo.sh, el precio por usuario ya incluye el Hosting basico.</div>
|
|
</div>
|
|
|
|
<div class="faq-item">
|
|
<div class="faq-question">Puedo migrar de Community a Enterprise manteniendo mis datos?</div>
|
|
<div class="faq-answer">Yes, la migracion de Community a Enterprise es relativamente sencilla ya que comparten la misma base de codigo. Los datos se mantienen intactos. Solo necesitas adquirir la licencia Enterprise y activarla en tu instalacion. Algunos Providers como Cloudpepper ofrecen asistencia en esta migracion.</div>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Related Articles -->
|
|
<section id="relacionados" class="content-section fade-in">
|
|
<h2>Related Articles</h2>
|
|
|
|
<div class="related-articles">
|
|
<a href="/Odoo-Hosting/mejor-Hosting-Odoo-2026/" class="related-card">
|
|
<div class="related-card-image">S</div>
|
|
<div class="related-card-content">
|
|
<h4>Mejor Odoo Hosting 2026: Comparativa Completa</h4>
|
|
<p>Analysis de 15+ Providers para todas las ediciones</p>
|
|
</div>
|
|
</a>
|
|
|
|
<a href="/Odoo-Hosting/Odoo-sh-Hosting-oficial-plataforma-2025/" class="related-card">
|
|
<div class="related-card-image">C</div>
|
|
<div class="related-card-content">
|
|
<h4>Odoo.sh: Analysis Completo de la Plataforma</h4>
|
|
<p>Todo sobre el Hosting oficial de Odoo</p>
|
|
</div>
|
|
</a>
|
|
|
|
<a href="/Odoo-Hosting/precios-Hosting-Odoo-Costs-2025/" class="related-card">
|
|
<div class="related-card-image">$</div>
|
|
<div class="related-card-content">
|
|
<h4>Precios de Odoo Hosting 2026</h4>
|
|
<p>Comparativa detallada de Costs por proveedor</p>
|
|
</div>
|
|
</a>
|
|
|
|
<a href="/Odoo-Hosting/requisitos-Hosting-Odoo-servidor-2025/" class="related-card">
|
|
<div class="related-card-image">*</div>
|
|
<div class="related-card-content">
|
|
<h4>Requisitos Tecnicos para Odoo</h4>
|
|
<p>Especificaciones de servidor recomendadas</p>
|
|
</div>
|
|
</a>
|
|
|
|
<a href="/Odoo-Hosting/vps-Hosting-Odoo-servidor-virtual-2025/" class="related-card">
|
|
<div class="related-card-image">V</div>
|
|
<div class="related-card-content">
|
|
<h4>VPS para Odoo: Guia de Configuracion</h4>
|
|
<p>Configura tu servidor virtual paso a paso</p>
|
|
</div>
|
|
</a>
|
|
|
|
<a href="/Odoo-Hosting/Hosting-Odoo-espana-Providers-2025/" class="related-card">
|
|
<div class="related-card-image">E</div>
|
|
<div class="related-card-content">
|
|
<h4>Odoo Hosting en Espana</h4>
|
|
<p>Providers locales con soporte en espanol</p>
|
|
</div>
|
|
</a>
|
|
</div>
|
|
</section>
|
|
</main>
|
|
|
|
<!-- EEAT Author Section -->
|
|
<div id="eeat-section"></div>
|
|
|
|
<div id="footer"><footer class="site-footer"><div class="container"><div class="footer-cols"><div><strong>Odoo Expertos</strong></div><nav class="footer-nav"><a href="/en/">Home</a><a href="/en/odoo/">Odoo</a><a href="/en/odoo-ia/">Odoo AI</a><a href="/en/odoo-hosting/">Odoo Hosting</a><a href="/en/mapa-del-sitio/">Sitemap</a></nav></div><div class="footer-bottom"><small>© 2026 Odoo Expertos</small></div></div></footer></div><nav class="footer-nav"><a href="/en/">Home</a><a href="/en/odoo/">Odoo</a><a href="/en/odoo-ia/">Odoo AI</a><a href="/en/odoo-hosting/">Odoo Hosting</a><a href="/en/mapa-del-sitio/">Sitemap</a></nav></div><div class="footer-bottom"><small>© 2026 Odoo Expertos</small></div></div></footer></div>
|
|
|
|
<!-- Scripts -->
|
|
<script src="/js/language-router.js"></script>
|
|
<script src="/components/header.min.js"></script>
|
|
<script src="/components/footer.min.js"></script>
|
|
<script src="/components/eeat.min.js"></script>
|
|
<script src="/js/cookie-banner.min.js"></script>
|
|
|
|
<!-- D3.js -->
|
|
<script src="https://d3js.org/d3.v7.min.js"></script>
|
|
|
|
<script>
|
|
// Initialize components
|
|
// Scroll animation observer
|
|
const observer = new IntersectionObserver((entries) => {
|
|
entries.forEach(entry => {
|
|
if (entry.isIntersecting) {
|
|
entry.target.classList.add('visible');
|
|
}
|
|
});
|
|
}, { threshold: 0.1 });
|
|
|
|
document.querySelectorAll('.fade-in').forEach(el => observer.observe(el));
|
|
|
|
// FAQ Toggle
|
|
document.querySelectorAll('.faq-question').forEach(question => {
|
|
question.addEventListener('click', () => {
|
|
const item = question.parentElement;
|
|
item.classList.toggle('open');
|
|
});
|
|
});
|
|
|
|
// Chart Data
|
|
const chartData = {
|
|
// Cost per users chart data
|
|
costByUsers: [
|
|
{ users: 5, odoosh: 155, cloudpepper: 204, selfhosted: 195 },
|
|
{ users: 10, odoosh: 310, cloudpepper: 329, selfhosted: 290 },
|
|
{ users: 25, odoosh: 775, cloudpepper: 779, selfhosted: 675 },
|
|
{ users: 50, odoosh: 1400, cloudpepper: 1479, selfhosted: 1250 },
|
|
{ users: 100, odoosh: 2500, cloudpepper: 2579, selfhosted: 2350 }
|
|
],
|
|
// TCO 3 years for 25 users
|
|
tco: [
|
|
{ name: 'Odoo.sh', year1: 9300, year2: 9300, year3: 9300, color: '#714B67' },
|
|
{ name: 'Cloudpepper', year1: 9348, year2: 9348, year3: 9348, color: '#4CAF50' },
|
|
{ name: 'Self-Hosted', year1: 8100, year2: 8100, year3: 8100, color: '#2196F3' }
|
|
],
|
|
// Radar chart data
|
|
radar: {
|
|
categories: ['Rendimiento', 'Soporte', 'Precio', 'Facilidad', 'Escalabilidad', 'Control'],
|
|
providers: [
|
|
{ name: 'Odoo.sh', values: [92, 95, 65, 98, 90, 60], color: '#714B67' },
|
|
{ name: 'Cloudpepper', values: [88, 90, 75, 85, 85, 80], color: '#4CAF50' },
|
|
{ name: 'Self-Hosted', values: [90, 50, 85, 55, 95, 100], color: '#2196F3' }
|
|
]
|
|
}
|
|
};
|
|
|
|
// Tooltip
|
|
const tooltip = d3.select('body').append('div')
|
|
.attr('class', 'd3-tooltip')
|
|
.style('opacity', 0);
|
|
|
|
// Cost by Users Chart (Line Chart)
|
|
function renderCostChart() {
|
|
const container = d3.select('#cost-chart');
|
|
if (container.empty()) return;
|
|
|
|
const width = container.node().getBoundingClientRect().width;
|
|
const height = 400;
|
|
const margin = { top: 40, right: 120, bottom: 60, left: 80 };
|
|
|
|
container.html('');
|
|
|
|
const svg = container.append('svg')
|
|
.attr('width', width)
|
|
.attr('height', height);
|
|
|
|
const xScale = d3.scaleLinear()
|
|
.domain([0, 110])
|
|
.range([margin.left, width - margin.right]);
|
|
|
|
const yScale = d3.scaleLinear()
|
|
.domain([0, 3000])
|
|
.range([height - margin.bottom, margin.top]);
|
|
|
|
// Grid lines
|
|
svg.append('g')
|
|
.attr('class', 'grid')
|
|
.attr('transform', `translate(0,${height - margin.bottom})`)
|
|
.call(d3.axisBottom(xScale).tickSize(-(height - margin.top - margin.bottom)).tickFormat(''))
|
|
.selectAll('line').attr('stroke', '#333');
|
|
|
|
svg.append('g')
|
|
.attr('class', 'grid')
|
|
.attr('transform', `translate(${margin.left},0)`)
|
|
.call(d3.axisLeft(yScale).tickSize(-(width - margin.left - margin.right)).tickFormat(''))
|
|
.selectAll('line').attr('stroke', '#333');
|
|
|
|
// Axes
|
|
svg.append('g')
|
|
.attr('transform', `translate(0,${height - margin.bottom})`)
|
|
.call(d3.axisBottom(xScale).tickFormat(d => d + ' usuarios'))
|
|
.attr('color', '#888');
|
|
|
|
svg.append('g')
|
|
.attr('transform', `translate(${margin.left},0)`)
|
|
.call(d3.axisLeft(yScale).tickFormat(d => d + ' EUR'))
|
|
.attr('color', '#888');
|
|
|
|
// Line generators
|
|
const lineOdoosh = d3.line()
|
|
.x(d => xScale(d.users))
|
|
.y(d => yScale(d.odoosh))
|
|
.curve(d3.curveMonotoneX);
|
|
|
|
const lineCloudpepper = d3.line()
|
|
.x(d => xScale(d.users))
|
|
.y(d => yScale(d.cloudpepper))
|
|
.curve(d3.curveMonotoneX);
|
|
|
|
const lineSelfhosted = d3.line()
|
|
.x(d => xScale(d.users))
|
|
.y(d => yScale(d.selfhosted))
|
|
.curve(d3.curveMonotoneX);
|
|
|
|
// Draw lines with animation
|
|
const providers = [
|
|
{ line: lineOdoosh, key: 'odoosh', color: '#714B67', name: 'Odoo.sh' },
|
|
{ line: lineCloudpepper, key: 'cloudpepper', color: '#4CAF50', name: 'Cloudpepper' },
|
|
{ line: lineSelfhosted, key: 'selfhosted', color: '#2196F3', name: 'Self-Hosted' }
|
|
];
|
|
|
|
providers.forEach((provider, idx) => {
|
|
const path = svg.append('path')
|
|
.datum(chartData.costByUsers)
|
|
.attr('fill', 'none')
|
|
.attr('stroke', provider.color)
|
|
.attr('stroke-width', 3)
|
|
.attr('d', provider.line);
|
|
|
|
const totalLength = path.node().getTotalLength();
|
|
|
|
path.attr('stroke-dasharray', totalLength)
|
|
.attr('stroke-dashoffset', totalLength)
|
|
.transition()
|
|
.duration(1500)
|
|
.delay(idx * 300)
|
|
.attr('stroke-dashoffset', 0);
|
|
|
|
// Data points
|
|
svg.selectAll(`.dot-${provider.key}`)
|
|
.data(chartData.costByUsers)
|
|
.join('circle')
|
|
.attr('class', `dot-${provider.key}`)
|
|
.attr('cx', d => xScale(d.users))
|
|
.attr('cy', d => yScale(d[provider.key]))
|
|
.attr('r', 0)
|
|
.attr('fill', provider.color)
|
|
.attr('stroke', '#fff')
|
|
.attr('stroke-width', 2)
|
|
.style('cursor', 'pointer')
|
|
.on('mouseover', function(event, d) {
|
|
d3.select(this).attr('r', 8);
|
|
tooltip.transition().duration(200).style('opacity', 1);
|
|
tooltip.html(`<strong>${provider.name}</strong><br>${d.users} usuarios<br>Costo: ${d[provider.key]} EUR/mes`)
|
|
.style('left', (event.pageX + 15) + 'px')
|
|
.style('top', (event.pageY - 28) + 'px');
|
|
})
|
|
.on('mouseout', function() {
|
|
d3.select(this).attr('r', 5);
|
|
tooltip.transition().duration(200).style('opacity', 0);
|
|
})
|
|
.transition()
|
|
.duration(500)
|
|
.delay(idx * 300 + 1200)
|
|
.attr('r', 5);
|
|
});
|
|
|
|
// Legend
|
|
const legend = svg.append('g')
|
|
.attr('transform', `translate(${width - margin.right + 20}, ${margin.top})`);
|
|
|
|
providers.forEach((provider, idx) => {
|
|
const g = legend.append('g')
|
|
.attr('transform', `translate(0, ${idx * 25})`);
|
|
|
|
g.append('line')
|
|
.attr('x1', 0)
|
|
.attr('x2', 20)
|
|
.attr('y1', 0)
|
|
.attr('y2', 0)
|
|
.attr('stroke', provider.color)
|
|
.attr('stroke-width', 3);
|
|
|
|
g.append('text')
|
|
.attr('x', 25)
|
|
.attr('y', 5)
|
|
.attr('fill', '#b0b0b0')
|
|
.attr('font-size', '12px')
|
|
.text(provider.name);
|
|
});
|
|
|
|
// Axis labels
|
|
svg.append('text')
|
|
.attr('x', width / 2)
|
|
.attr('y', height - 10)
|
|
.attr('text-anchor', 'middle')
|
|
.attr('fill', '#888')
|
|
.attr('font-size', '14px')
|
|
.text('Numero de Usuarios');
|
|
|
|
svg.append('text')
|
|
.attr('transform', 'rotate(-90)')
|
|
.attr('x', -height / 2)
|
|
.attr('y', 20)
|
|
.attr('text-anchor', 'middle')
|
|
.attr('fill', '#888')
|
|
.attr('font-size', '14px')
|
|
.text('Costo Mensual (EUR)');
|
|
}
|
|
|
|
// TCO Chart (Stacked Bar)
|
|
function renderTCOChart() {
|
|
const container = d3.select('#tco-chart');
|
|
if (container.empty()) return;
|
|
|
|
const width = container.node().getBoundingClientRect().width;
|
|
const height = 400;
|
|
const margin = { top: 40, right: 40, bottom: 80, left: 80 };
|
|
|
|
container.html('');
|
|
|
|
const svg = container.append('svg')
|
|
.attr('width', width)
|
|
.attr('height', height);
|
|
|
|
const years = ['Ano 1', 'Ano 2', 'Ano 3'];
|
|
const providers = chartData.tco;
|
|
|
|
const xScale = d3.scaleBand()
|
|
.domain(providers.map(d => d.name))
|
|
.range([margin.left, width - margin.right])
|
|
.padding(0.3);
|
|
|
|
const yScale = d3.scaleLinear()
|
|
.domain([0, 35000])
|
|
.range([height - margin.bottom, margin.top]);
|
|
|
|
// Axes
|
|
svg.append('g')
|
|
.attr('transform', `translate(0,${height - margin.bottom})`)
|
|
.call(d3.axisBottom(xScale))
|
|
.attr('color', '#888')
|
|
.selectAll('text')
|
|
.attr('font-size', '14px');
|
|
|
|
svg.append('g')
|
|
.attr('transform', `translate(${margin.left},0)`)
|
|
.call(d3.axisLeft(yScale).tickFormat(d => d.toLocaleString() + ' EUR'))
|
|
.attr('color', '#888');
|
|
|
|
// Bars (stacked)
|
|
const barWidth = xScale.bandwidth() / 3.5;
|
|
|
|
providers.forEach((provider, pIdx) => {
|
|
[provider.year1, provider.year2, provider.year3].forEach((value, yIdx) => {
|
|
const cumulative = [provider.year1, provider.year1 + provider.year2, provider.year1 + provider.year2 + provider.year3][yIdx];
|
|
|
|
svg.append('rect')
|
|
.attr('x', xScale(provider.name) + yIdx * (barWidth + 5))
|
|
.attr('y', height - margin.bottom)
|
|
.attr('width', barWidth)
|
|
.attr('height', 0)
|
|
.attr('fill', provider.color)
|
|
.attr('opacity', 0.6 + yIdx * 0.15)
|
|
.attr('rx', 4)
|
|
.style('cursor', 'pointer')
|
|
.on('mouseover', function(event) {
|
|
d3.select(this).attr('opacity', 1);
|
|
tooltip.transition().duration(200).style('opacity', 1);
|
|
tooltip.html(`<strong>${provider.name}</strong><br>Ano ${yIdx + 1}: ${value.toLocaleString()} EUR<br>Acumulado: ${cumulative.toLocaleString()} EUR`)
|
|
.style('left', (event.pageX + 15) + 'px')
|
|
.style('top', (event.pageY - 28) + 'px');
|
|
})
|
|
.on('mouseout', function() {
|
|
d3.select(this).attr('opacity', 0.6 + yIdx * 0.15);
|
|
tooltip.transition().duration(200).style('opacity', 0);
|
|
})
|
|
.transition()
|
|
.duration(800)
|
|
.delay(pIdx * 200 + yIdx * 100)
|
|
.attr('y', yScale(cumulative))
|
|
.attr('height', height - margin.bottom - yScale(cumulative));
|
|
});
|
|
});
|
|
|
|
// Legend for years
|
|
const legend = svg.append('g')
|
|
.attr('transform', `translate(${width - margin.right - 100}, ${margin.top})`);
|
|
|
|
years.forEach((year, idx) => {
|
|
const g = legend.append('g')
|
|
.attr('transform', `translate(0, ${idx * 25})`);
|
|
|
|
g.append('rect')
|
|
.attr('width', 15)
|
|
.attr('height', 15)
|
|
.attr('fill', '#714B67')
|
|
.attr('opacity', 0.6 + idx * 0.15)
|
|
.attr('rx', 3);
|
|
|
|
g.append('text')
|
|
.attr('x', 22)
|
|
.attr('y', 12)
|
|
.attr('fill', '#b0b0b0')
|
|
.attr('font-size', '12px')
|
|
.text(year);
|
|
});
|
|
|
|
// Title
|
|
svg.append('text')
|
|
.attr('x', width / 2)
|
|
.attr('y', 20)
|
|
.attr('text-anchor', 'middle')
|
|
.attr('fill', '#b0b0b0')
|
|
.attr('font-size', '14px')
|
|
.text('TCO para 25 usuarios (incluye licencias + hosting)');
|
|
}
|
|
|
|
// Radar Chart
|
|
function renderRadarChart() {
|
|
const container = d3.select('#radar-chart');
|
|
if (container.empty()) return;
|
|
|
|
const width = container.node().getBoundingClientRect().width;
|
|
const height = 400;
|
|
const margin = 100;
|
|
const radius = Math.min(width, height) / 2 - margin;
|
|
|
|
container.html('');
|
|
|
|
const svg = container.append('svg')
|
|
.attr('width', width)
|
|
.attr('height', height)
|
|
.append('g')
|
|
.attr('transform', `translate(${width/2},${height/2})`);
|
|
|
|
const categories = chartData.radar.categories;
|
|
const angleSlice = Math.PI * 2 / categories.length;
|
|
|
|
const rScale = d3.scaleLinear()
|
|
.domain([0, 100])
|
|
.range([0, radius]);
|
|
|
|
// Grid circles
|
|
const levels = 5;
|
|
for (let i = 1; i <= levels; i++) {
|
|
svg.append('circle')
|
|
.attr('r', radius * i / levels)
|
|
.attr('fill', 'none')
|
|
.attr('stroke', '#3a3a3a')
|
|
.attr('stroke-dasharray', '4,4');
|
|
|
|
svg.append('text')
|
|
.attr('x', 5)
|
|
.attr('y', -radius * i / levels)
|
|
.attr('fill', '#666')
|
|
.attr('font-size', '10px')
|
|
.text(i * 20);
|
|
}
|
|
|
|
// Axis lines and labels
|
|
categories.forEach((cat, i) => {
|
|
const angle = angleSlice * i - Math.PI / 2;
|
|
svg.append('line')
|
|
.attr('x1', 0)
|
|
.attr('y1', 0)
|
|
.attr('x2', radius * Math.cos(angle))
|
|
.attr('y2', radius * Math.sin(angle))
|
|
.attr('stroke', '#444');
|
|
|
|
const labelRadius = radius + 30;
|
|
svg.append('text')
|
|
.attr('x', labelRadius * Math.cos(angle))
|
|
.attr('y', labelRadius * Math.sin(angle))
|
|
.attr('text-anchor', 'middle')
|
|
.attr('dominant-baseline', 'middle')
|
|
.attr('fill', '#b0b0b0')
|
|
.attr('font-size', '12px')
|
|
.text(cat);
|
|
});
|
|
|
|
// Radar areas
|
|
const radarLine = d3.lineRadial()
|
|
.radius(d => rScale(d))
|
|
.angle((d, i) => angleSlice * i)
|
|
.curve(d3.curveLinearClosed);
|
|
|
|
chartData.radar.providers.forEach((provider, idx) => {
|
|
const path = svg.append('path')
|
|
.datum(provider.values)
|
|
.attr('d', radarLine)
|
|
.attr('fill', provider.color)
|
|
.attr('fill-opacity', 0)
|
|
.attr('stroke', provider.color)
|
|
.attr('stroke-width', 2)
|
|
.attr('stroke-opacity', 0);
|
|
|
|
path.transition()
|
|
.duration(800)
|
|
.delay(idx * 200)
|
|
.attr('fill-opacity', 0.2)
|
|
.attr('stroke-opacity', 1);
|
|
|
|
// Data points
|
|
provider.values.forEach((val, i) => {
|
|
const angle = angleSlice * i - Math.PI / 2;
|
|
svg.append('circle')
|
|
.attr('cx', rScale(val) * Math.cos(angle))
|
|
.attr('cy', rScale(val) * Math.sin(angle))
|
|
.attr('r', 0)
|
|
.attr('fill', provider.color)
|
|
.transition()
|
|
.duration(500)
|
|
.delay(idx * 200 + i * 50)
|
|
.attr('r', 4);
|
|
});
|
|
});
|
|
|
|
// Legend
|
|
const legendX = width > 600 ? radius + 50 : -radius;
|
|
const legendY = width > 600 ? -radius + 20 : radius + 30;
|
|
|
|
chartData.radar.providers.forEach((provider, idx) => {
|
|
const g = svg.append('g')
|
|
.attr('transform', `translate(${legendX}, ${legendY + idx * 25})`);
|
|
|
|
g.append('rect')
|
|
.attr('width', 15)
|
|
.attr('height', 15)
|
|
.attr('fill', provider.color)
|
|
.attr('rx', 3);
|
|
|
|
g.append('text')
|
|
.attr('x', 22)
|
|
.attr('y', 12)
|
|
.attr('fill', '#b0b0b0')
|
|
.attr('font-size', '12px')
|
|
.text(provider.name);
|
|
});
|
|
}
|
|
|
|
// Initialize charts when visible
|
|
const chartObserver = new IntersectionObserver((entries) => {
|
|
entries.forEach(entry => {
|
|
if (entry.isIntersecting) {
|
|
const id = entry.target.id;
|
|
setTimeout(() => {
|
|
if (id === 'cost-chart') renderCostChart();
|
|
if (id === 'tco-chart') renderTCOChart();
|
|
if (id === 'radar-chart') renderRadarChart();
|
|
}, 100);
|
|
chartObserver.unobserve(entry.target);
|
|
}
|
|
});
|
|
}, { threshold: 0.15 });
|
|
|
|
document.querySelectorAll('.chart-container').forEach(el => chartObserver.observe(el));
|
|
|
|
// Resize handler
|
|
let resizeTimeout;
|
|
window.addEventListener('resize', () => {
|
|
clearTimeout(resizeTimeout);
|
|
resizeTimeout = setTimeout(() => {
|
|
renderCostChart();
|
|
renderTCOChart();
|
|
renderRadarChart();
|
|
}, 300);
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|