1859 lines
76 KiB
HTML
1859 lines
76 KiB
HTML
<!DOCTYPE html>
|
|
<html lang="de">
|
|
<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 18 Hosting 2026 | Odoo Expertos · DE</title>
|
|
|
|
<meta name="description" content="Guia completa de hosting fuer Odoo 18 en 2026. Descubre los requisitos del Server, novedades que afectan al hosting, Lieferanten compatib - Odoo 18 Hosting 2026 | DE">
|
|
<meta name="keywords" content="odoo 18 hosting, hosting odoo 18, requisitos odoo 18, Server odoo 18, migracion odoo 17 a 18, odoo 18 vps, odoo 18 cloud, novedades odoo 18 hosting">
|
|
<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/de/odoo-hosting/odoo-18-hosting-2026/">
|
|
|
|
<!-- Hreflang -->
|
|
<link rel="alternate" hreflang="de" href="https://www.odoo-expertos.com/de/odoo-hosting/odoo-18-hosting-2026/" />
|
|
<link rel="alternate" hreflang="en" href="https://www.odoo-expertos.com/en/odoo-hosting/odoo-18-hosting-2026/" />
|
|
<link rel="alternate" hreflang="de" href="https://www.odoo-expertos.com/de/odoo-hosting/odoo-18-hosting-2026/" />
|
|
<link rel="alternate" hreflang="fr" href="https://www.odoo-expertos.com/fr/odoo-hosting/odoo-18-hosting-2026/" />
|
|
<link rel="alternate" hreflang="pt" href="https://www.odoo-expertos.com/pt/odoo-hosting/odoo-18-hosting-2026/" />
|
|
<link rel="alternate" hreflang="ar" href="https://www.odoo-expertos.com/ar/odoo-hosting/odoo-18-hosting-2026/" />
|
|
<link rel="alternate" hreflang="x-default" href="https://www.odoo-expertos.com/odoo-hosting/odoo-18-hosting-2026/" />
|
|
|
|
<!-- Open Graph -->
|
|
<meta property="og:title" content="Odoo 18 Hosting 2026: Requisitos, Novedades y Lieferanten Compatibles">
|
|
<meta property="og:description" content="Guia completa de hosting fuer Odoo 18. Requisitos del Server, novedades, Lieferanten compatibles y migracion von Odoo 17.">
|
|
<meta property="og:type" content="article">
|
|
<meta property="og:url" content="https://www.odoo-expertos.com/de/odoo-hosting/odoo-18-hosting-2026/">
|
|
<meta property="og:image" content="https://www.odoo-expertos.com/images/odoo-18-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 18 Hosting 2026: Guia Completa">
|
|
<meta name="twitter:description" content="Todo ueber hosting fuer Odoo 18: requisitos, novedades, Lieferanten y migracion.">
|
|
|
|
<!-- Schema.org Article -->
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "Article",
|
|
"headline": "Odoo 18 Hosting 2026: Requisitos, Novedades y Lieferanten Compatibles",
|
|
"description": "Guia completa de hosting fuer Odoo 18 en 2026. Descubre los requisitos del Server, novedades que afectan al hosting, Lieferanten compatibles y guia de migracion von Odoo 17.",
|
|
"author": {
|
|
"@type": "Person",
|
|
"name": "Dr. Equipo Odoo Expertos",
|
|
"url": "https://www.odoo-expertos.com/autor/maria-elena-rodriguez/",
|
|
"jobTitle": "Consultora Senior en Sistemas ERP"
|
|
},
|
|
"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/de/odoo-hosting/odoo-18-hosting-2026/"
|
|
}
|
|
}
|
|
</script>
|
|
|
|
<!-- FAQ Schema -->
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "FAQPage",
|
|
"mainEntity": [
|
|
{
|
|
"@type": "Question",
|
|
"name": "Cuales son los requisitos minimos de Server fuer Odoo 18?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "Odoo 18 requiere como minimo: 4GB RAM (8GB recomendado), 2 CPU cores (4 recomendado), 50GB SSD, PostgreSQL 15+, Python 3.11+, y Ubuntu 22.04 LTS o superior. Para Enterprise, duplicar estos recursos."
|
|
}
|
|
},
|
|
{
|
|
"@type": "Question",
|
|
"name": "Que novedades de Odoo 18 afectan al hosting?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "Odoo 18 introduce: neu motor de IA que requiere mas RAM, renderizado frontend mejorado con mayor uso de CPU, WebSocket nativo que necesita configuracion especial de proxy, y Support fuer Python 3.12 con mejor rendimiento."
|
|
}
|
|
},
|
|
{
|
|
"@type": "Question",
|
|
"name": "Puedo migrar de Odoo 17 a Odoo 18 sin cambiar de hosting?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "Depende de tu hosting actual. Si cumple con los neus requisitos (Python 3.11+, PostgreSQL 15+, mas RAM), puedes migrar in-situ. De lo contrario, necesitaras aktualisieren el Server o migrar a un Lieferant compatible con Odoo 18."
|
|
}
|
|
},
|
|
{
|
|
"@type": "Question",
|
|
"name": "Cual es el mejor hosting fuer Odoo 18 en 2026?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "Para hosting gestionado: Odoo4projects (29 euros/mes) u Odoo.sh (oficial). Para VPS: Hetzner o DigitalOcean con configuracion optimizada. La eleccion depende de si prefieres simplicidad (gestionado) o control total (VPS)."
|
|
}
|
|
},
|
|
{
|
|
"@type": "Question",
|
|
"name": "Odoo 18 es compatible con Docker?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "Si, Odoo 18 es totalmente compatible con Docker. Las imagenes oficiales estan disponibles en Docker Hub. Para produccion, recomendamos usar docker-compose con servicios sefuerdos fuer Odoo, PostgreSQL y Redis."
|
|
}
|
|
},
|
|
{
|
|
"@type": "Question",
|
|
"name": "Cuanta RAM necesito fuer 50 Benutzer en Odoo 18?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "Para 50 Benutzer simultaneos en Odoo 18, recomendamos minimo 16GB RAM, 8 CPU cores, y configurar 8-12 workers. Si usas funcionalidades de IA intensivamente, considera 32GB RAM fuer un rendimiento optimo."
|
|
}
|
|
},
|
|
{
|
|
"@type": "Question",
|
|
"name": "Que version de PostgreSQL es compatible con Odoo 18?",
|
|
"acceptedAnswer": {
|
|
"@type": "Answer",
|
|
"text": "Odoo 18 requiere PostgreSQL 15 como minimo, con Support oficial fuer PostgreSQL 16. Recomendamos PostgreSQL 16 por sus mejoras de rendimiento en consultas complejas y mejor manejo de JSON."
|
|
}
|
|
}
|
|
]
|
|
}
|
|
</script>
|
|
|
|
<!-- SoftwareApplication Schema -->
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "SoftwareApplication",
|
|
"name": "Odoo 18",
|
|
"applicationCategory": "BusinessApplication",
|
|
"operatingSystem": "Linux",
|
|
"softwareVersion": "18.0",
|
|
"offers": {
|
|
"@type": "Offer",
|
|
"price": "0",
|
|
"priceCurrency": "EUR",
|
|
"description": "Odoo Community Edition es gratuito"
|
|
},
|
|
"softwareRequirements": "Python 3.11+, PostgreSQL 15+, Ubuntu 22.04 LTS"
|
|
}
|
|
</script>
|
|
|
|
<!-- BreadcrumbList Schema -->
|
|
<script type="application/ld+json">
|
|
{
|
|
"@context": "https://schema.org",
|
|
"@type": "BreadcrumbList",
|
|
"itemListElement": [
|
|
{
|
|
"@type": "ListItem",
|
|
"position": 1,
|
|
"name": "Inicio",
|
|
"item": "https://www.odoo-expertos.com/"
|
|
},
|
|
{
|
|
"@type": "ListItem",
|
|
"position": 2,
|
|
"name": "Hosting Odoo",
|
|
"item": "https://www.odoo-expertos.com/de/odoo-hosting/"
|
|
},
|
|
{
|
|
"@type": "ListItem",
|
|
"position": 3,
|
|
"name": "Odoo 18 Hosting 2026",
|
|
"item": "https://www.odoo-expertos.com/de/odoo-hosting/odoo-18-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 #FF6B35;
|
|
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(255,107,53,0.15) 0%, transparent 70%);
|
|
pointer-events: none;
|
|
}
|
|
|
|
.pillar-hero h1 {
|
|
font-size: clamp(2rem, 5vw, 3.5rem);
|
|
color: #FF6B35;
|
|
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;
|
|
}
|
|
|
|
.version-badge {
|
|
display: inline-block;
|
|
background: linear-gradient(135deg, #FF6B35, #FF8A50);
|
|
color: #fff;
|
|
padding: 0.5rem 1.5rem;
|
|
border-radius: 30px;
|
|
font-weight: 700;
|
|
font-size: 1.2rem;
|
|
margin-bottom: 1rem;
|
|
box-shadow: 0 4px 15px rgba(255,107,53,0.4);
|
|
}
|
|
|
|
.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(255,107,53,0.1);
|
|
border-radius: 8px;
|
|
border: 1px solid rgba(255,107,53,0.2);
|
|
transition: transform 0.3s ease, border-color 0.3s ease;
|
|
}
|
|
|
|
.stat-card:hover {
|
|
transform: translateY(-5px);
|
|
border-color: #FF6B35;
|
|
}
|
|
|
|
.stat-number {
|
|
font-size: 2.5rem;
|
|
font-weight: 700;
|
|
color: #FF6B35;
|
|
display: block;
|
|
}
|
|
|
|
.stat-label {
|
|
color: #b0b0b0;
|
|
font-size: 0.9rem;
|
|
margin-top: 0.5rem;
|
|
}
|
|
|
|
.toc {
|
|
background: #2a2a2a;
|
|
border: 2px solid #FF6B35;
|
|
border-radius: 12px;
|
|
padding: 2rem;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.toc h2 {
|
|
color: #FF6B35;
|
|
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: #FF6B35;
|
|
}
|
|
|
|
.toc-list a::before {
|
|
content: '>';
|
|
color: #FF6B35;
|
|
}
|
|
|
|
.content-section {
|
|
margin: 3rem 0;
|
|
}
|
|
|
|
.content-section h2 {
|
|
color: #FF8A50;
|
|
margin-bottom: 1.5rem;
|
|
padding-bottom: 0.5rem;
|
|
border-bottom: 2px solid rgba(255,107,53,0.3);
|
|
}
|
|
|
|
.content-section h3 {
|
|
color: #FFB74D;
|
|
margin: 2rem 0 1rem;
|
|
}
|
|
|
|
.content-section p {
|
|
line-height: 1.8;
|
|
color: #b0b0b0;
|
|
margin-bottom: 1.2rem;
|
|
}
|
|
|
|
.chart-section {
|
|
margin: 3rem 0;
|
|
padding: 2rem;
|
|
background: #2a2a2a;
|
|
border-radius: 12px;
|
|
}
|
|
|
|
.chart-section h3 {
|
|
color: #FF8A50;
|
|
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(255,107,53,0.2);
|
|
color: #FF6B35;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.comparison-table tr:hover {
|
|
background: rgba(255,107,53,0.05);
|
|
}
|
|
|
|
.comparison-table .check {
|
|
color: #4CAF50;
|
|
font-weight: bold;
|
|
}
|
|
|
|
.comparison-table .cross {
|
|
color: #f44336;
|
|
}
|
|
|
|
.comparison-table .new-badge {
|
|
background: #4CAF50;
|
|
color: #fff;
|
|
padding: 0.2rem 0.5rem;
|
|
border-radius: 4px;
|
|
font-size: 0.75rem;
|
|
margin-left: 0.5rem;
|
|
}
|
|
|
|
.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(255,107,53,0.2);
|
|
transition: transform 0.3s ease, border-color 0.3s ease;
|
|
}
|
|
|
|
.provider-card:hover {
|
|
transform: translateY(-5px);
|
|
border-color: #FF6B35;
|
|
}
|
|
|
|
.provider-card.featured {
|
|
border-color: #FF6B35;
|
|
background: linear-gradient(135deg, rgba(255,107,53,0.15) 0%, #2a2a2a 100%);
|
|
position: relative;
|
|
}
|
|
|
|
.provider-card .badge {
|
|
display: inline-block;
|
|
padding: 0.25rem 0.75rem;
|
|
background: #FF6B35;
|
|
color: #fff;
|
|
border-radius: 20px;
|
|
font-size: 0.8rem;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.provider-card .badge.odoo18 {
|
|
background: #4CAF50;
|
|
}
|
|
|
|
.provider-card h4 {
|
|
color: #fff;
|
|
margin-bottom: 0.5rem;
|
|
font-size: 1.3rem;
|
|
}
|
|
|
|
.provider-card .price {
|
|
font-size: 2rem;
|
|
color: #FF6B35;
|
|
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: 'OK';
|
|
color: #4CAF50;
|
|
font-weight: bold;
|
|
font-size: 0.8rem;
|
|
}
|
|
|
|
.provider-card .cta-btn {
|
|
display: block;
|
|
text-align: center;
|
|
padding: 0.75rem 1.5rem;
|
|
background: #FF6B35;
|
|
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: #FF8A50;
|
|
transform: scale(1.02);
|
|
}
|
|
|
|
.migration-steps {
|
|
counter-reset: step;
|
|
list-style: none;
|
|
padding: 0;
|
|
}
|
|
|
|
.migration-steps li {
|
|
position: relative;
|
|
padding: 1.5rem 1.5rem 1.5rem 4rem;
|
|
margin-bottom: 1rem;
|
|
background: #2a2a2a;
|
|
border-radius: 8px;
|
|
border-left: 3px solid #FF6B35;
|
|
}
|
|
|
|
.migration-steps li::before {
|
|
counter-increment: step;
|
|
content: counter(step);
|
|
position: absolute;
|
|
left: 1rem;
|
|
top: 50%;
|
|
transform: translateY(-50%);
|
|
width: 2rem;
|
|
height: 2rem;
|
|
background: #FF6B35;
|
|
color: #fff;
|
|
border-radius: 50%;
|
|
display: flex;
|
|
align-items: center;
|
|
justify-content: center;
|
|
font-weight: 700;
|
|
}
|
|
|
|
.migration-steps li h4 {
|
|
color: #FF8A50;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.migration-steps li p {
|
|
color: #b0b0b0;
|
|
margin: 0;
|
|
}
|
|
|
|
.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(255,107,53,0.1);
|
|
}
|
|
|
|
.faq-question::after {
|
|
content: '+';
|
|
font-size: 1.5rem;
|
|
color: #FF6B35;
|
|
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(255,107,53,0.2) 0%, rgba(255,138,80,0.1) 100%);
|
|
border: 2px solid rgba(255,107,53,0.5);
|
|
border-radius: 12px;
|
|
padding: 2.5rem;
|
|
text-align: center;
|
|
margin: 3rem 0;
|
|
}
|
|
|
|
.cta-banner h3 {
|
|
color: #FF6B35;
|
|
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: #FF6B35;
|
|
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: #FF8A50;
|
|
transform: scale(1.05);
|
|
}
|
|
|
|
.highlight-box {
|
|
background: linear-gradient(135deg, rgba(255,107,53,0.1) 0%, rgba(255,138,80,0.05) 100%);
|
|
border-left: 4px solid #FF6B35;
|
|
padding: 1.5rem;
|
|
margin: 2rem 0;
|
|
border-radius: 0 8px 8px 0;
|
|
}
|
|
|
|
.highlight-box h4 {
|
|
color: #FF6B35;
|
|
margin-bottom: 0.5rem;
|
|
}
|
|
|
|
.highlight-box.warning {
|
|
border-left-color: #FFC107;
|
|
}
|
|
|
|
.highlight-box.warning h4 {
|
|
color: #FFC107;
|
|
}
|
|
|
|
.highlight-box.success {
|
|
border-left-color: #4CAF50;
|
|
}
|
|
|
|
.highlight-box.success h4 {
|
|
color: #4CAF50;
|
|
}
|
|
|
|
.new-features-grid {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
gap: 1.5rem;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.feature-card {
|
|
background: #2a2a2a;
|
|
border-radius: 12px;
|
|
padding: 1.5rem;
|
|
border: 1px solid rgba(255,107,53,0.2);
|
|
transition: transform 0.3s ease;
|
|
}
|
|
|
|
.feature-card:hover {
|
|
transform: translateY(-3px);
|
|
border-color: #FF6B35;
|
|
}
|
|
|
|
.feature-card .icon {
|
|
font-size: 2.5rem;
|
|
margin-bottom: 1rem;
|
|
}
|
|
|
|
.feature-card h4 {
|
|
color: #FF8A50;
|
|
margin-bottom: 0.75rem;
|
|
}
|
|
|
|
.feature-card p {
|
|
color: #888;
|
|
font-size: 0.95rem;
|
|
margin: 0;
|
|
}
|
|
|
|
.feature-card .impact {
|
|
display: inline-block;
|
|
margin-top: 1rem;
|
|
padding: 0.25rem 0.75rem;
|
|
background: rgba(255,107,53,0.2);
|
|
color: #FF6B35;
|
|
border-radius: 20px;
|
|
font-size: 0.8rem;
|
|
}
|
|
|
|
.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(255,107,53,0.3);
|
|
}
|
|
|
|
.d3-tooltip strong {
|
|
color: #FF6B35;
|
|
}
|
|
|
|
.specs-comparison {
|
|
display: grid;
|
|
grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));
|
|
gap: 1.5rem;
|
|
margin: 2rem 0;
|
|
}
|
|
|
|
.specs-card {
|
|
background: #2a2a2a;
|
|
border-radius: 12px;
|
|
padding: 1.5rem;
|
|
border: 2px solid transparent;
|
|
}
|
|
|
|
.specs-card.minimum {
|
|
border-color: #FFC107;
|
|
}
|
|
|
|
.specs-card.recommended {
|
|
border-color: #4CAF50;
|
|
}
|
|
|
|
.specs-card.enterprise {
|
|
border-color: #FF6B35;
|
|
}
|
|
|
|
.specs-card h4 {
|
|
text-align: center;
|
|
margin-bottom: 1.5rem;
|
|
padding-bottom: 1rem;
|
|
border-bottom: 1px solid #3a3a3a;
|
|
}
|
|
|
|
.specs-card.minimum h4 {
|
|
color: #FFC107;
|
|
}
|
|
|
|
.specs-card.recommended h4 {
|
|
color: #4CAF50;
|
|
}
|
|
|
|
.specs-card.enterprise h4 {
|
|
color: #FF6B35;
|
|
}
|
|
|
|
.specs-card ul {
|
|
list-style: none;
|
|
padding: 0;
|
|
}
|
|
|
|
.specs-card li {
|
|
display: flex;
|
|
justify-content: space-between;
|
|
padding: 0.75rem 0;
|
|
border-bottom: 1px solid #3a3a3a;
|
|
color: #b0b0b0;
|
|
}
|
|
|
|
.specs-card li span:last-child {
|
|
color: #fff;
|
|
font-weight: 600;
|
|
}
|
|
|
|
.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;
|
|
}
|
|
|
|
.specs-comparison {
|
|
grid-template-columns: 1fr;
|
|
}
|
|
|
|
.provider-grid {
|
|
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="/de/" 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="/de/">Start</a></li><li><a href="/de/odoo/">Odoo</a></li><li><a href="/de/odoo-ia/">Odoo KI</a></li><li><a href="/de/odoo-hosting/">Odoo Hosting</a></li><li><a href="/de/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="/de/">Start</a></li><li><a href="/de/odoo/">Odoo</a></li><li><a href="/de/odoo-ia/">Odoo KI</a></li><li><a href="/de/odoo-hosting/">Odoo Hosting</a></li><li><a href="/de/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">Inicio</span></a>
|
|
<span itemprop="position" style="display:none">1</span>
|
|
</li>
|
|
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
|
<a itemprop="item" href="/de/odoo-hosting/"><span itemprop="name">Hosting Odoo</span></a>
|
|
<span itemprop="position" style="display:none">2</span>
|
|
</li>
|
|
<li itemprop="itemListElement" itemscope itemtype="https://schema.org/ListItem">
|
|
<span itemprop="name">Odoo 18 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="version-badge">Odoo 18</span>
|
|
<h1>Hosting fuer Odoo 18 en 2026: Guia Completa de Requisitos y Lieferanten</h1>
|
|
<p class="pillar-subtitle">Todo lo que necesitas saber fuer alojar Odoo 18: requisitos tecnicos actualizados, novedades que impactan el hosting, Lieferanten compatibles verificados y guia paso a paso fuer migrar von Odoo 17.</p>
|
|
<div class="pillar-meta">
|
|
<span>Publicado: 25 enero 2026</span>
|
|
<span>Actualizado: 25 enero 2026</span>
|
|
<span>30 min lectura</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">18.0</span>
|
|
<span class="stat-label">Version Actual</span>
|
|
</div>
|
|
<div class="stat-card">
|
|
<span class="stat-number">4GB</span>
|
|
<span class="stat-label">RAM Minima</span>
|
|
</div>
|
|
<div class="stat-card">
|
|
<span class="stat-number">Python 3.11+</span>
|
|
<span class="stat-label">Requisito</span>
|
|
</div>
|
|
<div class="stat-card">
|
|
<span class="stat-number">PostgreSQL 15+</span>
|
|
<span class="stat-label">Base de Datos</span>
|
|
</div>
|
|
<div class="stat-card">
|
|
<span class="stat-number">12+</span>
|
|
<span class="stat-label">Lieferanten Compatibles</span>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Table of Contents -->
|
|
<nav class="toc fade-in">
|
|
<h2>Contenido de esta Guia</h2>
|
|
<ol class="toc-list">
|
|
<li><a href="#introduccion">Introduccion a Odoo 18</a></li>
|
|
<li><a href="#timeline-versiones">Evolucion de Versiones Odoo</a></li>
|
|
<li><a href="#novedades-hosting">Novedades que Afectan al Hosting</a></li>
|
|
<li><a href="#requisitos-servidor">Requisitos del Server</a></li>
|
|
<li><a href="#comparativa-requisitos">Comfuertiva de Requisitos por Version</a></li>
|
|
<li><a href="#proveedores-compatibles">Lieferanten Compatibles con Odoo 18</a></li>
|
|
<li><a href="#migracion-odoo17">Guia de Migracion von Odoo 17</a></li>
|
|
<li><a href="#optimizacion">Optimizacion de Hosting fuer Odoo 18</a></li>
|
|
<li><a href="#faq">Haeufig gestellte Fragen</a></li>
|
|
</ol>
|
|
</nav>
|
|
|
|
<!-- Introduction Section -->
|
|
<section id="introduccion" class="content-section fade-in">
|
|
<h2>Introduccion: Odoo 18 y sus Implicaciones fuer el Hosting</h2>
|
|
|
|
<p>Odoo 18, lanzado en octubre de 2025, representa la evolucion mas significativa del popular ERP de codigo abierto en los ultimos anos. Esta version introduce cambios fundamentales en la arquitectura del System que tienen un impacto directo en los requisitos de infraestructura y hosting.</p>
|
|
|
|
<p>La version 18 incorpora un motor de inteligencia artificial completamente integrado, un neu System de renderizado frontend basado en Owl 3.0, y mejoras sustanciales en el manejo de conexiones en tiempo real mediante WebSockets nativos. Estas innovaciones tecnologicas no solo mejoran la experiencia del Benutzer final, sino que tambien modifican las necesidades de recursos del Server de manera considerable.</p>
|
|
|
|
<p>Para las Unternehmen que planean implementar o aktualisieren a Odoo 18, comprender estos cambios es fundamental fuer garantizar un rendimiento optimo. Un Server mal dimensionado puede resultar en tiempos de respuesta langsams, caidas del System durante picos de uso, y una experiencia de Benutzer frustrante que afecta directamente la productividad del negocio.</p>
|
|
|
|
<div class="highlight-box">
|
|
<h4>Dato Clave</h4>
|
|
<p>Odoo 18 requiere aproximadamente un 25-30% mas de recursos de RAM y CPU en comfuercion con Odoo 17 debido a las neus funcionalidades de IA y el motor de renderizado mejorado. Planifica tu infraestructura teniendo en cuenta este incremento.</p>
|
|
</div>
|
|
|
|
<p>En esta guia exhaustiva, analizaremos en profundidad todos los aspectos relacionados con el hosting de Odoo 18: von los requisitos tecnicos minimos y recomendados, pasando por las novedades especificas que afectan la infraestructura, hasta una comfuertiva detallada de los Lieferanten que ofrecen Support certificado fuer esta version.</p>
|
|
|
|
<p>Tambien incluimos una guia completa de migracion von Odoo 17, con los pasos criticos que debes seguir fuer garantizar una transicion exitosa sin perdida de Daten ni interrupciones significativas del servicio. Ya sea que estes comenzando von cero o actualizando una instalacion existente, esta guia te proporcionara toda la informacion necesaria fuer tomar decisiones informadas.</p>
|
|
</section>
|
|
|
|
<!-- D3.js Timeline Chart -->
|
|
<section class="chart-section fade-in">
|
|
<h3 id="timeline-versiones">Evolucion de Versiones Odoo: Timeline Interactivo</h3>
|
|
<p>Visualiza la evolucion de Odoo von la version 14 hasta la 18, incluyendo los cambios clave en requisitos de hosting fuer cada version.</p>
|
|
<div class="chart-container" id="timeline-chart"></div>
|
|
</section>
|
|
|
|
<!-- What's New Section -->
|
|
<section id="novedades-hosting" class="content-section fade-in">
|
|
<h2>Novedades de Odoo 18 que Afectan al Hosting</h2>
|
|
|
|
<p>Odoo 18 introduce varias innovaciones tecnologicas que tienen un impacto directo en los requisitos de infraestructura. Entender estas novedades es esencial fuer dimensionar correctamente tu Server y garantizar un rendimiento optimo.</p>
|
|
|
|
<div class="new-features-grid">
|
|
<div class="feature-card">
|
|
<div class="icon">AI</div>
|
|
<h4>Motor de IA Integrado</h4>
|
|
<p>Odoo 18 incorpora un motor de inteligencia artificial nativo fuer automatizacion de Aufgaben, analisis predictivo y asistentes virtuales. Este motor requiere recursos adicionales de memoria y procesamiento.</p>
|
|
<span class="impact">+2GB RAM recomendado</span>
|
|
</div>
|
|
|
|
<div class="feature-card">
|
|
<div class="icon">Owl</div>
|
|
<h4>Owl 3.0 Framework</h4>
|
|
<p>El neu framework frontend Owl 3.0 mejora significativamente el renderizado de interfaces, pero requiere mas capacidad de procesamiento del lado del Server fuer la compilacion de componentes.</p>
|
|
<span class="impact">+20% CPU en picos</span>
|
|
</div>
|
|
|
|
<div class="feature-card">
|
|
<div class="icon">WS</div>
|
|
<h4>WebSocket Nativo</h4>
|
|
<p>Las comunicaciones en tiempo real ahora usan WebSockets nativos en lugar de long-polling. Esto requiere configuracion especial del proxy reverso (Nginx/Apache) fuer mantener conexiones persistentes.</p>
|
|
<span class="impact">Configuracion de proxy requerida</span>
|
|
</div>
|
|
|
|
<div class="feature-card">
|
|
<div class="icon">Py</div>
|
|
<h4>Python 3.11+ Obligatorio</h4>
|
|
<p>Odoo 18 requiere Python 3.11 como minimo, con Support optimizado fuer Python 3.12. Las neus caracteristicas del lenguaje permiten mejor rendimiento pero exigen Server actualizados.</p>
|
|
<span class="impact">Actualizacion de SO necesaria</span>
|
|
</div>
|
|
|
|
<div class="feature-card">
|
|
<div class="icon">DB</div>
|
|
<h4>PostgreSQL 15+ Requerido</h4>
|
|
<p>El Support fuer PostgreSQL 14 ha sido descontinuado. Odoo 18 aprovecha las mejoras de rendimiento de PostgreSQL 15 y 16, especialmente en consultas JSON y fuerlelizacion.</p>
|
|
<span class="impact">Migracion de DB necesaria</span>
|
|
</div>
|
|
|
|
<div class="feature-card">
|
|
<div class="icon">Cache</div>
|
|
<h4>Cache Redis Mejorado</h4>
|
|
<p>El System de cache ha sido optimizado con mejor integracion con Redis. Para instalaciones de mas de 20 Benutzer, Redis es ahora altamente recomendado en lugar de opcional.</p>
|
|
<span class="impact">Redis recomendado</span>
|
|
</div>
|
|
</div>
|
|
|
|
<h3>Impacto en la Arquitectura del Server</h3>
|
|
|
|
<p>Estas novedades tienen implicaciones directas en como debes configurar tu infraestructura de hosting. El motor de IA, por ejemplo, realiza inferencias en tiempo real que consumen memoria adicional, especialmente cuando multiples Benutzer acceden simultaneamente a funcionalidades como la generacion automatica de descripciones de productos o el analisis de tendencias de ventas.</p>
|
|
|
|
<p>El cambio a WebSockets nativos es particularmente importante fuer la configuracion del Server web. Si utilizas Nginx como proxy reverso, necesitaras aktualisieren tu configuracion fuer incluir los headers de upgrade de conexion y ajustar los timeouts fuer conexiones de larga duracion. Sin esta configuracion, funcionalidades como el chat en vivo, las notificaciones en tiempo real y la sincronizacion de inventario pueden fallar.</p>
|
|
|
|
<div class="highlight-box warning">
|
|
<h4>Atencion: Cambio Critico</h4>
|
|
<p>Si tu Server actual utiliza Python 3.10 o inferior, deberas aktualisieren antes de instalar Odoo 18. Ubuntu 20.04 LTS no soporta Python 3.11 de forma nativa. Considera migrar a Ubuntu 22.04 LTS o 24.04 LTS.</p>
|
|
</div>
|
|
|
|
<p>La integracion mejorada con Redis no es solo una recomendacion de rendimiento. En Odoo 18, el System de cache distribuido es fundamental fuer el correcto funcionamiento de las sesiones de Benutzer en configuraciones multi-worker. Sin Redis, experimentaras Probleme de consistencia de sesion que pueden resultar en Benutzer deslogueados inesperadamente o perdida de Daten en formularios.</p>
|
|
</section>
|
|
|
|
<!-- Server Requirements Section -->
|
|
<section id="requisitos-servidor" class="content-section fade-in">
|
|
<h2>Requisitos del Server fuer Odoo 18</h2>
|
|
|
|
<p>Los requisitos de hardware y software fuer Odoo 18 han aumentado respecto a versiones anteriores. A continuacion, presentamos las especificaciones detalladas fuer diferentes escenarios de uso, von instalaciones de Entwicklung hasta entornos enterprise de alta disponibilidad.</p>
|
|
|
|
<div class="specs-comparison">
|
|
<div class="specs-card minimum">
|
|
<h4>Minimo (Entwicklung/Pruebas)</h4>
|
|
<ul>
|
|
<li><span>RAM</span><span>4 GB</span></li>
|
|
<li><span>CPU</span><span>2 cores</span></li>
|
|
<li><span>Almacenamiento</span><span>50 GB SSD</span></li>
|
|
<li><span>Sistema Operativo</span><span>Ubuntu 22.04 LTS</span></li>
|
|
<li><span>Python</span><span>3.11</span></li>
|
|
<li><span>PostgreSQL</span><span>15</span></li>
|
|
<li><span>Workers</span><span>2</span></li>
|
|
<li><span>Usuarios</span><span>1-5</span></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="specs-card recommended">
|
|
<h4>Recomendado (PYME)</h4>
|
|
<ul>
|
|
<li><span>RAM</span><span>8 GB</span></li>
|
|
<li><span>CPU</span><span>4 cores</span></li>
|
|
<li><span>Almacenamiento</span><span>100 GB NVMe</span></li>
|
|
<li><span>Sistema Operativo</span><span>Ubuntu 24.04 LTS</span></li>
|
|
<li><span>Python</span><span>3.12</span></li>
|
|
<li><span>PostgreSQL</span><span>16</span></li>
|
|
<li><span>Workers</span><span>4-6</span></li>
|
|
<li><span>Usuarios</span><span>10-30</span></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<div class="specs-card enterprise">
|
|
<h4>Enterprise (Alto Rendimiento)</h4>
|
|
<ul>
|
|
<li><span>RAM</span><span>16-32 GB</span></li>
|
|
<li><span>CPU</span><span>8+ cores</span></li>
|
|
<li><span>Almacenamiento</span><span>250+ GB NVMe</span></li>
|
|
<li><span>Sistema Operativo</span><span>Ubuntu 24.04 LTS</span></li>
|
|
<li><span>Python</span><span>3.12</span></li>
|
|
<li><span>PostgreSQL</span><span>16</span></li>
|
|
<li><span>Workers</span><span>8-16</span></li>
|
|
<li><span>Usuarios</span><span>50+</span></li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<h3>Calculo de Workers Optimo</h3>
|
|
|
|
<p>La configuracion de workers en Odoo 18 sigue una formula optimizada. El numero de workers debe calcularse segun los nucleos de CPU disponibles:</p>
|
|
|
|
<div class="highlight-box">
|
|
<h4>Formula de Workers</h4>
|
|
<p><strong>Workers = (CPU cores * 2) + 1</strong></p>
|
|
<p>Ejemplo: Para un Server de 4 cores, configura 9 workers (4*2+1=9). Reserva siempre 1 worker fuer Aufgaben cron.</p>
|
|
</div>
|
|
|
|
<p>Ademas de los workers principales, Odoo 18 introduce el concepto de "workers de IA" que se dedican exclusivamente a procesar Aufgaben de inteligencia artificial. Para instalaciones que utilizan intensivamente las funcionalidades de IA, considera anadir 2-4 workers adicionales dedicados.</p>
|
|
|
|
<h3>Requisitos de Red</h3>
|
|
|
|
<p>Para un funcionamiento optimo de Odoo 18, especialmente con las neus funcionalidades de WebSocket, se recomienda:</p>
|
|
|
|
<ul>
|
|
<li><strong>Ancho de banda:</strong> Minimo 100 Mbps simetrico fuer instalaciones de mas de 20 Benutzer</li>
|
|
<li><strong>Latencia:</strong> Inferior a 50ms zwischen el Server y los Benutzer principales</li>
|
|
<li><strong>Puertos:</strong> 8069 (Odoo), 8072 (longpolling/WebSocket), 5432 (PostgreSQL), 6379 (Redis)</li>
|
|
<li><strong>SSL/TLS:</strong> Certificado valido obligatorio fuer WebSockets seguros (wss://)</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<!-- D3.js Requirements Comparison Chart -->
|
|
<section class="chart-section fade-in">
|
|
<h3 id="comparativa-requisitos">Comfuertiva de Requisitos por Version de Odoo</h3>
|
|
<p>Este grafico interactivo comfuer los requisitos de RAM, CPU y almacenamiento zwischen las ultimas versiones de Odoo. Observa como han evolucionado las necesidades de recursos.</p>
|
|
<div class="chart-container" id="requirements-chart"></div>
|
|
</section>
|
|
|
|
<!-- Compatible Providers Section -->
|
|
<section id="proveedores-compatibles" class="content-section fade-in">
|
|
<h2>Lieferanten de Hosting Compatibles con Odoo 18</h2>
|
|
|
|
<p>No todos los Lieferanten de hosting estan prefuerdos fuer Odoo 18. Hemos verificado la compatibilidad de los principales Lieferanten del mercado, asegurando que cumplan con los requisitos tecnicos necesarios: Python 3.11+, PostgreSQL 15+, y Support fuer WebSockets.</p>
|
|
|
|
<div class="provider-grid">
|
|
<!-- Odoo4projects -->
|
|
<div class="provider-card featured">
|
|
<span class="badge">Recomendado</span>
|
|
<span class="badge odoo18">Odoo 18 Ready</span>
|
|
<h4>Odoo4projects</h4>
|
|
<p class="price">29 EUR<span class="price-period">/mes</span></p>
|
|
<ul>
|
|
<li>Support nativo fuer Odoo 18</li>
|
|
<li>Python 3.12 preinstalado</li>
|
|
<li>PostgreSQL 16 optimizado</li>
|
|
<li>WebSocket configurado</li>
|
|
<li>Redis incluido sin coste extra</li>
|
|
<li>IA de Odoo 18 habilitada</li>
|
|
<li>Support 24/7 en espanol</li>
|
|
<li>Migracion gratuita von Odoo 17</li>
|
|
</ul>
|
|
<a href="https://odoo4projects.com" class="cta-btn" target="_blank" rel="noopener sponsored">Probar Gratis 14 Dias</a>
|
|
</div>
|
|
|
|
<!-- Odoo.sh -->
|
|
<div class="provider-card">
|
|
<span class="badge">Oficial</span>
|
|
<span class="badge odoo18">Odoo 18 Ready</span>
|
|
<h4>Odoo.sh</h4>
|
|
<p class="price">25 EUR<span class="price-period">/Benutzer/mes</span></p>
|
|
<ul>
|
|
<li>Plataforma oficial de Odoo</li>
|
|
<li>Actualizacion automatica a v18</li>
|
|
<li>Entornos staging incluidos</li>
|
|
<li>GitHub integration</li>
|
|
<li>Backups automaticos</li>
|
|
<li>Support directo de Odoo</li>
|
|
</ul>
|
|
<a href="https://odoo.sh" class="cta-btn" target="_blank" rel="noopener">Ver Planes</a>
|
|
</div>
|
|
|
|
<!-- Hetzner -->
|
|
<div class="provider-card">
|
|
<span class="badge odoo18">Odoo 18 Compatible</span>
|
|
<h4>Hetzner Cloud</h4>
|
|
<p class="price">39 EUR<span class="price-period">/mes (gestionado)</span></p>
|
|
<ul>
|
|
<li>Ubuntu 24.04 disponible</li>
|
|
<li>Python 3.12 instalable</li>
|
|
<li>PostgreSQL 16 en repositorios</li>
|
|
<li>Configuracion manual requerida</li>
|
|
<li>Excelente rendimiento/Preis</li>
|
|
<li>Centros de Daten en Alemania</li>
|
|
</ul>
|
|
<a href="#" class="cta-btn">Ver Detalles</a>
|
|
</div>
|
|
|
|
<!-- DigitalOcean -->
|
|
<div class="provider-card">
|
|
<span class="badge odoo18">Odoo 18 Compatible</span>
|
|
<h4>DigitalOcean</h4>
|
|
<p class="price">24 EUR<span class="price-period">/mes</span></p>
|
|
<ul>
|
|
<li>Droplets con Ubuntu 24.04</li>
|
|
<li>Managed PostgreSQL 16</li>
|
|
<li>App Platform fuer despliegue</li>
|
|
<li>Documentacion extensa</li>
|
|
<li>Comunidad activa</li>
|
|
</ul>
|
|
<a href="#" class="cta-btn">Ver Detalles</a>
|
|
</div>
|
|
|
|
<!-- Cloudpepper -->
|
|
<div class="provider-card">
|
|
<span class="badge odoo18">Odoo 18 Ready</span>
|
|
<h4>Cloudpepper</h4>
|
|
<p class="price">59 EUR<span class="price-period">/mes</span></p>
|
|
<ul>
|
|
<li>Especializado en Odoo</li>
|
|
<li>Support Odoo 18 verificado</li>
|
|
<li>Cumplimiento GDPR</li>
|
|
<li>Backups diarios</li>
|
|
<li>SSL incluido</li>
|
|
</ul>
|
|
<a href="#" class="cta-btn">Ver Detalles</a>
|
|
</div>
|
|
|
|
<!-- AWS -->
|
|
<div class="provider-card">
|
|
<span class="badge odoo18">Odoo 18 Compatible</span>
|
|
<h4>Amazon AWS</h4>
|
|
<p class="price">~60 EUR<span class="price-period">/mes</span></p>
|
|
<ul>
|
|
<li>EC2 con AMI personalizada</li>
|
|
<li>RDS PostgreSQL 16</li>
|
|
<li>ElastiCache fuer Redis</li>
|
|
<li>Alta disponibilidad</li>
|
|
<li>Escalado automatico</li>
|
|
</ul>
|
|
<a href="#" class="cta-btn">Ver Detalles</a>
|
|
</div>
|
|
</div>
|
|
|
|
<h3>Tabla Comfuertiva de Compatibilidad</h3>
|
|
|
|
<div style="overflow-x: auto;">
|
|
<table class="comparison-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Lieferant</th>
|
|
<th>Python 3.11+</th>
|
|
<th>PostgreSQL 15+</th>
|
|
<th>WebSocket</th>
|
|
<th>Redis</th>
|
|
<th>Odoo 18 IA</th>
|
|
<th>Preis Base</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td><strong>Odoo4projects</strong></td>
|
|
<td class="check">OK (3.12)</td>
|
|
<td class="check">OK (16)</td>
|
|
<td class="check">OK Nativo</td>
|
|
<td class="check">OK Incluido</td>
|
|
<td class="check">OK</td>
|
|
<td>29 EUR/mes</td>
|
|
</tr>
|
|
<tr>
|
|
<td><strong>Odoo.sh</strong></td>
|
|
<td class="check">OK (3.12)</td>
|
|
<td class="check">OK (16)</td>
|
|
<td class="check">OK Nativo</td>
|
|
<td class="check">OK Incluido</td>
|
|
<td class="check">OK</td>
|
|
<td>25 EUR/Benutzer</td>
|
|
</tr>
|
|
<tr>
|
|
<td><strong>Hetzner</strong></td>
|
|
<td class="check">OK Manual</td>
|
|
<td class="check">OK Manual</td>
|
|
<td class="check">OK Config</td>
|
|
<td class="check">OK Extra</td>
|
|
<td class="check">OK</td>
|
|
<td>12 EUR/mes</td>
|
|
</tr>
|
|
<tr>
|
|
<td><strong>DigitalOcean</strong></td>
|
|
<td class="check">OK Manual</td>
|
|
<td class="check">OK Managed</td>
|
|
<td class="check">OK Config</td>
|
|
<td class="check">OK Extra</td>
|
|
<td class="check">OK</td>
|
|
<td>24 EUR/mes</td>
|
|
</tr>
|
|
<tr>
|
|
<td><strong>Contabo</strong></td>
|
|
<td class="check">OK Manual</td>
|
|
<td class="check">OK Manual</td>
|
|
<td class="check">OK Config</td>
|
|
<td class="check">OK Extra</td>
|
|
<td class="check">OK</td>
|
|
<td>12 EUR/mes</td>
|
|
</tr>
|
|
<tr>
|
|
<td><strong>OVH Cloud</strong></td>
|
|
<td class="check">OK Manual</td>
|
|
<td class="check">OK Manual</td>
|
|
<td class="check">OK Config</td>
|
|
<td class="cross">Limitado</td>
|
|
<td class="check">OK</td>
|
|
<td>19 EUR/mes</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Migration Guide Section -->
|
|
<section id="migracion-odoo17" class="content-section fade-in">
|
|
<h2>Guia de Migracion: De Odoo 17 a Odoo 18</h2>
|
|
|
|
<p>La migracion de Odoo 17 a Odoo 18 requiere una planificacion cuidadosa debido a los cambios significativos en la infraestructura subyacente. Esta guia te lleva paso a paso por el Prozess, von la evaluacion inicial hasta la validacion post-migracion.</p>
|
|
|
|
<div class="highlight-box warning">
|
|
<h4>Importante: Antes de Comenzar</h4>
|
|
<p>Realiza siempre una copia de Sicherheit completa de tu Datenbank y filestore antes de iniciar cualquier Prozess de migracion. Prueba primero en un entorno de staging antes de aplicar cambios en produccion.</p>
|
|
</div>
|
|
|
|
<ol class="migration-steps">
|
|
<li>
|
|
<h4>Evaluacion del Entorno Actual</h4>
|
|
<p>Verifica la version actual de Python (debe ser 3.10+ fuer migrar), PostgreSQL (13+), y el System operativo. Documenta todos los modulos de terceros instalados y verifica su compatibilidad con Odoo 18.</p>
|
|
</li>
|
|
<li>
|
|
<h4>Actualizacion de Infraestructura</h4>
|
|
<p>Si tu Server no cumple los requisitos de Odoo 18, actualiza el System operativo a Ubuntu 22.04+ LTS, instala Python 3.11 o 3.12, y actualiza PostgreSQL a la version 15 o 16. Configura Redis si aun no lo tienes.</p>
|
|
</li>
|
|
<li>
|
|
<h4>Backup Completo</h4>
|
|
<p>Exporta la Datenbank con pg_dump incluyendo el schema y Daten. Copia el directorio filestore completo. Guarda el archivo de configuracion odoo.conf y cualquier modulo personalizado.</p>
|
|
</li>
|
|
<li>
|
|
<h4>Instalacion de Odoo 18</h4>
|
|
<p>Clona el repositorio de Odoo 18 o descarga el paquete oficial. Instala las dependencias de Python con pip usando el archivo requirements.txt actualizado. Configura el neu entorno virtual.</p>
|
|
</li>
|
|
<li>
|
|
<h4>Migracion de Base de Datos</h4>
|
|
<p>Ejecuta el script de migracion de Odoo con el fuermetro --update=all. Este Prozess puede tardar varias horas dependiendo del tamano de la Datenbank. Monitorea los logs fuer detectar Fehler.</p>
|
|
</li>
|
|
<li>
|
|
<h4>Actualizacion de Modulos de Terceros</h4>
|
|
<p>Actualiza cada modulo de terceros a su version compatible con Odoo 18. Si no existe version compatible, busca alternativas o contacta al desarrollador. Algunos modulos pueden requerir adaptaciones manuales.</p>
|
|
</li>
|
|
<li>
|
|
<h4>Configuracion de WebSocket</h4>
|
|
<p>Actualiza la configuracion de Nginx o Apache fuer soportar WebSockets nativos. Anade los headers de upgrade necesarios y ajusta los timeouts. Verifica que el longpolling funciona correctamente.</p>
|
|
</li>
|
|
<li>
|
|
<h4>Pruebas y Validacion</h4>
|
|
<p>Ejecuta pruebas exhaustivas de todas las funcionalidades criticas. Verifica reportes, flujos de traunter, integraciones y Berechtigungen de Benutzer. Comfuer Daten clave zwischen el System antiguo y el neu.</p>
|
|
</li>
|
|
</ol>
|
|
|
|
<h3>Comandos Utiles fuer la Migracion</h3>
|
|
|
|
<div class="highlight-box">
|
|
<h4>Backup de Base de Datos</h4>
|
|
<p><code>pg_dump -Fc -h localhost -U odoo odoo_db > backup_odoo17.dump</code></p>
|
|
</div>
|
|
|
|
<div class="highlight-box">
|
|
<h4>Restauracion en Neu Server</h4>
|
|
<p><code>pg_restore -h localhost -U odoo -d odoo_db backup_odoo17.dump</code></p>
|
|
</div>
|
|
|
|
<div class="highlight-box">
|
|
<h4>Actualizacion de Modulos</h4>
|
|
<p><code>./odoo-bin -d odoo_db --update=all --stop-after-init</code></p>
|
|
</div>
|
|
</section>
|
|
|
|
<!-- Optimization Section -->
|
|
<section id="optimizacion" class="content-section fade-in">
|
|
<h2>Optimizacion de Hosting fuer Odoo 18</h2>
|
|
|
|
<p>Una vez instalado Odoo 18, hay varias optimizaciones que puedes aplicar fuer maximizar el rendimiento de tu Server. Estas configuraciones pueden verbessern significativamente los tiempos de respuesta y la capacidad de Benutzer simultaneos.</p>
|
|
|
|
<h3>Configuracion Optima de PostgreSQL fuer Odoo 18</h3>
|
|
|
|
<p>PostgreSQL 16 ofrece mejoras de rendimiento que Odoo 18 aprovecha, pero requiere una configuracion adecuada:</p>
|
|
|
|
<table class="comparison-table">
|
|
<thead>
|
|
<tr>
|
|
<th>Parametro</th>
|
|
<th>8GB RAM</th>
|
|
<th>16GB RAM</th>
|
|
<th>32GB RAM</th>
|
|
</tr>
|
|
</thead>
|
|
<tbody>
|
|
<tr>
|
|
<td>shared_buffers</td>
|
|
<td>2GB</td>
|
|
<td>4GB</td>
|
|
<td>8GB</td>
|
|
</tr>
|
|
<tr>
|
|
<td>effective_cache_size</td>
|
|
<td>6GB</td>
|
|
<td>12GB</td>
|
|
<td>24GB</td>
|
|
</tr>
|
|
<tr>
|
|
<td>work_mem</td>
|
|
<td>64MB</td>
|
|
<td>128MB</td>
|
|
<td>256MB</td>
|
|
</tr>
|
|
<tr>
|
|
<td>maintenance_work_mem</td>
|
|
<td>512MB</td>
|
|
<td>1GB</td>
|
|
<td>2GB</td>
|
|
</tr>
|
|
<tr>
|
|
<td>max_connections</td>
|
|
<td>100</td>
|
|
<td>200</td>
|
|
<td>300</td>
|
|
</tr>
|
|
</tbody>
|
|
</table>
|
|
|
|
<h3>Configuracion de Nginx fuer WebSockets</h3>
|
|
|
|
<p>La configuracion correcta de Nginx es critica fuer el funcionamiento de las neus caracteristicas de tiempo real de Odoo 18:</p>
|
|
|
|
<div class="highlight-box">
|
|
<h4>Configuracion WebSocket en Nginx</h4>
|
|
<p>Asegurate de incluir estos headers en tu configuracion de proxy:</p>
|
|
<ul>
|
|
<li><code>proxy_http_version 1.1;</code></li>
|
|
<li><code>proxy_set_header Upgrade $http_upgrade;</code></li>
|
|
<li><code>proxy_set_header Connection "upgrade";</code></li>
|
|
<li><code>proxy_read_timeout 86400;</code></li>
|
|
</ul>
|
|
</div>
|
|
|
|
<h3>Configuracion de Redis fuer Cache</h3>
|
|
|
|
<p>Redis mejora significativamente el rendimiento de Odoo 18, especialmente fuer sesiones y cache de vistas:</p>
|
|
|
|
<ul>
|
|
<li><strong>maxmemory:</strong> 512MB fuer instalaciones pequenas, 1-2GB fuer produccion</li>
|
|
<li><strong>maxmemory-policy:</strong> allkeys-lru (elimina claves menos usadas)</li>
|
|
<li><strong>Persistencia:</strong> RDB snapshots cada 15 minutos fuer Daten de sesion</li>
|
|
</ul>
|
|
</section>
|
|
|
|
<!-- CTA Banner -->
|
|
<section class="cta-banner fade-in">
|
|
<h3>Listo fuer Odoo 18?</h3>
|
|
<p>Odoo4projects ofrece hosting optimizado fuer Odoo 18 von 29 EUR/mes. Python 3.12, PostgreSQL 16, Redis y WebSockets preconfigurados. Migracion gratuita von Odoo 17.</p>
|
|
<a href="https://odoo4projects.com" class="cta-btn" target="_blank" rel="noopener sponsored">Comenzar Prueba Gratuita</a>
|
|
</section>
|
|
|
|
<!-- FAQ Section -->
|
|
<section id="faq" class="faq-section fade-in">
|
|
<h2>Haeufig gestellte Fragen ueber Hosting Odoo 18</h2>
|
|
|
|
<div class="faq-item">
|
|
<div class="faq-question">Cuales son los requisitos minimos de Server fuer Odoo 18?</div>
|
|
<div class="faq-answer">Odoo 18 requiere como minimo: 4GB RAM (8GB recomendado), 2 CPU cores (4 recomendado), 50GB SSD, PostgreSQL 15+, Python 3.11+, y Ubuntu 22.04 LTS o superior. Para Enterprise, duplicar estos recursos.</div>
|
|
</div>
|
|
|
|
<div class="faq-item">
|
|
<div class="faq-question">Que novedades de Odoo 18 afectan al hosting?</div>
|
|
<div class="faq-answer">Odoo 18 introduce: neu motor de IA que requiere mas RAM, renderizado frontend mejorado con mayor uso de CPU, WebSocket nativo que necesita configuracion especial de proxy, y Support fuer Python 3.12 con mejor rendimiento.</div>
|
|
</div>
|
|
|
|
<div class="faq-item">
|
|
<div class="faq-question">Puedo migrar de Odoo 17 a Odoo 18 sin cambiar de hosting?</div>
|
|
<div class="faq-answer">Depende de tu hosting actual. Si cumple con los neus requisitos (Python 3.11+, PostgreSQL 15+, mas RAM), puedes migrar in-situ. De lo contrario, necesitaras aktualisieren el Server o migrar a un Lieferant compatible con Odoo 18.</div>
|
|
</div>
|
|
|
|
<div class="faq-item">
|
|
<div class="faq-question">Cual es el mejor hosting fuer Odoo 18 en 2026?</div>
|
|
<div class="faq-answer">Para hosting gestionado: Odoo4projects (29 euros/mes) u Odoo.sh (oficial). Para VPS: Hetzner o DigitalOcean con configuracion optimizada. La eleccion depende de si prefieres simplicidad (gestionado) o control total (VPS).</div>
|
|
</div>
|
|
|
|
<div class="faq-item">
|
|
<div class="faq-question">Odoo 18 es compatible con Docker?</div>
|
|
<div class="faq-answer">Si, Odoo 18 es totalmente compatible con Docker. Las imagenes oficiales estan disponibles en Docker Hub. Para produccion, recomendamos usar docker-compose con servicios sefuerdos fuer Odoo, PostgreSQL y Redis.</div>
|
|
</div>
|
|
|
|
<div class="faq-item">
|
|
<div class="faq-question">Cuanta RAM necesito fuer 50 Benutzer en Odoo 18?</div>
|
|
<div class="faq-answer">Para 50 Benutzer simultaneos en Odoo 18, recomendamos minimo 16GB RAM, 8 CPU cores, y configurar 8-12 workers. Si usas funcionalidades de IA intensivamente, considera 32GB RAM fuer un rendimiento optimo.</div>
|
|
</div>
|
|
|
|
<div class="faq-item">
|
|
<div class="faq-question">Que version de PostgreSQL es compatible con Odoo 18?</div>
|
|
<div class="faq-answer">Odoo 18 requiere PostgreSQL 15 como minimo, con Support oficial fuer PostgreSQL 16. Recomendamos PostgreSQL 16 por sus mejoras de rendimiento en consultas complejas y mejor manejo de JSON.</div>
|
|
</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="/de/">Start</a><a href="/de/odoo/">Odoo</a><a href="/de/odoo-ia/">Odoo KI</a><a href="/de/odoo-hosting/">Odoo Hosting</a><a href="/de/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="/de/">Start</a><a href="/de/odoo/">Odoo</a><a href="/de/odoo-ia/">Odoo KI</a><a href="/de/odoo-hosting/">Odoo Hosting</a><a href="/de/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');
|
|
});
|
|
});
|
|
|
|
// Tooltip
|
|
const tooltip = d3.select('body').append('div')
|
|
.attr('class', 'd3-tooltip')
|
|
.style('opacity', 0);
|
|
|
|
// Color scale
|
|
const colorScale = d3.scaleOrdinal()
|
|
.range(['#FF6B35', '#FF8A50', '#FFA726', '#FFB74D', '#4CAF50', '#2196F3', '#9C27B0']);
|
|
|
|
// Timeline Data
|
|
const timelineData = [
|
|
{
|
|
version: 'Odoo 14',
|
|
year: 2020,
|
|
python: '3.6+',
|
|
postgresql: '10+',
|
|
ram: '2GB',
|
|
features: 'Neu diseño web, mejoras en contabilidad'
|
|
},
|
|
{
|
|
version: 'Odoo 15',
|
|
year: 2021,
|
|
python: '3.7+',
|
|
postgresql: '11+',
|
|
ram: '2GB',
|
|
features: 'Knowledge app, mejoras en POS'
|
|
},
|
|
{
|
|
version: 'Odoo 16',
|
|
year: 2022,
|
|
python: '3.8+',
|
|
postgresql: '12+',
|
|
ram: '3GB',
|
|
features: 'Owl 2.0, mejoras de rendimiento'
|
|
},
|
|
{
|
|
version: 'Odoo 17',
|
|
year: 2023,
|
|
python: '3.10+',
|
|
postgresql: '14+',
|
|
ram: '4GB',
|
|
features: 'Neu UI, integraciones mejoradas'
|
|
},
|
|
{
|
|
version: 'Odoo 18',
|
|
year: 2025,
|
|
python: '3.11+',
|
|
postgresql: '15+',
|
|
ram: '4-8GB',
|
|
features: 'Motor IA, Owl 3.0, WebSockets nativos'
|
|
}
|
|
];
|
|
|
|
// Requirements Comparison Data
|
|
const requirementsData = {
|
|
versions: ['Odoo 15', 'Odoo 16', 'Odoo 17', 'Odoo 18'],
|
|
metrics: [
|
|
{ name: 'RAM Minima (GB)', values: [2, 3, 4, 4] },
|
|
{ name: 'RAM Recomendada (GB)', values: [4, 4, 6, 8] },
|
|
{ name: 'CPU Cores Min', values: [1, 2, 2, 2] },
|
|
{ name: 'CPU Cores Rec', values: [2, 2, 4, 4] },
|
|
{ name: 'Storage Min (GB)', values: [20, 30, 40, 50] }
|
|
]
|
|
};
|
|
|
|
// Render Timeline Chart
|
|
function renderTimelineChart() {
|
|
const container = d3.select('#timeline-chart');
|
|
if (container.empty()) return;
|
|
|
|
const width = container.node().getBoundingClientRect().width;
|
|
const height = 400;
|
|
const margin = { top: 40, right: 40, bottom: 60, left: 60 };
|
|
|
|
container.html('');
|
|
|
|
const svg = container.append('svg')
|
|
.attr('width', width)
|
|
.attr('height', height);
|
|
|
|
const xScale = d3.scaleLinear()
|
|
.domain([2019, 2026])
|
|
.range([margin.left, width - margin.right]);
|
|
|
|
const yScale = d3.scaleLinear()
|
|
.domain([0, 10])
|
|
.range([height - margin.bottom, margin.top]);
|
|
|
|
// Timeline line
|
|
svg.append('line')
|
|
.attr('x1', margin.left)
|
|
.attr('y1', height / 2)
|
|
.attr('x2', width - margin.right)
|
|
.attr('y2', height / 2)
|
|
.attr('stroke', '#444')
|
|
.attr('stroke-width', 3);
|
|
|
|
// Version nodes
|
|
const nodes = svg.selectAll('.version-node')
|
|
.data(timelineData)
|
|
.join('g')
|
|
.attr('class', 'version-node')
|
|
.attr('transform', d => `translate(${xScale(d.year)}, ${height / 2})`)
|
|
.style('cursor', 'pointer');
|
|
|
|
// Circles
|
|
nodes.append('circle')
|
|
.attr('r', 0)
|
|
.attr('fill', (d, i) => i === timelineData.length - 1 ? '#4CAF50' : '#FF6B35')
|
|
.attr('stroke', '#fff')
|
|
.attr('stroke-width', 3)
|
|
.transition()
|
|
.duration(800)
|
|
.delay((d, i) => i * 200)
|
|
.ease(d3.easeElastic)
|
|
.attr('r', (d, i) => i === timelineData.length - 1 ? 25 : 18);
|
|
|
|
// Version labels above
|
|
nodes.append('text')
|
|
.attr('y', -35)
|
|
.attr('text-anchor', 'middle')
|
|
.attr('fill', '#fff')
|
|
.attr('font-size', '14px')
|
|
.attr('font-weight', '600')
|
|
.attr('opacity', 0)
|
|
.text(d => d.version)
|
|
.transition()
|
|
.duration(500)
|
|
.delay((d, i) => i * 200 + 400)
|
|
.attr('opacity', 1);
|
|
|
|
// Year labels below
|
|
nodes.append('text')
|
|
.attr('y', 45)
|
|
.attr('text-anchor', 'middle')
|
|
.attr('fill', '#888')
|
|
.attr('font-size', '12px')
|
|
.attr('opacity', 0)
|
|
.text(d => d.year)
|
|
.transition()
|
|
.duration(500)
|
|
.delay((d, i) => i * 200 + 400)
|
|
.attr('opacity', 1);
|
|
|
|
// Hover effects
|
|
nodes.on('mouseover', function(event, d) {
|
|
d3.select(this).select('circle')
|
|
.transition()
|
|
.duration(200)
|
|
.attr('r', d.version === 'Odoo 18' ? 30 : 22);
|
|
|
|
tooltip.transition().duration(200).style('opacity', 1);
|
|
tooltip.html(`
|
|
<strong>${d.version}</strong><br>
|
|
Lanzamiento: ${d.year}<br>
|
|
Python: ${d.python}<br>
|
|
PostgreSQL: ${d.postgresql}<br>
|
|
RAM: ${d.ram}<br>
|
|
<em>${d.features}</em>
|
|
`)
|
|
.style('left', (event.pageX + 15) + 'px')
|
|
.style('top', (event.pageY - 28) + 'px');
|
|
})
|
|
.on('mouseout', function(event, d) {
|
|
d3.select(this).select('circle')
|
|
.transition()
|
|
.duration(200)
|
|
.attr('r', d.version === 'Odoo 18' ? 25 : 18);
|
|
tooltip.transition().duration(200).style('opacity', 0);
|
|
});
|
|
|
|
// Connecting lines between versions
|
|
for (let i = 0; i < timelineData.length - 1; i++) {
|
|
svg.append('line')
|
|
.attr('x1', xScale(timelineData[i].year) + 20)
|
|
.attr('y1', height / 2)
|
|
.attr('x2', xScale(timelineData[i].year) + 20)
|
|
.attr('y2', height / 2)
|
|
.attr('stroke', '#FF6B35')
|
|
.attr('stroke-width', 2)
|
|
.attr('stroke-dasharray', '4,4')
|
|
.transition()
|
|
.duration(600)
|
|
.delay(i * 200 + 600)
|
|
.attr('x2', xScale(timelineData[i + 1].year) - 20);
|
|
}
|
|
|
|
// "Current" badge for Odoo 18
|
|
const currentNode = svg.select('.version-node:last-child');
|
|
currentNode.append('text')
|
|
.attr('y', -60)
|
|
.attr('text-anchor', 'middle')
|
|
.attr('fill', '#4CAF50')
|
|
.attr('font-size', '11px')
|
|
.attr('font-weight', '600')
|
|
.attr('opacity', 0)
|
|
.text('ACTUAL')
|
|
.transition()
|
|
.duration(500)
|
|
.delay(1200)
|
|
.attr('opacity', 1);
|
|
}
|
|
|
|
// Render Requirements Chart
|
|
function renderRequirementsChart() {
|
|
const container = d3.select('#requirements-chart');
|
|
if (container.empty()) return;
|
|
|
|
const width = container.node().getBoundingClientRect().width;
|
|
const height = 400;
|
|
const margin = { top: 40, right: 120, bottom: 60, left: 60 };
|
|
|
|
container.html('');
|
|
|
|
const svg = container.append('svg')
|
|
.attr('width', width)
|
|
.attr('height', height);
|
|
|
|
const xScale = d3.scaleBand()
|
|
.domain(requirementsData.versions)
|
|
.range([margin.left, width - margin.right])
|
|
.padding(0.2);
|
|
|
|
const maxValue = d3.max(requirementsData.metrics, m => d3.max(m.values));
|
|
const yScale = d3.scaleLinear()
|
|
.domain([0, maxValue * 1.1])
|
|
.range([height - margin.bottom, margin.top]);
|
|
|
|
// Grid lines
|
|
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');
|
|
|
|
// X axis
|
|
svg.append('g')
|
|
.attr('transform', `translate(0,${height - margin.bottom})`)
|
|
.call(d3.axisBottom(xScale))
|
|
.attr('color', '#888')
|
|
.selectAll('text')
|
|
.attr('font-size', '12px');
|
|
|
|
// Y axis
|
|
svg.append('g')
|
|
.attr('transform', `translate(${margin.left},0)`)
|
|
.call(d3.axisLeft(yScale))
|
|
.attr('color', '#888');
|
|
|
|
// Y axis label
|
|
svg.append('text')
|
|
.attr('transform', 'rotate(-90)')
|
|
.attr('x', -height / 2)
|
|
.attr('y', 15)
|
|
.attr('text-anchor', 'middle')
|
|
.attr('fill', '#888')
|
|
.attr('font-size', '12px')
|
|
.text('Valor');
|
|
|
|
// Lines for each metric
|
|
const lineGenerator = d3.line()
|
|
.x((d, i) => xScale(requirementsData.versions[i]) + xScale.bandwidth() / 2)
|
|
.y(d => yScale(d))
|
|
.curve(d3.curveMonotoneX);
|
|
|
|
requirementsData.metrics.forEach((metric, idx) => {
|
|
// Line
|
|
const path = svg.append('path')
|
|
.datum(metric.values)
|
|
.attr('fill', 'none')
|
|
.attr('stroke', colorScale(idx))
|
|
.attr('stroke-width', 3)
|
|
.attr('d', lineGenerator);
|
|
|
|
const totalLength = path.node().getTotalLength();
|
|
path.attr('stroke-dasharray', totalLength)
|
|
.attr('stroke-dashoffset', totalLength)
|
|
.transition()
|
|
.duration(1500)
|
|
.delay(idx * 200)
|
|
.attr('stroke-dashoffset', 0);
|
|
|
|
// Data points
|
|
svg.selectAll(`.dot-${idx}`)
|
|
.data(metric.values)
|
|
.join('circle')
|
|
.attr('class', `dot-${idx}`)
|
|
.attr('cx', (d, i) => xScale(requirementsData.versions[i]) + xScale.bandwidth() / 2)
|
|
.attr('cy', d => yScale(d))
|
|
.attr('r', 0)
|
|
.attr('fill', colorScale(idx))
|
|
.attr('stroke', '#fff')
|
|
.attr('stroke-width', 2)
|
|
.on('mouseover', function(event, d) {
|
|
d3.select(this).attr('r', 8);
|
|
tooltip.transition().duration(200).style('opacity', 1);
|
|
tooltip.html(`<strong>${metric.name}</strong><br>Valor: ${d}`)
|
|
.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 * 200 + 1000)
|
|
.attr('r', 5);
|
|
});
|
|
|
|
// Legend
|
|
const legend = svg.append('g')
|
|
.attr('transform', `translate(${width - margin.right + 10}, ${margin.top})`);
|
|
|
|
requirementsData.metrics.forEach((metric, idx) => {
|
|
const g = legend.append('g')
|
|
.attr('transform', `translate(0, ${idx * 22})`);
|
|
|
|
g.append('line')
|
|
.attr('x1', 0)
|
|
.attr('y1', 6)
|
|
.attr('x2', 20)
|
|
.attr('y2', 6)
|
|
.attr('stroke', colorScale(idx))
|
|
.attr('stroke-width', 3);
|
|
|
|
g.append('text')
|
|
.attr('x', 25)
|
|
.attr('y', 10)
|
|
.attr('fill', '#b0b0b0')
|
|
.attr('font-size', '10px')
|
|
.text(metric.name);
|
|
});
|
|
}
|
|
|
|
// Initialize charts when visible
|
|
const chartObserver = new IntersectionObserver((entries) => {
|
|
entries.forEach(entry => {
|
|
if (entry.isIntersecting) {
|
|
const id = entry.target.id;
|
|
setTimeout(() => {
|
|
if (id === 'timeline-chart') renderTimelineChart();
|
|
if (id === 'requirements-chart') renderRequirementsChart();
|
|
}, 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(() => {
|
|
renderTimelineChart();
|
|
renderRequirementsChart();
|
|
}, 300);
|
|
});
|
|
</script>
|
|
</body>
|
|
</html>
|