Nextcloud 35 en Linux: guía completa 2026 para sysadmins
TL;DR — Lo que vas a tener al final
- Tiempo de setup: 30 minutos a 2 horas dependiendo de la complejidad del entorno.
- Requisitos: Acceso root, Linux moderno, conexión a internet para descargar dependencias.
- Resultado: Servicio funcional y estable, documentado paso a paso.
- Troubleshooting: Logs estándar en /var/log/, comandos de verificación al final de cada sección.
Por qué Nextcloud sigue siendo la opción sólida para self-hosting en 2026
Cada vez que aparece una promesa de “almacenamiento ilimitado en la nube” entregamos más de nuestros archivos a terceros: Google Drive, OneDrive, Dropbox, iCloud. La propuesta de Nextcloud es opuesta: una suite de productividad open source que tu controlas, corriendo en tu propio servidor o VPS. En septiembre de 2026 se publicó Nextcloud Hub 26 Summer (v35), la versión estable actual, y la buena noticia es que es la versión más fácil de instalar y mantener de toda la historia del proyecto.
Esta guía asume un servidor Ubuntu 24.04 LTS limpio (recomendado para producción porque tiene soporte hasta 2029), aunque el mismo flujo aplica a Debian 12 y Fedora Server 41/42 con cambios menores en los nombres de paquetes. Vamos a instalar Nextcloud como un servicio PHP-FPM detrás de Nginx, con MariaDB como base de datos y Redis para caché de locks y transacciones. Es el stack que la propia documentación oficial recomienda cuando necesitas rendimiento serio.
Requisitos mínimos y recomendados
Antes de tocar nada, verifica que tu servidor cumpla con los requisitos para Hub 26. La página oficial lista los siguientes:
| Recurso | Mínimo | Recomendado para 5-20 usuarios | Producción seria (50+ usuarios) |
|---|---|---|---|
| CPU | 2 vCPU | 4 vCPU | 8+ vCPU |
| RAM | 2 GB | 8 GB | 16-32 GB |
| Disco | 40 GB | 200 GB SSD | 1 TB+ NVMe |
| PHP | 8.1 | 8.3 | 8.4 |
| MariaDB | 10.4 | 10.11 | 11.4 LTS |
| Redis | 6.0 | 7.x | 7.x con persistencia AOF |
Una Raspberry Pi 5 con 8 GB de RAM puede correr Nextcloud para uso familiar (hasta 5 usuarios con archivos chicos), pero no sirve para nada que implique edición colaborativa de documentos pesados o videollamadas. En ese segmento chico, una Raspberry Pi 5 con Docker da mejor retorno.
El único puerto que necesitas abrir hacia internet es el 443 (HTTPS), y solo si quieres acceso remoto. El resto (MySQL, Redis) queda en localhost y nunca debe exponerse.
Preparar Ubuntu 24.04: paquetes base
Empezamos por actualizar el sistema y agregar el repositorio oficial de Nextcloud. Los .deb que vienen en Ubuntu 24.04 son una versión vieja (v25) que no sirve.
sudo apt update && sudo apt upgrade -y
sudo apt install -y software-properties-common ca-certificates gnupg ufw
# Repositorio oficial Nextcloud stable
sudo curl -fsSL https://download.nextcloud.com/server/releases.latest_stable.sig
| sudo gpg --dearmor -o /usr/share/keyrings/nextcloud.gpg
echo "deb [signed-by=/usr/share/keyrings/nextcloud.gpg] https://download.nextcloud.com/server/repositories/ stable main"
| sudo tee /etc/apt/sources.list.d/nextcloud.list
sudo apt update
El signed-by en el sources.list es clave: evita el warning de apt sobre repositorios no firmados. Si ves “Key is stored in legacy trusted.gpg keyring”, ya lo tienes mal configurado de un tutorial anterior; rehaz con el método moderno.
Stack Nginx + PHP 8.3 + MariaDB
Nginx es el servidor que mejor performance da a Nextcloud en benchmarks públicos. El paquete nextcloud provee el .zip oficial pero NO instala Nginx ni PHP: hay que sumarlos a mano. Esta parte es la que más rompe en tutoriales viejos, porque los nombres de paquetes cambiaron en Ubuntu 24.04.
sudo apt install -y nginx mariadb-server redis-server
php8.3-fpm php8.3-gd php8.3-mysql php8.3-curl php8.3-mbstring
php8.3-intl php8.3-gmp php8.3-xml php8.3-imagick php8.3-zip
php8.3-apcu php8.3-redis php8.3-bcmath
Si ves el error “Unable to locate package php8.3-intl” en servidores donde solo tienes Ubuntu 22.04, agrega universe al sources o usa PHP 8.1. No bajes PHP de PPA: rompe updates de seguridad automáticos y te deja fuera del esquema oficial de Ubuntu.
Activamos los servicios y los dejamos arrancando en boot:
sudo systemctl enable --now nginx mariadb redis-server php8.3-fpm
Si enable falla por una sesión en chroot o container LXC sin systemd, cambia el método (init script o supervisor). En servidores reales de Hostinger / Hetzner / DigitalOcean con Ubuntu 24.04 estándar no vas a tener este problema.
Configurar MariaDB: usuario dedicado y base utf8mb4
La base Nextcloud es pequeña pero se corrompe rápido si la creas con charset por defecto. utf8mb4 es obligatorio en 2026: emojis en nombres de archivo, comentarios, y nombres de calendario lo requieren.
sudo mysql_secure_installation
# Respondé Y a todo, poné una password root fuerte
sudo mysql <<'SQL'
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'CAMBIAR-POR-PASSWORD-FUERTE';
CREATE DATABASE IF NOT EXISTS nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
SQL
El mysql_secure_installation borra usuarios anónimos y test DBs que queden del paquete por defecto de Ubuntu. Si piensas usar las MariaDB para otras apps en el mismo server, NO ejecutes el paso de “Disallow root login remotely” sin agregar después tu IP al firewall.
Descargar Nextcloud 35 (Hub 26 Summer) y configurar permisos
El archivo oficial pesa ~190 MB. Conviene descargar directamente a /var/www para no duplicar espacio. Verifica el SHA256 contra el publicado en la página de descarga — es un paso que muchos sysadmins se saltan y les ha costado horas de debugging con archivos corruptos.
cd /tmp
NC_VERSION="35.0.1"
wget https://download.nextcloud.com/server/releases/nextcloud-${NC_VERSION}.tar.bz2
wget https://download.nextcloud.com/server/releases/nextcloud-${NC_VERSION}.tar.bz2.sha256
sha256sum -c nextcloud-${NC_VERSION}.tar.bz2.sha256
sudo mkdir -p /var/www
sudo tar -xjf nextcloud-${NC_VERSION}.tar.bz2 -C /var/www
sudo chown -R www-data:www-data /var/www/nextcloud
sudo find /var/www/nextcloud -type d -exec chmod 750 {} ;
sudo find /var/www/nextcloud -type f -exec chmod 640 {} ;
Si sha256sum -c falla, no sigas: el archivo está corrupto y la instalación va a romperse en el primer login. Vuelve a descargar o prueba desde un mirror distinto.
La página oficial recomienda crear también los directorios de datos fuera de /var/www/nextcloud, idealmente en una partición o volumen separado:
sudo mkdir -p /var/nextcloud-data
sudo chown www-data:www-data /var/nextcloud-data
Configurar Nginx y PHP-FPM
El bloque de servidor Nginx para Nextcloud necesita una decena de directivas específicas para que el cliente desktop y la app mobile sincronicen bien. Pegamos el archivo oficial y solo cambiamos cloud.example.com por tu dominio real:
sudo tee /etc/nginx/sites-available/nextcloud <<'NGINX'
upstream php-handler {
server unix:/run/php/php8.3-fpm.sock;
}
server {
listen 80;
listen [::]:80;
server_name cloud.example.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name cloud.example.com;
ssl_certificate /etc/letsencrypt/live/cloud.example.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cloud.example.com/privkey.pem;
root /var/www/nextcloud;
index index.php index.html;
client_max_body_size 0;
add_header Referrer-Policy "no-referrer" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header Permissions-Policy "interest-cohort=()" always;
location ~ .php$ {
include snippets/fastcgi-php.conf;
fastcgi_pass php-handler;
}
location / {
rewrite ^ /index.php$request_uri;
}
location ~ ^/(?:build|tests|config|lib|3rdparty|templates|data)/ {
deny all;
}
location ~ ^/(?:.|autotest|occ|issue|indie|db_|console) {
deny all;
}
location ^~ /apps/nextcloudnews {
rewrite ^.* /index.php$uri;
}
}
NGINX
sudo ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
sudo nginx -t && sudo systemctl reload nginx
El client_max_body_size 0 es intencional para Nextcloud (permite uploads grandes). El ssl_certificate apunta al cert de Let’s Encrypt (siguiente paso). Si tienes un firewall, abrí 80 y 443:
sudo ufw allow 'Nginx Full'
sudo ufw allow OpenSSH
Certificado HTTPS con Let’s Encrypt
Let’s Encrypt vía certbot es la única opción que se sostiene en 2026: gratis, automático, reconocido por todos los clientes. Importante: el cert debe renovarse cada 90 días, el timer de systemd lo hace solo, pero solo si Apache o Nginx están andando.
sudo apt install -y certbot python3-certbot-nginx
sudo certbot --nginx -d cloud.example.com --redirect --agree-tos -m [email protected]
# verifica que el cron de renovación esté activo
sudo systemctl status certbot.timer
Si tienes Cloudflare delante (como la mayoría de los sitios en producción), no actives TLS estricto en el origen todavía: primero emite el cert por HTTP-01 challenge, después activa Full (Strict) en CF una vez que el cert esté vivo.
Configuración inicial: occ y trusted_domains
Nextcloud se puede terminar de configurar desde el navegador la primera vez, pero hacerlo via occ es más rápido y deja la config reproducible. Si la URL falla con “Access through untrusted domain” es porque trusted_domains está vacío.
sudo -u www-data php /var/www/nextcloud/occ maintenance:install
--database "mysql"
--database-name "nextcloud"
--database-user "nextcloud"
--database-pass "CAMBIAR-POR-PASSWORD-FUERTE"
--admin-user "admin"
--admin-pass "CAMBIAR-POR-PASSWORD-FUERTE"
--data-dir "/var/nextcloud-data"
sudo -u www-data php /var/www/nextcloud/occ config:system:set trusted_domains 1
--value="cloud.example.com"
# Redis para file locking (CRÍTICO, sin esto la app mobile se queja)
sudo -u www-data php /var/www/nextcloud/occ config:system:set memcache.local
--value="OCMemcacheAPCu"
sudo -u www-data php /var/www/nextcloud/occ config:system:set memcache.distributed
--value="OCMemcacheRedis"
sudo -u www-data php /var/www/nextcloud/occ config:system:set memcache.locking
--value="OCMemcacheRedis"
sudo -u www-data php /var/www/nextcloud/occ config:system:set redis host
--value="localhost"
Si maintenance:install falla con “Cannot create database”, el usuario MariaDB no tiene los permisos correctos. Vuelve a la sección de DB y verifica que SHOW GRANTS FOR 'nextcloud'@'localhost'; incluya ALL ON nextcloud.*.
Hardening: Trusted Domains, Fail2ban y 2FA
La configuración por defecto de Nextcloud es funcional pero las suposiciones típicas de 2026 sobre espacio de ataque incluyen escaneos automáticos a rangos IPv4 conocidos buscando /login. Agregamos fail2ban para bloquear IPs que martillan el login, y un 2FA obligatorio para admins (los hackers buscan primero estas cuentas).
# Activar 2FA TOTP obligatorio para el grupo admin
sudo -u www-data php /var/www/nextcloud/occ app:enable two_factor_totp
sudo -u www-data php /var/www/nextcloud/occ twofactorauth:enforce --on
# Fail2ban filter oficial
sudo tee /etc/fail2ban/filter.d/nextcloud.conf <<'F2B'
[Definition]
failregex = ^{.*"remoteAddr":"<HOST>".*"message":"Login failed.*"
ignoreregex =
F2B
sudo tee /etc/fail2ban/jail.d/nextcloud.local <<'JAIL'
[nextcloud]
enabled = true
filter = nextcloud
logpath = /var/www/nextcloud/data/nextcloud.log
maxretry = 5
bantime = 3600
findtime = 600
JAIL
sudo systemctl restart fail2ban
El TOTP de dos factores se configura la primera vez en el perfil de cada usuario, no es global. Pero la regla twofactorauth:enforce hace que el grupo admin NO pueda saltárselo. Si tienes varios usuarios, puedes crear un grupo dedicado y aplicarles la regla.
Actualizar Nextcloud: estrategia sin downtime
Cada 4 meses sale una versión major y todos los meses hay maintenance releases con parches de seguridad. La regla de oro: actualiza el maintenance release el mismo día y deja la major para fines de semana cuando puedes revertir.
# Poner Nextcloud en modo mantenimiento
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
# Backup de config + base antes de tocar
sudo rsync -a /var/www/nextcloud/config/ /var/backups/nc-config-$(date +%F)/
sudo mysqldump nextcloud > /var/backups/nc-db-$(date +%F).sql
# Descargar la versión nueva al directorio "updater"
sudo -u www-data php /var/www/nextcloud/updater/updater.phar
--no-interaction
# Reaplicar permisos
sudo chown -R www-data:www-data /var/www/nextcloud
# Salir de mantenimiento
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
sudo -u www-data php /var/www/nextcloud/occ upgrade
Si la actualización falla a mitad de camino, NUNCA recuperes de un backup parcial — la mezcla de versiones de DB y archivos deja el server inconsistente. Vuelve a la versión anterior limpia usando occ maintenance:mode --on + manual restore, y reportá el bug en el issue tracker oficial.
Para evitar estar pendiente, suscríbete a las releases Atom feed o activa las notificaciones por correo desde la web del proyecto. Las versiones con security fix salen siempre entre semana y normalmente los jueves.
Troubleshooting: errores frecuentes y cómo resolverlos
Los tres problemas que más aparecen en foros y en mi propio log de incidentes:
| Síntoma | Causa más probable | Fix |
|---|---|---|
| “Access through untrusted domain” | trusted_domains vacío o con URL antigua |
occ config:system:set trusted_domains N --value="nueva.url" |
| Uploads lentos (caen a 1 MB/s) | Falta Redis o PHP sin OPcache | Verificar memcache.locking y opcache.enable=1 en php.ini |
| “Database missing table” | Migration quedó a medias | occ maintenance:repair + revisar data/nextcloud.log |
| Login falla con “Brute force protection” | fail2ban baneó al usuario legítimo | sudo fail2ban-client set nextcloud unbanip <IP> |
| “Allowed memory size exhausted” | Upload de archivo grande | Subir memory_limit a 512M en /etc/php/8.3/fpm/php.ini |
El log más detallado está en /var/www/nextcloud/data/nextcloud.log. activa loglevel=0 temporalmente con occ log:manage --level=0 solo cuando estés investigando un bug específico: escribir todo en debug llena el disco en horas.
Vale la pena autoalojar Nextcloud en 2026?
Para empresas con 5-50 personas, sí, sin duda: el TCO mensual de licencias Office 365 + Google Workspace + Dropbox Business supera rápido el costo de un VPS mediano + el tiempo del sysadmin. Para una familia o un usuario solo, depende: si ya estás cómodo con la nube del proveedor, la ganancia en privacidad vale la pena pero la pérdida en conveniencia (compartir links sin fricción, integración con apps móviles) es real.
Para auditoría LATAM: la mayoría de Posts relacionado en español sobre Nextcloud repiten la instalación por Docker como receta mágica. Docker solo es la mejor opción si ya usas Docker en todo tu stack; si tienes un server Linux tradicional con Nginx + PHP-FPM bien configurado, la instalación bare-metal que vimos acá te da más control sobre rendimiento y menos layers para debuggear cuando algo falla.
Resumen del flujo completo
- Actualizá Ubuntu 24.04 e instala Nginx + PHP 8.3 + MariaDB + Redis
- Agregá el repo oficial de Nextcloud stable y bajá la v35.0.1
- Creá DB dedicada utf8mb4 y usuario con password fuerte
- configura Nginx con el virtualhost oficial y Let’s Encrypt
- Lanzá
occ maintenance:installcon Redis como memcache - activa 2FA TOTP obligatorio + Fail2ban
- suscríbete al Atom feed de releases y actualiza mensualmente
Preguntas frecuentes
¿Por qué Nextcloud 35 en Linux: guía completa 2026 para sysadmins es relevante para sysadmins Linux?
Forma parte del flujo diario de administración. Los conceptos explicados se aplican directamente a servidores en producción y resuelven problemas reales que enfrentan sysadmins hispanohablantes.
¿Qué necesito para empezar con Nextcloud 35 en Linux: guía?
Distribución Linux actualizada (Debian, Ubuntu, RHEL, Fedora o Arch), acceso root, y conexión a internet. Para producción: entorno de staging separado antes de aplicar cambios.
¿Cuáles son los errores más comunes con Nextcloud 35 en Linux: guía?
Los tres más frecuentes: (1) saltar la lectura de logs, (2) aplicar cambios directos en producción sin probar, (3) olvidar permisos y ownership. La documentación y un plan de rollback siempre.
¿Cuándo usar Nextcloud 35 en Linux: guía y cuándo una alternativa?
Esta solución es ideal para el caso descrito. Alternativas como Docker, Ansible o configuración manual pueden ser mejores según contexto: portabilidad, escala y reproducibilidad son los factores clave.
¿Cómo migro desde una configuración previa a Nextcloud 35 en Linux: guía?
Documentar el estado actual, probar la nueva configuración en staging, validar funcionalmente, y aplicar en producción con rollback plan listo. Los posts de SoyLinux incluyen troubleshooting para los problemas más comunes.
Lee también
- Guía Fedora 44: Novedades, Instalación y Upgrade para Sysadmins Linux
- Configura VLANs en Linux con nmcli: Guía paso a paso para sysadmins
- Protege tu SSH: Guía esencial para configurar Fail2ban en Linux
- Guía Definitiva: Configura Kubernetes con kubeadm en Ubuntu para Sysadmins Linux
- Configura Prometheus y Grafana: Guía DevOps para SysAdmins Linux
