[{"data":1,"prerenderedAt":187},["ShallowReactive",2],{"seo-verification":3,"blog-autoalojar-neo4j-vps-base-de-datos-grafos-ma-es":6,"promo-bar-likely":186},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-autoalojar-neo4j-vps-base-de-datos-grafos-ma-es",{"id":9,"slug":10,"slugs":11,"title":15,"excerpt":16,"readTime":17,"views":18,"isPinned":19,"noindex":19,"publishedAt":20,"updatedAt":21,"category":22,"categories":27,"featuredImage":29,"bgImage":30,"posterImage":31,"relatedSolution":32,"intro":35,"sections":36,"ctaTitle":120,"ctaBody":121,"ctaButton":122,"ctaUrl":123,"relatedPosts":124},574,"autoalojar-neo4j-vps-base-de-datos-grafos",{"fr":12,"en":13,"ar":14,"es":10},"self-host-neo4j-vps","self-host-neo4j-vps-graph-database","استضافة-neo4j-على-vps-قاعدة-بيانات-رسومية","Neo4j en un VPS: base de datos de grafos, Cypher y GraphRAG","Instala Neo4j en un VPS con Docker Compose: consultas Cypher, Neo4j Browser y la API HTTP detrás de nginx en HTTPS, drivers en Bolt e índices vectoriales.",7,0,false,"2026-11-10T00:00:00+00:00","2026-11-10T14:39:01+00:00",{"id":17,"name":23,"slug":24,"color":25,"icon":26},"Autoalojamiento","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[28],{"id":17,"name":23,"slug":24,"color":25,"icon":26},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fself-host-neo4j-vps-poster.svg",{"categorySlug":33,"appSlug":34},"bases-de-datos","neo4j","Algunos datos no encajan bien en tablas: quién conoce a quién, qué servicio depende de cuál, qué documento cita qué contrato. En SQL, cada nivel de relación cuesta una unión. Neo4j, la base de datos de grafos más extendida, almacena directamente los nodos y sus relaciones y los consulta en Cypher. Esta guía instala Neo4j Community Edition en un VPS con Docker Compose, publica Neo4j Browser y la conexión Bolt en HTTPS con un solo nombre, y después conecta una aplicación y sienta las bases de un GraphRAG.",[37,41,51,82,85,98,102,105,108,111,114,117],{"type":38,"title":39,"body":40},"h2","Qué hace Neo4j","Neo4j registra **nodos** — un cliente, un producto, un servidor — con etiquetas (`:Person`, `:Product`) y propiedades, conectados por **relaciones** dirigidas y con nombre (`:KNOWS`, `:BOUGHT`, `:DEPENDS_ON`). Una relación se almacena como un enlace directo entre dos nodos: seguirla no requiere buscar en un índice, por grande que sea la base.\n\nSe consulta en **Cypher**, un lenguaje que dibuja el patrón buscado: `(a:Person)-[:KNOWS]->(b:Person)`. Los caminos de longitud variable (`-[:KNOWS*1..3]->`), los caminos más cortos y las agregaciones caben en una línea, donde SQL apila uniones o consultas recursivas.",{"type":42,"title":43,"items":44},"ul","Lo que aporta Neo4j",[45,46,47,48,49,50],"**Cypher** — `MATCH`, `MERGE`, caminos de longitud variable y caminos más cortos, en un lenguaje legible.","**Neo4j Browser** — una interfaz web que ejecuta las consultas y dibuja el grafo obtenido.","**API HTTP** — una consulta Cypher por llamada `POST`, respuesta en JSON, desde cualquier lenguaje.","**Drivers oficiales en Bolt** — Python, JavaScript, Java, Go y .NET.","**Índices y restricciones** — unicidad, búsqueda de texto completo e índices vectoriales para embeddings.","**Transacciones ACID** — un grafo coherente, incluso cuando varias aplicaciones escriben en él.",{"type":52,"title":53,"headers":54,"rows":58},"comparison","Neo4j frente a otras opciones",[5,55,56,57],"Neo4j","PostgreSQL","Qdrant",[59,64,69,74,79],[60,61,62,63],"Modelo","Nodos y relaciones","Tablas y uniones","Vectores y metadatos",[65,66,67,68],"Consultas","Cypher","SQL","Búsqueda por similitud",[70,71,72,73],"Punto fuerte","Relaciones en varios niveles","Transacciones y datos en tablas","Búsqueda semántica",[75,76,77,78],"Papel en un RAG","Hechos conectados y con fuente","Datos de negocio","Pasajes cercanos a la pregunta",[80,81,81,81],"Coste","Precio del VPS",{"type":38,"title":83,"body":84},"Requisitos previos","Un VPS Ubuntu 24.04 con 2 GB de RAM y 20 GB de disco, Docker y el plugin Compose instalados, nginx y Certbot en el host, y un subdominio que apunte al VPS, por ejemplo `neo4j.example.com`. Neo4j es más rápido cuando el grafo cabe en su caché de páginas: prevé más memoria para un grafo de decenas de millones de nodos.",{"type":86,"title":87,"steps":88},"steps","Instalar Neo4j con Docker Compose",[89,92,95],{"title":90,"body":91},"Preparar el directorio y la contraseña","El archivo `.env` contiene la contraseña del usuario `neo4j`. La carpeta `backups` recibirá las copias de seguridad: pertenece al usuario 7474, el del contenedor.\n```bash\nmkdir -p \u002Fopt\u002Fneo4j\u002Fbackups && cd \u002Fopt\u002Fneo4j\necho \"NEO4J_PASSWORD=$(openssl rand -hex 16)\" > .env\nchmod 600 .env\nchown 7474:7474 backups\n```",{"title":93,"body":94},"Escribir el archivo docker-compose.yml","Los dos puertos se publican solo en la interfaz local: 7474 para Neo4j Browser y la API HTTP, 7687 para Bolt. `NEO4J_AUTH` crea el usuario `neo4j` con tu contraseña en el primer arranque, y la dirección Bolt anunciada es la que nginx publicará en HTTPS.\n```yaml\nservices:\n  neo4j:\n    image: neo4j:2026.10.2-community\n    restart: unless-stopped\n    ports:\n      - \"127.0.0.1:7474:7474\"\n      - \"127.0.0.1:7687:7687\"\n    environment:\n      NEO4J_AUTH: neo4j\u002F${NEO4J_PASSWORD}\n      NEO4J_server_bolt_advertised__address: neo4j.example.com:443\n      NEO4J_server_memory_heap_initial__size: 512m\n      NEO4J_server_memory_heap_max__size: 512m\n      NEO4J_server_memory_pagecache_size: 512m\n    volumes:\n      - neo4j-data:\u002Fdata\n      - neo4j-logs:\u002Flogs\nvolumes:\n  neo4j-data: {}\n  neo4j-logs: {}\n```",{"title":96,"body":97},"Arrancar Neo4j","El primer arranque tarda unos treinta segundos; después la raíz responde con un pequeño documento JSON que da la versión y las direcciones de conexión.\n```bash\ndocker compose up -d\ndocker compose ps\ncurl -s http:\u002F\u002F127.0.0.1:7474\u002F\n```",{"type":99,"title":100,"body":101},"tip","No publiques nunca 7474 ni 7687 en Internet","Deja los dos puertos en `127.0.0.1`: una base de datos accesible directamente desde Internet se escanea en pocas horas. nginx lleva el HTTPS en el 443, y la conexión Bolt del navegador pasa por el mismo nombre en WebSocket. Conserva también `NEO4J_AUTH`: sin él, el usuario `neo4j` arranca con la contraseña de fábrica `neo4j`, que todo el mundo conoce.",{"type":38,"title":103,"body":104},"Poner Neo4j detrás de nginx en HTTPS","Neo4j Browser necesita dos cosas: la interfaz HTTP y una conexión Bolt, que el navegador abre en WebSocket. nginx dirige ambas con el mismo nombre: las peticiones normales al 7474, las de WebSocket al 7687.\n\n```nginx\nmap $http_upgrade $neo4j_backend {\n    default   127.0.0.1:7474;\n    websocket 127.0.0.1:7687;\n}\nserver {\n    listen 80;\n    server_name neo4j.example.com;\n    location \u002F {\n        proxy_pass http:\u002F\u002F$neo4j_backend;\n        proxy_http_version 1.1;\n        proxy_set_header Upgrade $http_upgrade;\n        proxy_set_header Connection $http_connection;\n        proxy_set_header Host $host;\n        proxy_set_header X-Forwarded-Proto $scheme;\n        proxy_read_timeout 3600s;\n    }\n}\n```\n\n```bash\ncertbot --nginx -d neo4j.example.com\n```\n\nAbre después `https:\u002F\u002Fneo4j.example.com`. En Neo4j Browser, escribe `neo4j+s:\u002F\u002Fneo4j.example.com:443` como Connect URL, el usuario `neo4j` y tu contraseña.",{"type":38,"title":106,"body":107},"Primeras consultas Cypher","En Neo4j Browser, crea una restricción de unicidad, algunos nodos y sus relaciones, y luego sigue un camino de dos niveles como máximo. `MERGE` solo crea un nodo o una relación si todavía no existe: la consulta se puede repetir sin duplicados.\n\n```cypher\nCREATE CONSTRAINT person_name IF NOT EXISTS FOR (p:Person) REQUIRE p.name IS UNIQUE;\nMERGE (sara:Person {name: 'Sara'})\nMERGE (yassine:Person {name: 'Yassine'})\nMERGE (casa:City {name: 'Casablanca'})\nMERGE (sara)-[:KNOWS]->(yassine)\nMERGE (yassine)-[:LIVES_IN]->(casa);\nMATCH (p:Person {name: 'Sara'})-[:KNOWS*1..2]->(f)-[:LIVES_IN]->(c:City)\nRETURN f.name, c.name;\n```\n\nEl Browser dibuja el resultado; el comando `:guide` abre sus tutoriales integrados, y `:sysinfo` muestra el tamaño de la base y el uso de la caché.",{"type":38,"title":109,"body":110},"Conectar una aplicación","Desde cualquier lenguaje, la **API HTTP** recibe una consulta Cypher por `POST` y responde en JSON, con autenticación HTTP básica. Una aplicación instalada en el mismo VPS usa más bien un **driver oficial** en Bolt, en `bolt:\u002F\u002F127.0.0.1:7687`. Desde tu equipo de desarrollo, un túnel SSH hace accesible el mismo puerto sin abrirlo a Internet.\n\n```bash\ncurl -s -u neo4j:$NEO4J_PASSWORD \\\n  -H 'Content-Type: application\u002Fjson' \\\n  -d '{\"statement\": \"MATCH (p:Person) RETURN p.name LIMIT 5\"}' \\\n  https:\u002F\u002Fneo4j.example.com\u002Fdb\u002Fneo4j\u002Fquery\u002Fv2\n```\n\n```python\nfrom neo4j import GraphDatabase\n\ndriver = GraphDatabase.driver(\"bolt:\u002F\u002F127.0.0.1:7687\", auth=(\"neo4j\", \"\u003Cmot-de-passe>\"))\nrecords, _, _ = driver.execute_query(\"MATCH (p:Person) RETURN p.name AS name\")\nprint([r[\"name\"] for r in records])\n```\n\n```bash\nssh -L 7687:127.0.0.1:7687 root@203.0.113.10\n```\n\nUsa el esquema `bolt:\u002F\u002F` y no `neo4j:\u002F\u002F` para una conexión local: el segundo pide la tabla de enrutamiento, que anuncia la dirección pública en el puerto 443.",{"type":38,"title":112,"body":113},"GraphRAG: dar hechos conectados a un asistente de IA","Un RAG clásico recupera pasajes cercanos a la pregunta. Un **GraphRAG** añade las relaciones: las entidades extraídas de los documentos (personas, contratos, productos) se convierten en nodos, conectados entre sí y con los pasajes que las citan. Neo4j guarda ambos en la misma base, gracias a sus índices vectoriales.\n\n```cypher\nCREATE VECTOR INDEX chunk_embedding IF NOT EXISTS\nFOR (c:Chunk) ON c.embedding\nOPTIONS {indexConfig: {`vector.dimensions`: 768, `vector.similarity_function`: 'cosine'}};\n```\n\nLa búsqueda vectorial encuentra los pasajes pertinentes y luego una consulta Cypher sigue sus relaciones para reunir el contexto: el asistente responde con hechos conectados y la fuente de cada uno. Los embeddings pueden venir de un modelo local servido por Ollama en el mismo VPS.",{"type":38,"title":115,"body":116},"Copias de seguridad y actualizaciones","En Community Edition, la copia se hace con la base detenida, con `neo4j-admin database dump`: unos segundos de interrupción para un grafo de tamaño medio. Prográmala por la noche.\n\n```bash\ncd \u002Fopt\u002Fneo4j\ndocker compose stop neo4j\ndocker compose run --rm -v \u002Fopt\u002Fneo4j\u002Fbackups:\u002Fbackups neo4j \\\n  neo4j-admin database dump neo4j --to-path=\u002Fbackups --overwrite-destination=true\ndocker compose start neo4j\n```\n\nCopia después `backups\u002Fneo4j.dump` fuera del VPS. Para actualizar, cambia la versión de la imagen en `docker-compose.yml` y luego `docker compose pull && docker compose up -d`, justo después de una copia; lee las notas de la versión antes de cambiar de versión mayor.",{"type":38,"title":118,"body":119},"Instalación en un clic en ServOrbit","Desde el Marketplace de tu área de cliente, Neo4j se instala en un VPS de ServOrbit sin escribir una línea: Neo4j Community Edition se despliega detrás de un pequeño proxy que sirve Neo4j Browser, la API HTTP y la conexión Bolt en un solo puerto, la contraseña del usuario `neo4j` se genera y aparece en tu área de cliente, y todo se publica en HTTPS en tu dominio o en el subdominio gratuito del VPS. El puerto Bolt sigue disponible en local, en `bolt:\u002F\u002F127.0.0.1:7687`, para tus aplicaciones.","Tu base de datos de grafos en un VPS","Un VPS de ServOrbit con Ubuntu 24.04 y 2 GB de RAM basta para arrancar Neo4j. Instalación en un clic desde el Marketplace, HTTPS en tu dominio o en el subdominio gratuito del VPS, contraseña generada para ti.","Instalar Neo4j","\u002Fapplications\u002Fbases-de-datos\u002Fneo4j",[125,149,168],{"id":126,"slug":127,"slugs":128,"title":132,"excerpt":133,"readTime":134,"views":135,"isPinned":19,"noindex":19,"publishedAt":136,"updatedAt":137,"category":138,"categories":144,"featuredImage":29,"bgImage":30,"posterImage":146,"relatedSolution":147},65,"alojar-qdrant-en-un-vps",{"fr":129,"en":130,"ar":131,"es":127},"heberger-qdrant-vps","hosting-qdrant-on-a-vps","استضافة-qdrant-على-خادم-vps","Alojar Qdrant en un VPS","Aloje Qdrant en su VPS: Docker Compose, clave API, TLS, ajuste HNSW, cuantificación, cliente Python v1, snapshots y monitoreo con Prometheus.",8,1,"2026-04-16T00:00:00+00:00","2026-10-20T23:18:05+00:00",{"id":139,"name":140,"slug":141,"color":142,"icon":143},6,"Bases de datos","bases-de-donnees","bg-teal-500\u002F10 text-teal-400","database",[145],{"id":139,"name":140,"slug":141,"color":142,"icon":143},"\u002Fblog\u002Fcovers\u002Fheberger-qdrant-vps-poster.svg",{"categorySlug":33,"appSlug":148},"qdrant",{"id":150,"slug":151,"slugs":152,"title":156,"excerpt":157,"readTime":158,"views":18,"isPinned":19,"noindex":19,"publishedAt":159,"updatedAt":160,"category":161,"categories":162,"featuredImage":29,"bgImage":30,"posterImage":164,"relatedSolution":165},66,"alojar-weaviate-en-un-vps",{"fr":153,"en":154,"ar":155,"es":151},"heberger-weaviate-vps","hosting-weaviate-on-a-vps","استضافة-weaviate-على-خادم-vps","Alojar Weaviate en un VPS","Weaviate en un VPS: Docker Compose comentado, clave API, elección del vectorizer, HNSW y cuantización, copias, cliente Python v4 y solución de errores.",12,"2026-04-15T00:00:00+00:00","2026-11-04T16:30:25+00:00",{"id":139,"name":140,"slug":141,"color":142,"icon":143},[163],{"id":139,"name":140,"slug":141,"color":142,"icon":143},"\u002Fblog\u002Fcovers\u002Fheberger-weaviate-vps-poster.svg",{"categorySlug":166,"appSlug":167},"inteligencia-artificial","weaviate",{"id":169,"slug":170,"slugs":171,"title":175,"excerpt":176,"readTime":177,"views":135,"isPinned":19,"noindex":19,"publishedAt":178,"updatedAt":179,"category":180,"categories":181,"featuredImage":29,"bgImage":30,"posterImage":183,"relatedSolution":184},56,"alojar-postgresql-en-un-vps",{"fr":172,"en":173,"ar":174,"es":170},"heberger-postgresql-vps","postgresql-on-a-vps-a-reliable-and-controlled-database","postgresql-على-خادم-vps-قاعدة-بيانات-موثوقة-ومتحكم-بها","PostgreSQL en VPS: base de datos fiable y controlada","Aloje PostgreSQL en VPS: configuración prod, copias pgBackRest, HA streaming, comparativa RDS\u002FSupabase\u002FNeon y resolución de fallos OOM.",9,"2026-04-25T00:00:00+00:00","2026-10-21T15:21:37+00:00",{"id":139,"name":140,"slug":141,"color":142,"icon":143},[182],{"id":139,"name":140,"slug":141,"color":142,"icon":143},"\u002Fblog\u002Fcovers\u002Fheberger-postgresql-vps-poster.svg",{"categorySlug":33,"appSlug":185},"postgresql-stack",true,1794322234223]