[{"data":1,"prerenderedAt":251},["ShallowReactive",2],{"seo-verification":3,"blog-alojar-nextcloud-en-su-propio-vps-ma-es":6,"promo-bar-likely":250},{"google":4,"bing":5},"EycwPY2XMyTkVzas3n1ygeNJFGAH513qrMjfDljzsMQ","",{"key":7,"data":8},"blog-alojar-nextcloud-en-su-propio-vps-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":28,"featuredImage":30,"bgImage":31,"posterImage":32,"relatedSolution":33,"intro":35,"sections":36,"ctaTitle":183,"ctaBody":184,"ctaButton":185,"ctaUrl":186,"relatedPosts":187},71,"alojar-nextcloud-en-su-propio-vps",{"fr":12,"en":13,"ar":14,"es":10},"heberger-nextcloud","hosting-nextcloud-on-your-own-vps","استضافة-nextcloud-على-خادمك-الـvps-الخاص","Alojar Nextcloud en VPS: guía NC 35, PHP 8.3 y MariaDB 11","Aloje Nextcloud en un VPS: Docker Compose, Redis, copia MariaDB, subidas de más de 40 GB tras Cloudflare y una alternativa a Office 2021.",20,1,false,"2026-04-10T00:00:00+00:00","2026-11-08T16:32:50+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},7,"Autoalojamiento","self-hosting","bg-indigo-500\u002F10 text-indigo-400","cloud",[29],{"id":23,"name":24,"slug":25,"color":26,"icon":27},null,"\u002Fblog\u002Fcovers\u002Fbg.svg","\u002Fblog\u002Fcovers\u002Fheberger-nextcloud-poster.svg",{"categorySlug":25,"appSlug":34},"nextcloud","Nextcloud es una de las aplicaciones más desplegadas en autoalojamiento — y una de las peor configuradas. Entre la instancia que funciona sin Redis, sin TLS forzado, la actualización de mayo de 2026 que corrige dos vulnerabilidades críticas de elusión del 2FA y las regresiones propias de NC 34.0.0, cada versión trae sus propios peligros. Nextcloud 35 (Hub 26 Summer, publicado el 15 de septiembre de 2026) añade dos restricciones importantes: PHP 8.3 es ahora el mínimo obligatorio (PHP 8.2 abandonado), y MariaDB 11 elimina mysqldump. Esta guía le lleva desde la instalación completa hasta la verificación de seguridad, cubriendo las correcciones de NC 34.0.2, la ruta a NC 35 y los 5 errores más frecuentes.",[37,41,44,47,50,69,72,75,78,82,85,94,115,118,121,124,127,130,162,165,168,171,174,177,180],{"type":38,"title":39,"body":40},"h2","Alerta de seguridad — CVE de elusión de 2FA de mayo de 2026","En mayo de 2026 se divulgaron dos vulnerabilidades críticas de elusión de la autenticación de doble factor en Nextcloud:\n\n**CVE-2026-45690** (puntuación CVSS 5.9, divulgada el 15 de mayo de 2026): un atacante con usuario y contraseña puede eludir el 2FA usando **HTTP Basic Auth**.\n\n**CVE-2026-45691** (puntuación CVSS 5.9, divulgada el 13 de mayo de 2026): misma clase, explotable mediante un **token DAV Bearer** — WebDAV usado por los clientes de sincronización.\n\nAmbas CVE están corregidas en **Nextcloud 32.0.9** y **33.0.3**. Las ramas 34.x y superiores no están afectadas.",{"type":38,"title":42,"body":43},"NC 34.0.0 — Apps recomendadas ausentes en el primer arranque","Nextcloud 34.0.0 introduce una regresión en el asistente de instalación: las apps recomendadas (Notes, Calendar, Contacts) **no se ofrecen** durante la configuración inicial.\n\n**Verificar si sus apps están presentes:**\n\n```bash\ndocker compose exec -u www-data app php occ app:list | grep -E 'calendar|contacts|notes'\n```\n\n**Instalar manualmente:**\n\n```bash\ndocker compose exec -u www-data app php occ app:install calendar\ndocker compose exec -u www-data app php occ app:install contacts\ndocker compose exec -u www-data app php occ app:install notes\n```\n\n**Recomendación:** arrancar directamente en **34.0.2** o superior. Fuentes: issues GitHub \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fserver\u002Fissues\u002F61313\">#61313\u003C\u002Fa> y \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fserver\u002Fissues\u002F61611\">#61611\u003C\u002Fa>.",{"type":38,"title":45,"body":46},"NC 34.0.0 — Restricción duplicada en PostgreSQL y explosión de CPU","En instancias con **PostgreSQL**, una migración interrumpida de NC 34.0.0 puede dejar una restricción duplicada en `oc_filecache_extended` que provoca una **explosión de CPU y RAM**.\n\n**Corrección:**\n\n```bash\ndocker compose exec -u www-data app php occ files:cleanup\ndocker compose exec -u www-data app php occ db:add-missing-indices\ndocker compose exec -u www-data app php occ db:add-missing-columns\n```\n\nFuente: issue GitHub \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fserver\u002Fissues\u002F61597\">#61597\u003C\u002Fa>. Si persisten los errores, actualice directamente a **34.0.2**.",{"type":38,"title":48,"body":49},"Requisitos previos y dimensionamiento","Configuración recomendada: VPS con **2 GB de RAM** (4 GB para más de 5 usuarios activos), **SSD obligatorio**, **20 GB mínimo** de almacenamiento, Ubuntu 22.04 o Debian 12, Docker Engine ≥ 24, dominio con certificado TLS, puertos 80 y 443 abiertos.",{"type":51,"title":52,"steps":53},"steps","Instalación de Nextcloud con Docker Compose",[54,57,60,63,66],{"title":55,"body":56},"Paso 1 — Crear la estructura del proyecto","Cree `\u002Fopt\u002Fnextcloud\u002Fdocker-compose.yml` con MariaDB 10.11, Redis 7-alpine y Nextcloud `nextcloud:34.0.4-apache`.",{"title":58,"body":59},"Paso 2 — Crear el archivo de entorno","```bash\ncat > \u002Fopt\u002Fnextcloud\u002F.env \u003C\u003C 'EOF'\nMYSQL_ROOT_PASSWORD=contraseña_root_fuerte\nMYSQL_PASSWORD=contraseña_nextcloud_fuerte\nREDIS_PASSWORD=contraseña_redis_fuerte\nNEXTCLOUD_ADMIN_USER=admin\nNEXTCLOUD_ADMIN_PASSWORD=contraseña_admin_fuerte\nNEXTCLOUD_DOMAIN=cloud.sudominio.com\nEOF\n```",{"title":61,"body":62},"Paso 3 — Arrancar los contenedores","```bash\ndocker compose up -d\ndocker compose logs -f app\n```\n\nEl primer arranque tarda de 2 a 4 minutos. Espere el mensaje `Nextcloud was successfully installed`.",{"title":64,"body":65},"Paso 4 — Configurar Nginx con TLS","Instale Nginx y Certbot, cree el sitio Nextcloud con `client_max_body_size 10G;` y las cabeceras de proxy, luego ejecute `certbot --nginx -d cloud.sudominio.com`.",{"title":67,"body":68},"Paso 5 — Configurar la URL de confianza en Nextcloud","```bash\ndocker compose exec -u www-data app php occ config:system:set trusted_domains 0 \\\n  --value=cloud.sudominio.com\ndocker compose exec -u www-data app php occ config:system:set overwrite.cli.url \\\n  --value=https:\u002F\u002Fcloud.sudominio.com\n```",{"type":38,"title":70,"body":71},"Comprobar si su instancia es vulnerable a las CVE de 2FA","**Comprobar la versión actual:**\n```bash\ndocker compose exec -u www-data app php occ status\n```\n\n**Versiones vulnerables:** todas las 32.x \u003C 32.0.9 y 33.x \u003C 33.0.3. Las ramas 34.x y superiores no están afectadas por estas CVE.\n\n**Actualizar a la versión corregida (rama 32 → 32.0.9, rama 33 → 33.0.3):**\n```bash\n# Rama 32:\nsed -i 's|nextcloud:[0-9.]*-apache|nextcloud:32.0.9-apache|g' docker-compose.yml\n# Rama 33:\n# sed -i 's|nextcloud:[0-9.]*-apache|nextcloud:33.0.3-apache|g' docker-compose.yml\ndocker compose pull app && docker compose up -d app\ndocker compose exec -u www-data app php occ upgrade\n```",{"type":38,"title":73,"body":74},"Optimizar el rendimiento con Redis y OPcache","Nextcloud sin Redis es lento. Redis cumple dos funciones críticas: **caché de sesiones** y **bloqueo distribuido** para evitar conflictos en sincronizaciones simultáneas.\n\nVerificar que Redis está conectado:\n```bash\ndocker compose exec -u www-data app php occ config:system:get redis\n```",{"type":38,"title":76,"body":77},"Los 5 errores más frecuentes en una instancia Nextcloud","1. **Redis no configurado** — interfaz lenta y conflictos de sincronización.\n2. **`overwrite.cli.url` apuntando a `http:\u002F\u002F`** — enlaces de compartición inseguros.\n3. **`trusted_domains` mal configurado** — error 'untrusted domain'.\n4. **Tamaño de subida limitado a 2 MB** — añada `client_max_body_size 10G` en Nginx.\n5. **Actualizaciones de seguridad pendientes** — configure notificaciones de actualización.",{"type":79,"title":80,"body":81},"tip","Verificar la eficacia de Redis con occ","```bash\ndocker compose exec -u www-data app php occ status\ndocker compose exec -u www-data app php occ check\ndocker compose exec -u www-data app php occ config:system:get redis\n```\n\nEl comando `occ check` lista todos los problemas de configuración detectados. Es el **primer diagnóstico** que debe ejecutar en cualquier instancia Nextcloud existente.",{"type":38,"title":83,"body":84},"Subidas de más de 40 GB tras Cloudflare: el ensamblado perdido","Nextcloud no envía un archivo grande de una vez: el cliente lo divide en fragmentos (chunks), depositados en una carpeta temporal, y luego pide al servidor que los **ensamble** con una petición final `MOVE …\u002F.file`.\n\nLa issue \u003Ca href=\"https:\u002F\u002Fgithub.com\u002Fnextcloud\u002Fserver\u002Fissues\u002F65408\">nextcloud\u002Fserver #65408\u003C\u002Fa>, abierta el 12 de octubre de 2026 sobre Nextcloud 35, muestra lo que falla: un archivo de unos 43 GB subido mediante un enlace público, todos los fragmentos aceptados (`201`) y después un ensamblado de unos 17 minutos. Cloudflare corta una respuesta que supera su tiempo de lectura (125 segundos por defecto según su documentación, unos 100 segundos medidos por el autor a través de Cloudflare Tunnel) y devuelve un `524`.\n\nEl punto de entrada de los enlaces públicos, `publicremote.php`, no llama a `ignore_user_abort(true)`, a diferencia de `remote.php`: PHP interrumpe el ensamblado al cerrarse la conexión y después el navegador borra los fragmentos con una petición `DELETE`. Los archivos de 4 a 5 GB todavía pasan. A 22 de octubre de 2026, la issue sigue abierta, sin corrección publicada.",{"type":86,"title":87,"items":88},"ul","Los límites que hay que alinear, del CDN a PHP",[89,90,91,92,93],"**Cuerpo de petición en Cloudflare** — 100 MB por petición en Free y Pro, 200 MB en Business, hasta 5 GB en Enterprise; por encima, respuesta `413`. Cada fragmento debe quedar por debajo.","**Tamaño de los fragmentos** — `files.chunked_upload.max_size` vale 104857600 bytes (100 MiB) por defecto, algo más que 100 MB: baje a 50 MiB en Free o Pro.","**Tiempo del CDN** — 125 segundos, ampliable hasta 6.000 segundos solo en Enterprise: es el límite que supera el ensamblado.","**nginx** — `proxy_request_buffering off` transmite el cuerpo a medida que llega en lugar de leerlo entero; `proxy_read_timeout` vale 60 segundos por defecto.","**PHP** — la documentación de Nextcloud propone `max_execution_time` y `max_input_time` en 3600; `ignore_user_abort = On` deja terminar el ensamblado tras el corte del proxy.",{"type":51,"title":95,"steps":96},"Configurar Nextcloud para subidas muy grandes",[97,100,103,106,109,112],{"title":98,"body":99},"Sacar las subidas pesadas del proxy","Cloudflare recomienda un subdominio sin proxy (solo DNS) para las peticiones de más de 125 segundos. Cree `upload.your-domain.com` en solo DNS, añádalo con `docker compose exec -u www-data app php occ config:system:set trusted_domains 1 --value=upload.your-domain.com` y después `certbot --nginx -d upload.your-domain.com`. Este nombre expone la IP del servidor: resérvelo para las transferencias pesadas.",{"title":101,"body":102},"Reducir los fragmentos","`docker compose exec -u www-data app php occ config:system:set files.chunked_upload.max_size --type int --value 52428800` fija 50 MiB (valor en bytes).",{"title":104,"body":105},"Ajustar nginx","En `location \u002F`, añada `proxy_request_buffering off;` y `proxy_send_timeout 3600s;`, conserve `proxy_read_timeout 3600s;` y después `nginx -t && systemctl reload nginx`.",{"title":107,"body":108},"Ajustar PHP","Cree `\u002Fopt\u002Fnextcloud\u002Fphp-uploads.ini` con `ignore_user_abort = On`, `max_execution_time = 3600` y `max_input_time = 3600`, móntelo en el servicio `app`: `- .\u002Fphp-uploads.ini:\u002Fusr\u002Flocal\u002Fetc\u002Fphp\u002Fconf.d\u002Fzz-uploads.ini:ro` y después `docker compose up -d app`.",{"title":110,"body":111},"Comprobar y probar","`docker compose exec app php -i | grep ignore_user_abort` debe mostrar `ignore_user_abort => On => On`. Suba después un archivo de varios gigabytes por el subdominio y siga `docker compose logs -f app`.",{"title":113,"body":114},"Elegir qué pasa por Cloudflare","El dominio principal puede seguir con proxy y solo el subdominio de transferencias pesadas pasa a solo DNS: consulte \u003Ca href=\"\u002Fes\u002Fblog\u002Factivar-desactivar-proxy-cloudflare-registro\">nuestra guía sobre el proxy de Cloudflare\u003C\u002Fa>.",{"type":38,"title":116,"body":117},"Diagnóstico de subidas grandes: los mensajes reales","**`Error 524: a timeout occurred`** — la respuesta al `MOVE …\u002F.file` final no llegó dentro del tiempo de Cloudflare. Solución: el subdominio sin proxy.\n\n**`413 Request entity too large`** — un fragmento supera el techo del plan de Cloudflare o `client_max_body_size`. Solución: reducir `files.chunked_upload.max_size`.\n\n**`Could not open file: web-file-upload-\u003Cid>\u002F75 … file doesn't seem to exist`** — recogido en la issue #65408: el ensamblado seguía mientras el navegador ya había borrado los fragmentos. El autor bloquea la petición `DELETE` en `\u002Fpublic.php\u002Fdav\u002Fuploads\u002F`; la tarea `UploadCleanup` purga después los fragmentos abandonados al cabo de 24 horas. Con nginx, el equivalente es un bloque `location ^~ \u002Fpublic.php\u002Fdav\u002Fuploads\u002F` que contiene `if ($request_method = DELETE) { return 403; }` y el mismo `proxy_pass`. Solución no oficial, que debe retirarse en cuanto haya corrección.\n\n**`504 Gateway Time-out` durante el `MOVE`** — es nginx quien abandona: la documentación de Nextcloud cita `fastcgi_read_timeout` en PHP-FPM, aquí `proxy_read_timeout`.",{"type":38,"title":119,"body":120},"Copias de seguridad de Nextcloud — datos, base y configuración","Nextcloud almacena sus datos en tres lugares — los tres deben estar respaldados:\n\n1. **La base de datos MariaDB**: metadatos de archivos, usuarios, recursos compartidos.\n2. **El volumen `nextcloud`**: código PHP, apps instaladas y `config\u002Fconfig.php`.\n3. **Los archivos de los usuarios**.\n\n```bash\ndocker compose exec -u www-data app php occ maintenance:mode --on\n# MariaDB 10.x:\ndocker compose exec -T db mysqldump -u nextcloud -p${MYSQL_PASSWORD} nextcloud | gzip > \u002Fopt\u002Fnextcloud\u002Fbackups\u002Fdb-$(date +%Y%m%d).sql.gz\n# MariaDB 11+: use mariadb-dump en su lugar\ndocker compose exec -u www-data app php occ maintenance:mode --off\n```",{"type":38,"title":122,"body":123},"Copia de seguridad con MariaDB 11 — mariadb-dump reemplaza a mysqldump","Desde **MariaDB 11.0**, los binarios `mysqldump` y `mysql` han sido eliminados de la imagen Docker oficial. Solo están disponibles `mariadb-dump` y `mariadb`. Los scripts que aún usen `mysqldump` con `mariadb:11.x` fallarán en silencio.\n\n**Verificar la versión de MariaDB:**\n\n```bash\ndocker compose exec db mariadb --version\n```\n\n**Script de copia de seguridad compatible con MariaDB 11+:**\n\n```bash\n#!\u002Fbin\u002Fbash\nDATE=$(date +%Y%m%d)\nBACKUP_DIR=\u002Fopt\u002Fnextcloud\u002Fbackups\nmkdir -p $BACKUP_DIR\n\ndocker compose exec -u www-data app php occ maintenance:mode --on\n\n# mariadb-dump reemplaza a mysqldump en MariaDB 11+\ndocker compose exec -T db \\\n  mariadb-dump -u nextcloud -p${MYSQL_PASSWORD} nextcloud \\\n  | gzip > $BACKUP_DIR\u002Fdb-$DATE.sql.gz\n\nif gzip -t $BACKUP_DIR\u002Fdb-$DATE.sql.gz 2>\u002Fdev\u002Fnull; then\n  echo \"Copia OK: $BACKUP_DIR\u002Fdb-$DATE.sql.gz\"\nelse\n  echo \"ERROR: archivo corrupto o vacío\"\n  docker compose exec -u www-data app php occ maintenance:mode --off\n  exit 1\nfi\n\ndocker compose cp app:\u002Fvar\u002Fwww\u002Fhtml\u002Fconfig\u002Fconfig.php $BACKUP_DIR\u002Fconfig-$DATE.php\ndocker compose exec -u www-data app php occ maintenance:mode --off\n```\n\n**Restauración:**\n\n```bash\ngunzip -c $BACKUP_DIR\u002Fdb-$DATE.sql.gz | \\\n  docker compose exec -T db mariadb -u nextcloud -p${MYSQL_PASSWORD} nextcloud\n```\n\n**Nota:** si permanece en `mariadb:10.11` (EOL febrero 2028), ambos `mysqldump` y `mariadb-dump` funcionan.",{"type":38,"title":125,"body":126},"Próximos pasos — ir más lejos con su instancia","Una vez instalado y asegurado Nextcloud:\n\n**Activar Talk (videoconferencia):** instale la aplicación Nextcloud Talk desde la interfaz de administración.\n\n**Activar OnlyOffice o Collabora Online:** estas aplicaciones necesitan su propio contenedor Docker.\n\n**Monitorización:** configure alertas en **Administración → Monitorización**.",{"type":38,"title":128,"body":129},"Office 2021 al final de su vida útil: activar la coedición con Collabora Online u OnlyOffice","Microsoft Office 2021 alcanzó su **fin de vida el 13 de octubre de 2026**: ya no se publicarán parches de seguridad. Para equipos que coeditain archivos `.docx`, `.xlsx` y `.pptx` dentro de Nextcloud, dos suites ofimáticas de código abierto cubren esta necesidad directamente desde la interfaz web.\n\n**Collabora Online** es la versión en línea de LibreOffice, distribuida bajo licencia AGPL. Se integra en Nextcloud mediante la app *Nextcloud Office* y se ejecuta en un contenedor separado basado en `collabora\u002Fcode:latest`, comunicándose con Nextcloud por WebSocket.\n\n**OnlyOffice Document Server** ofrece una interfaz más cercana a Microsoft Office — menús de cinta familiares para usuarios de Windows. También es AGPL y se integra mediante la app *ONLYOFFICE* del Nextcloud App Store.\n\n**Instalación desde el Nextcloud App Store:**\n\n```bash\n# Collabora Online\ndocker compose exec -u www-data app php occ app:install richdocuments\n\n# OnlyOffice\ndocker compose exec -u www-data app php occ app:install onlyoffice\n```\n\n**Despliegue Docker separado — ejemplo de Collabora Online:**\n\nAñada este servicio a su `docker-compose.yml`:\n\n```yaml\n  collabora:\n    image: collabora\u002Fcode:latest\n    restart: unless-stopped\n    environment:\n      domain: cloud\\.sudominio\\.com\n      username: admin\n      password: ${COLLABORA_PASSWORD}\n      extra_params: --o:ssl.enable=false --o:ssl.termination=true\n    ports:\n      - '127.0.0.1:9980:9980'\n    cap_add:\n      - MKNOD\n```\n\nLuego configure la URL del servidor Collabora en Nextcloud (**Administración → Oficina → URL del servidor Collabora Online**: `https:\u002F\u002Foffice.sudominio.com`).\n\n**Huella de memoria:** Collabora Online añade aproximadamente **+300 MB de RAM por proceso activo** (un proceso por documento abierto simultáneamente). OnlyOffice es algo más exigente: **+400 MB por instancia activa**. En un VPS de 2 GB, limite el uso simultáneo a 2–3 documentos o amplíe a 4 GB.\n\n**Formatos compatibles:** ambas apps leen y escriben formatos Microsoft Office (`.docx`, `.xlsx`, `.pptx`) y formatos OpenDocument (`.odt`, `.ods`, `.odp`).",{"type":131,"title":132,"headers":133,"rows":137},"comparison","Collabora Online o OnlyOffice: ¿cuál elegir?",[134,135,136],"Criterio","Collabora Online","OnlyOffice Docs",[138,142,146,150,154,158],[139,140,141],"Interfaz de usuario","Familiar de LibreOffice — curva de adaptación para equipos Windows","Cinta idéntica a Microsoft Office — adopción inmediata",[143,144,145],"Compatibilidad .docx\u002F.xlsx\u002F.pptx","Buena; .odt\u002F.ods excelente","Muy fiel a los originales de Microsoft",[147,148,149],"RAM estimada","~300 MB\u002Fproceso activo","~400 MB\u002Finstancia activa",[151,152,153],"SSO\u002FSAML Nextcloud","Integración nativa","Configuración adicional requerida",[155,156,157],"Conexiones simultáneas","Según la edición (CODE o empresarial)","Limitadas (edición comunitaria)",[159,160,161],"Comunidad","LibreOffice muy activa, actualizaciones frecuentes","Sólida, orientada a compatibilidad Microsoft",{"type":79,"title":163,"body":164},"¿Qué editor elegir?","Para un equipo mixto Linux\u002FWindows que trabaja principalmente con archivos Microsoft Office, OnlyOffice reduce la fricción de adopción. Para un equipo ya en LibreOffice o con restricciones de memoria ajustadas, Collabora Online es la elección natural. Ambas apps son compatibles con Nextcloud 35.",{"type":38,"title":166,"body":167},"Office 2021: qué termina y diagnóstico de Collabora","Según la página de ciclo de vida de Microsoft, Office 2021 (Hogar y Empresas, Hogar y Estudiantes, Profesional, versiones Mac incluidas) y Office LTSC 2021 para Windows ya no reciben correcciones desde el 13 de octubre de 2026; solo Office LTSC 2021 para Mac pasa al soporte extendido.\n\nAl activar Collabora, **«Could not establish connection to the Collabora Online server.»** (**Administración → Office**) significa que Nextcloud no alcanza la URL declarada. Pruebe desde el contenedor: `docker compose exec app curl -sI https:\u002F\u002Foffice.your-domain.com\u002Fhosting\u002Fdiscovery`. Para reconfigurar y diagnosticar: `docker compose exec -u www-data app php occ richdocuments:activate-config --wopi-url=https:\u002F\u002Foffice.your-domain.com`; una respuesta **`Failed to fetch discovery endpoint from …`** apunta a la red o a TLS. El aviso **«You have not configured the allow-list for WOPI requests»** desaparece al declarar la IP del servidor Collabora en la lista de autorización WOPI. Comparativa detallada: \u003Ca href=\"\u002Fes\u002Fblog\u002Foffice-2021-eol-collabora-online-o-onlyoffice-vps\">Collabora Online u OnlyOffice\u003C\u002Fa>.",{"type":38,"title":169,"body":170},"Actualizar Nextcloud en producción","Ejecute siempre las actualizaciones en modo mantenimiento:\n\n```bash\ndocker compose exec -u www-data app php occ maintenance:mode --on\n# MariaDB 10.x:\ndocker compose exec -T db mysqldump -u nextcloud -p${MYSQL_PASSWORD} nextcloud \\\n  | gzip > \u002Fopt\u002Fnextcloud\u002Fbackups\u002Fpre-update-db.sql.gz\n# MariaDB 11+: use mariadb-dump\nsed -i 's|nextcloud:[0-9.]*-apache|nextcloud:34.0.4-apache|g' docker-compose.yml\ndocker compose pull app && docker compose up -d app\ndocker compose exec -u www-data app php occ upgrade\ndocker compose exec -u www-data app php occ maintenance:mode --off\n```",{"type":38,"title":172,"body":173},"PHP 8.3: migración y requisitos previos de Nextcloud 35","Nextcloud 35 hace que **PHP 8.3 sea obligatorio** — PHP 8.2 ya no es compatible. Si usa una instalación nativa o una imagen Docker bloqueada en PHP 8.2, debe migrar PHP antes de actualizar a NC 35.\n\n**Verificar la versión de PHP:**\n\n```bash\n# En Docker\ndocker compose exec app php --version\n```\n\n**En Docker — la imagen `nextcloud:35.x-apache` ya incluye PHP 8.3+.** Solo actualice el tag:\n\n```yaml\nimage: nextcloud:35.0.0-apache\n```\n\n**Extensiones PHP requeridas por Nextcloud 35:** `gd`\u002F`imagick`, `redis`, `intl`, `bcmath`, `gmp`, `zip`, `opcache`.\n\n**Verificar extensiones faltantes:**\n\n```bash\ndocker compose exec -u www-data app php occ check\n```",{"type":38,"title":175,"body":176},"Nextcloud 35: ruta de actualización y versiones de PHP compatibles","Nextcloud 35.0.0 se publicó el **15 de septiembre de 2026** (Hub 26 Summer). Requiere PHP **8.3** como mínimo obligatorio (PHP 8.2 abandonado). PHP 8.4 y 8.5 también son compatibles (8.5 recomendado).\n\n**Ancle siempre a un tag explícito:**\n\n```yaml\nimage: nextcloud:35.0.0-apache\n```\n\n**Ruta secuencial obligatoria: v33 → v34 → v35**\n\n```bash\n# Paso 1: actualización a NC 34\ndocker compose exec -u www-data app php occ maintenance:mode --on\nsed -i 's|nextcloud:[0-9.]*-apache|nextcloud:34.0.4-apache|g' docker-compose.yml\ndocker compose pull app && docker compose up -d app\ndocker compose exec -u www-data app php occ upgrade\ndocker compose exec -u www-data app php occ maintenance:mode --off\n\n# Paso 2: actualización a NC 35\ndocker compose exec -u www-data app php occ maintenance:mode --on\nsed -i 's|nextcloud:[0-9.]*-apache|nextcloud:35.0.0-apache|g' docker-compose.yml\ndocker compose pull app && docker compose up -d app\ndocker compose exec -u www-data app php occ upgrade\ndocker compose exec -u www-data app php occ maintenance:mode --off\n```\n\nConsulte la matriz de compatibilidad en \u003Ca href=\"https:\u002F\u002Fapps.nextcloud.com\">apps.nextcloud.com\u003C\u002Fa>.",{"type":79,"title":178,"body":179},"Comprobar la compatibilidad de las apps antes de actualizar a Nextcloud 35","Antes de actualizar a NC 35, lance la verificación de compatibilidad integrada:\n\n```bash\ndocker exec -u www-data \u003Cnombre_del_contenedor> php occ app:check-platform-compatibility\n```\n\nTras la actualización, ejecute siempre `occ check`:\n\n```bash\ndocker compose exec -u www-data app php occ check\n```",{"type":79,"title":181,"body":182},"Recognize v7 — Depurar el error silencioso 'sh: exec: line 1'","La aplicación **Recognize** (reconocimiento de imágenes y caras) puede fallar en silencio con:\n\n```\nClassifier process output: sh: exec: line 1: recognize\u002Fbin\u002Fnode: not found\n```\n\nEste error no aparece en la interfaz de administración — solo en los logs del contenedor.\n\n**Diagnóstico:**\n\n```bash\ndocker compose logs app | grep -i recognize\ndocker compose exec app sh -c \"ls -la \u002Fvar\u002Fwww\u002Fhtml\u002Fapps\u002Frecognize\u002Fbin\u002F\"\ndocker compose exec app uname -m\n```\n\n**Corrección en x86_64:**\n\n```bash\ndocker compose exec -u www-data app php occ config:app:set recognize \\\n  tensorflow.gpu_enabled --value=false\ndocker compose exec -u www-data app php occ config:app:set recognize \\\n  node_binary --value=\"\"\ndocker compose exec -u www-data app php occ recognize:classify\n```\n\n**En ARM64:** active el modo WASM en los ajustes de la app (Administración → Recognize → Use WASM backend).","Un VPS fiable para su instancia Nextcloud","Nextcloud necesita un VPS SSD con buen ancho de banda para que la sincronización de archivos sea fluida. Nuestros planes VPS Cloud parten de 4 GB de RAM con snapshots bajo demanda — exactamente lo que necesita una instancia Nextcloud sin sobresaltos.","Ver los planes VPS Cloud","\u002Fvps-cloud",[188,210,226],{"id":189,"slug":190,"slugs":191,"title":195,"excerpt":196,"readTime":197,"views":198,"isPinned":19,"noindex":19,"publishedAt":199,"updatedAt":200,"category":201,"categories":206,"featuredImage":30,"bgImage":31,"posterImage":208,"relatedSolution":209},95,"nextcloud-vs-owncloud-que-nube-privada-alojar",{"fr":192,"en":193,"ar":194,"es":190},"nextcloud-vs-owncloud","nextcloud-vs-owncloud-which-private-cloud-to-host","nextcloud-مقابل-owncloud-أي-سحابة-خاصة-تستضيف","Nextcloud vs ownCloud: ¿qué nube privada alojar?","¿Nextcloud u ownCloud para su nube privada en un VPS? Comparativa de funciones, rendimiento, requisitos y guía de despliegue con Docker.",4,0,"2026-03-17T00:00:00+00:00","2026-11-08T01:13:13+00:00",{"id":202,"name":203,"slug":204,"color":205,"icon":204},5,"Comparativas","comparatif","bg-info\u002F10 text-info",[207],{"id":202,"name":203,"slug":204,"color":205,"icon":204},"\u002Fblog\u002Fcovers\u002Fnextcloud-vs-owncloud-poster.svg",{"categorySlug":25,"appSlug":34},{"id":211,"slug":212,"slugs":213,"title":217,"excerpt":218,"readTime":219,"views":18,"isPinned":19,"noindex":19,"publishedAt":220,"updatedAt":221,"category":222,"categories":223,"featuredImage":30,"bgImage":31,"posterImage":225,"relatedSolution":30},126,"copias-seguridad-servidor-jetbackup",{"fr":214,"en":215,"ar":216,"es":212},"sauvegardes-serveur-jetbackup","server-backups-jetbackup-explained","نسخ-الخوادم-الاحتياطية-شرح-jetbackup","JetBackup en cPanel\u002FWHM: instalación y restauración","Cómo instalar JetBackup en WHM, configurar destinos S3 o SFTP, programar las copias de seguridad y restaurar una cuenta, una base o un e-mail por separado.",9,"2026-02-18T00:00:00+00:00","2026-10-20T23:18:07+00:00",{"id":23,"name":24,"slug":25,"color":26,"icon":27},[224],{"id":23,"name":24,"slug":25,"color":26,"icon":27},"\u002Fblog\u002Fcovers\u002Fsauvegardes-serveur-jetbackup-poster.svg",{"id":227,"slug":228,"slugs":229,"title":233,"excerpt":234,"readTime":197,"views":235,"isPinned":19,"noindex":19,"publishedAt":236,"updatedAt":237,"category":238,"categories":244,"featuredImage":30,"bgImage":31,"posterImage":246,"relatedSolution":247},108,"proteger-vps-con-crowdsec",{"fr":230,"en":231,"ar":232,"es":228},"securiser-vps-crowdsec","securing-your-vps-with-crowdsec","تأمين-خادمك-الافتراضي-vps-باستخدام-crowdsec","Proteger su VPS con CrowdSec","Despliegue CrowdSec en su VPS para bloquear los ataques gracias a una detección de comportamiento y a una blocklist comunitaria compartida.",2,"2026-03-04T00:00:00+00:00","2026-09-07T11:26:10+00:00",{"id":239,"name":240,"slug":241,"color":242,"icon":243},8,"Seguridad y monitorización","securite-monitoring","bg-rose-500\u002F10 text-rose-400","security",[245],{"id":239,"name":240,"slug":241,"color":242,"icon":243},"\u002Fblog\u002Fcovers\u002Fsecuriser-vps-crowdsec-poster.svg",{"categorySlug":248,"appSlug":249},"ciberseguridad-bastion","crowdsec",true,1794270536098]