📘 Este artículo forma parte de nuestra Guía Completa de Servidores y Virtualización y complementa a nuestra Guía Completa de Ciberseguridad. Si buscas alternativas, consulta nuestra Guía de ownCloud y nuestra Guía de Samba.
Introducción
Nextcloud es la plataforma de nube auto-hospedada más popular del mundo. Con +400.000 instalaciones activas y +400 apps, es la alternativa open source a Google Drive, Dropbox, OneDrive, iCloud y Microsoft 365.
En 2026, Nextcloud es la elección por defecto para:
- Empresas que quieren control total sobre sus datos.
- Particulares preocupados por la privacidad.
- Equipos que colaboran en documentos.
- Organizaciones con compliance estricto (RGPD, ISO 27001).
- Administradores que quieren una solución completa.
Diferencias con ownCloud:
| Aspecto | Nextcloud | ownCloud |
|---|---|---|
| Comunidad | Mayor | Menor |
| Plugins | +400 | Menos |
| Talk (videollamadas) | ✅ | ❌ |
| Groupware (calendario/contactos) | ✅ | ✅ |
| Office integrado | ✅ (OnlyOffice, Collabora) | ✅ |
| Marketplace | ✅ | Limitado |
| Actualizaciones | Frecuentes | Menos frecuentes |
Conclusión: Nextcloud es la opción más popular y completa en 2026.
En esta guía completa vas a aprender:
- Qué es Nextcloud y por qué usarlo.
- Requisitos de hardware y software.
- Instalación en Debian 12.
- Configuración de MariaDB (o PostgreSQL).
- Configuración de PHP-FPM.
- Configuración de Nginx + SSL.
- Redis para caché.
- Configuración inicial.
- Apps esenciales.
- Seguridad y hardening.
- Backups automáticos.
- Clientes (Windows, macOS, Linux, móvil).
- Integración con Office.
- Actualizaciones y migraciones.
- Troubleshooting.
- FAQ.
Si aún no tienes un servidor funcional, consulta nuestra Guía Completa de Servidores. Si prefieres ownCloud, nuestra Guía de ownCloud.
Índice de contenidos
- ¿Qué es Nextcloud?
- Requisitos
- Instalación de dependencias
- Configuración de MariaDB
- Descarga de Nextcloud
- Configuración de PHP-FPM
- Configuración de Nginx
- SSL con Let’s Encrypt
- Instalación web (asistente)
- Configuración avanzada
- Redis para caché
- Apps esenciales
- Seguridad y hardening
- Backups automáticos
- Clientes: Windows, macOS, Linux, móvil
- Integración con Office
- Actualizaciones
- Troubleshooting
- FAQ
- Conclusión
1. ¿Qué es Nextcloud?
Nextcloud es una suite de colaboración y almacenamiento en la nube auto-hospedada, escrita en PHP y publicada bajo licencia AGPL.
1.1 Componentes
| Componente | Función |
|---|---|
| Nextcloud Server | Núcleo (PHP) |
| Base de datos | MariaDB, MySQL, PostgreSQL, SQLite |
| Servidor web | Nginx, Apache |
| PHP-FPM | Backend |
| Redis | Caché y locking |
| Cliente desktop | Sincronización |
| Cliente móvil | iOS, Android |
1.2 Características principales
- Almacenamiento de archivos (hasta petabytes).
- Sincronización entre dispositivos.
- Compartición con usuarios, grupos, enlaces.
- Calendario y contactos (CalDAV, CardDAV).
- Videollamadas (Nextcloud Talk).
- Edición de documentos (OnlyOffice, Collabora).
- Correo (Nextcloud Mail).
- Tareas (Deck, Tasks).
- Notas (Notes).
- Passwords (Passwords).
- Fotos con reconocimiento facial.
- Encriptación extremo a extremo.
- 2FA integrado.
- LDAP/AD integrado.
1.3 Casos de uso
- Alternativa a Google Drive/Dropbox.
- Suite ofimática colaborativa.
- Sincronización de equipos.
- Gestión documental.
- Compartición con clientes.
- Backup personal.
- Fotos y vídeos.
- Correo corporativo.
1.4 Versiones
- Nextcloud 28 (2023-2024).
- Nextcloud 29 (2024).
- Nextcloud 30 (2025-2026) — versión actual.
- Nextcloud Enterprise — versión comercial.
Recomendación: usa la última versión estable (30.x).
1.5 Nextcloud vs ownCloud
Nextcloud es un fork de ownCloud (2016). Diferencias principales:
- Nextcloud: comunidad, más apps, actualizaciones frecuentes.
- ownCloud: enfoque enterprise, integración Microsoft 365.
Recomendación: Nextcloud para uso general. Consulta Guía de ownCloud si prefieres enterprise.
2. Requisitos
2.1 Hardware
| Componente | Mínimo | Recomendado |
|---|---|---|
| CPU | 2 cores | 4+ cores |
| RAM | 2 GB | 4-8 GB |
| Disco | 20 GB | 100+ GB SSD |
| Red | 100 Mbps | 1 Gbps |
Para +50 usuarios: 8-16 GB RAM, disco NVMe.
2.2 Software
- Debian 12 (Bookworm) — recomendado.
- Debian 11 (Bullseye) — funciona.
- Nginx 1.22+.
- MariaDB 10.11+ o PostgreSQL 15+.
- PHP 8.2+ con extensiones.
2.3 Extensiones PHP requeridas
ctype, curl, dom, fileinfo, gd, iconv, intl, json, libxml, mbstring,
openssl, posix, session, simplexml, xml, xmlreader, xmlwriter, zip, zlibAdemás (recomendadas):
- imagick (imágenes).
- redis (caché).
- apcu (caché local).
- bcmath, gmp (cálculos).
- ldap (AD/LDAP).
2.4 Puertos
| Puerto | Servicio |
|---|---|
| 80, 443 | HTTP/HTTPS |
| 3306 | MariaDB (local) |
| 6379 | Redis (local) |
2.5 Preparación
sudo apt update
sudo apt full-upgrade -y
sudo hostnamectl set-hostname cloud.tudominio.com
sudo timedatectl set-timezone Europe/MadridConsulta Guía Completa de Linux.
3. Instalación de dependencias
3.1 Nginx
sudo apt install -y nginx
sudo systemctl enable nginx3.2 MariaDB
sudo apt install -y mariadb-server
sudo mysql_secure_installationRecomendaciones:
- Contraseña root: robusta.
- Eliminar usuarios anónimos: sí.
- Eliminar DB test: sí.
- Deshabilitar root remoto: sí.
- Recargar permisos: sí.
Consulta Cómo instalar MariaDB.
3.3 PHP-FPM y extensiones
sudo apt install -y \
php8.2-fpm php8.2-cli php8.2-common \
php8.2-curl php8.2-gd php8.2-intl php8.2-json \
php8.2-mbstring php8.2-mysql php8.2-xml php8.2-zip \
php8.2-imagick php8.2-ldap php8.2-bcmath php8.2-gmp \
php8.2-apcu php8.2-redis php8.2-smbclient php8.2-bz23.4 Redis
sudo apt install -y redis-server php-redis
sudo systemctl enable --now redis-server3.5 Herramientas adicionales
sudo apt install -y wget unzip tar bzip2 certbot python3-certbot-nginx3.6 Verificar instalación
php -m | grep -E 'gd|imagick|intl|mbstring|mysql|zip|redis|apcu|bcmath|gmp|ldap|smbclient'Deberías ver todas las extensiones.
4. Configuración de MariaDB
4.1 Crear base de datos y usuario
sudo mysql -u root -pCREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'PasswordNextcloud123!';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;Explicación:
- utf8mb4: charset obligatorio (soporta emojis).
- PasswordNextcloud123!: cambia por una contraseña robusta.
4.2 Configuración de rendimiento
Edita /etc/mysql/mariadb.conf.d/50-server.cnf:
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnfAñade en la sección [mysqld]:
# Rendimiento para Nextcloud
innodb_buffer_pool_size = 1G
innodb_log_file_size = 128M
innodb_file_per_table = 1
innodb_flush_method = O_DIRECT
innodb_flush_log_at_trx_commit = 2
query_cache_type = 0
query_cache_size = 0
tmp_table_size = 64M
max_heap_table_size = 64M
transaction_isolation = READ-COMMITTED
binlog_format = ROWReiniciar:
sudo systemctl restart mariadbConsulta Guía Completa de Servidores.
5. Descarga de Nextcloud
5.1 Descargar la última versión
cd /tmp
wget https://download.nextcloud.com/server/releases/latest.zip
unzip latest.zip5.2 Mover a /var/www/
sudo mv nextcloud /var/www/
sudo chown -R www-data:www-data /var/www/nextcloud
sudo chmod -R 750 /var/www/nextcloud5.3 Crear directorio de datos
sudo mkdir -p /var/www/nextcloud-data
sudo chown -R www-data:www-data /var/www/nextcloud-data
sudo chmod 750 /var/www/nextcloud-data⚠️ Importante: el directorio de datos NO debe estar dentro de la raíz web por seguridad.
5.4 Verificar
ls -la /var/www/nextcloud/Deberías ver:
apps/ config/ core/ index.php version.php ...6. Configuración de PHP-FPM
6.1 Configuración principal
Edita /etc/php/8.2/fpm/php.ini:
sudo nano /etc/php/8.2/fpm/php.iniAjustes clave:
memory_limit = 512M
upload_max_filesize = 16G
post_max_size = 16G
max_execution_time = 3600
max_input_time = 3600
max_input_vars = 5000
date.timezone = Europe/Madrid
; OPcache
opcache.enable = 1
opcache.enable_cli = 1
opcache.memory_consumption = 256
opcache.interned_strings_buffer = 32
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 2
opcache.save_comments = 1
opcache.jit = 1255
opcache.jit_buffer_size = 128M6.2 Configuración del pool
Edita /etc/php/8.2/fpm/pool.d/www.conf:
sudo nano /etc/php/8.2/fpm/pool.d/www.confAjustes:
pm = dynamic
pm.max_children = 50
pm.start_servers = 5
pm.min_spare_servers = 5
pm.max_spare_servers = 35
pm.max_requests = 500
; Variables de entorno para Nextcloud
env[PATH] = /usr/local/bin:/usr/bin:/bin
env[php_value_max_execution_time] = 36006.3 Reiniciar PHP-FPM
sudo systemctl restart php8.2-fpm
sudo systemctl status php8.2-fpmConsulta Optimización de servidores Linux.
7. Configuración de Nginx
7.1 Crear configuración
Crea /etc/nginx/sites-available/nextcloud:
sudo nano /etc/nginx/sites-available/nextcloudContenido:
upstream php-handler {
server unix:/run/php/php8.2-fpm.sock;
}
# Redirigir HTTP a HTTPS
server {
listen 80;
listen [::]:80;
server_name cloud.tudominio.com;
return 301 https://$server_name$request_uri;
}
server {
listen 443 ssl http2;
listen [::]:443 ssl http2;
server_name cloud.tudominio.com;
# SSL (Certbot rellenará)
ssl_certificate /etc/letsencrypt/live/cloud.tudominio.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/cloud.tudominio.com/privkey.pem;
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
ssl_session_cache shared:SSL:10m;
# Seguridad
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;
add_header X-Frame-Options "SAMEORIGIN" always;
add_header X-Content-Type-Options "nosniff" always;
add_header X-XSS-Protection "1; mode=block" always;
add_header Referrer-Policy "strict-origin-when-cross-origin" always;
# Tamaño máximo de subida
client_max_body_size 16G;
client_body_timeout 300s;
fastcgi_buffers 64 4K;
# Gzip
gzip on;
gzip_vary on;
gzip_comp_level 4;
gzip_min_length 256;
gzip_proxied expired no-cache no-store private no_last_modified no_etag auth;
gzip_types application/atom+xml application/javascript application/json application/ld+json application/manifest+json application/rss+xml application/vnd.geo+json application/vnd.ms-fontobject application/x-font-ttf application/x-web-app-manifest+json application/xhtml+xml application/xml font/opentype image/bmp image/svg+xml image/x-icon text/cache-manifest text/css text/plain text/vcard text/vnd.rim.location.xloc text/vtt text/x-component text/x-cross-domain-policy;
# Root
root /var/www/nextcloud;
# Logs
access_log /var/log/nginx/nextcloud.access.log;
error_log /var/log/nginx/nextcloud.error.log;
# Reglas principales
location / {
try_files $uri $uri/ /index.php$request_uri;
}
# Well-known
location ^~ /.well-known {
# Reglas según documentación oficial
location = /.well-known/carddav { return 301 $scheme://$host/remote.php/dav; }
location = /.well-known/caldav { return 301 $scheme://$host/remote.php/dav; }
location = /.well-known/webfinger { return 301 $scheme://$host/index.php$request_uri; }
location = /.well-known/nodeinfo { return 301 $scheme://$host/index.php$request_uri; }
try_files $uri $uri/ =404;
}
# Favicon y robots
location = /favicon.ico { access_log off; log_not_found off; }
location = /robots.txt { access_log off; log_not_found off; }
# Bloquear archivos sensibles
location ~ ^/(?:\.htaccess|data|config|db_structure\.xml|README) {
deny all;
}
# Front controller
location ~ ^\/(?:build|tests|config|lib|3rdparty|templates|data) {
deny all;
}
location ~ ^\/(?:\.|autotest|occ|issue|indie|db_|console) {
deny all;
}
# PHP-FPM
location ~ \.php(?:$|/) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
set $path_info $fastcgi_path_info;
try_files $fastcgi_script_name =404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $path_info;
fastcgi_param HTTPS on;
fastcgi_param modHeadersAvailable true;
fastcgi_param front_controller_active true;
fastcgi_pass php-handler;
fastcgi_intercept_errors on;
fastcgi_request_buffering off;
}
# Assets estáticos
location ~* \.(?:css|js|mjs|svg|gif|png|html|ttf|woff2?|ico|jpg|jpeg|map|webm|mp4|mp3|ogg|wav)$ {
try_files $uri /index.php$request_uri;
add_header Cache-Control "public, max-age=15778463, immutable";
access_log off;
}
}Nota: esta configuración está basada en la documentación oficial de Nextcloud. Puedes consultarla en https://docs.nextcloud.com/server/latest/admin_manual/installation/nginx.html
7.2 Activar el sitio
sudo ln -s /etc/nginx/sites-available/nextcloud /etc/nginx/sites-enabled/
sudo rm /etc/nginx/sites-enabled/default # opcional
sudo nginx -t
sudo systemctl reload nginxConsulta Guía de Nginx.
8. SSL con Let’s Encrypt
8.1 Obtener certificado
sudo certbot --nginx -d cloud.tudominio.comCertbot:
- Verifica el dominio.
- Genera el certificado.
- Modifica la configuración de Nginx automáticamente.
- Programa la renovación automática.
Accede ahora a: https://cloud.tudominio.com
8.2 Verificar renovación
sudo certbot renew --dry-run8.3 Diffie-Hellman (opcional)
sudo openssl dhparam -out /etc/nginx/dhparam.pem 4096Añade en la config de Nginx:
ssl_dhparam /etc/nginx/dhparam.pem;Consulta Guía completa para configurar SSL en Nginx y Cómo implementar el protocolo HTTPS correctamente.
9. Instalación web (asistente)
9.1 Acceder al asistente
Abre en el navegador:
https://cloud.tudominio.com9.2 Configurar
- Usuario admin: tu nombre.
- Contraseña: robusta.
- Data folder:
/var/www/nextcloud-data. - Base de datos:
- Tipo: MySQL/MariaDB.
- Usuario:
nextcloud. - Contraseña: la que pusiste.
- Base:
nextcloud. - Host:
localhost.
- Instalar.
Este paso tarda 1-3 minutos.
9.3 Post-instalación
Tras la instalación:
- Instalar apps recomendadas (el asistente te lo sugiere).
- Configurar zona horaria.
- Cambiar contraseña de admin.
- Configurar email (opcional).
Consulta Buenas prácticas en contraseñas y 2FA.
10. Configuración avanzada
10.1 Config.php
Edita /var/www/nextcloud/config/config.php:
sudo nano /var/www/nextcloud/config/config.phpAjustes recomendados:
<?php
$CONFIG = array (
'instanceid' => '...',
'passwordsalt' => '...',
'secret' => '...',
'trusted_domains' => [
0 => 'cloud.tudominio.com',
1 => 'IP_DEL_SERVIDOR',
],
'datadirectory' => '/var/www/nextcloud-data',
'dbtype' => 'mysql',
'version' => '30.0.0.0',
'overwrite.cli.url' => 'https://cloud.tudominio.com',
'overwriteprotocol' => 'https',
'htaccess.RewriteBase' => '/',
'dbname' => 'nextcloud',
'dbhost' => 'localhost',
'dbport' => '',
'dbtableprefix' => 'oc_',
'mysql.utf8mb4' => true,
'dbuser' => 'nextcloud',
'dbpassword' => 'PasswordNextcloud123!',
'installed' => true,
// Caché
'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'memcache.locking' => '\\OC\\Memcache\\Redis',
'redis' => [
'host' => 'localhost',
'port' => 6379,
'timeout' => 0.0,
],
// Seguridad
'twofactor_enforced' => 'true',
'twofactor_enforced_groups' => ['admin'],
// Rendimiento
'default_phone_region' => 'ES',
'enable_previews' => true,
'preview_max_x' => 2048,
'preview_max_y' => 2048,
// Logs
'loglevel' => 2,
'log_type' => 'file',
'logfile' => '/var/www/nextcloud-data/nextcloud.log',
'log_rotate_size' => 104857600,
);10.2 Permisos correctos
sudo chown -R www-data:www-data /var/www/nextcloud
sudo chown -R www-data:www-data /var/www/nextcloud-data
sudo chmod -R 750 /var/www/nextcloud
sudo chmod -R 750 /var/www/nextcloud-data10.3 Cron en lugar de AJAX
Editar crontab de www-data:
sudo crontab -u www-data -eAñade:
*/5 * * * * php -f /var/www/nextcloud/cron.phpConfigurar en Nextcloud:
- Ajustes → Administración → Información básica.
- Background jobs: Cron.
Consulta Cómo automatizar tareas con cron.
10.4 Ejecutar occ (Nextcloud CLI)
sudo -u www-data php /var/www/nextcloud/occComandos útiles:
# Estado
sudo -u www-data php /var/www/nextcloud/occ status
# Modo mantenimiento
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off
# Reparar
sudo -u www-data php /var/www/nextcloud/occ maintenance:repair
# Actualizar apps
sudo -u www-data php /var/www/nextcloud/occ app:update --all
# Listar usuarios
sudo -u www-data php /var/www/nextcloud/occ user:list
# Añadir usuario
sudo -u www-data php /var/www/nextcloud/occ user:add usuario
# Resetear contraseña
sudo -u www-data php /var/www/nextcloud/occ user:resetpassword usuario11. Redis para caché
Ya configuramos Redis en PHP y en config.php. Vamos a verificar y optimizar.
11.1 Verificar Redis
sudo systemctl status redis-server
redis-cli pingDebería responder PONG.
11.2 Optimizar Redis
Edita /etc/redis/redis.conf:
sudo nano /etc/redis/redis.confAjustes:
maxmemory 512mb
maxmemory-policy allkeys-lru
save 900 1
save 300 10
save 60 10000
appendonly noReiniciar:
sudo systemctl restart redis-server11.3 Contraseña para Redis (opcional pero recomendado)
En /etc/redis/redis.conf:
requirepass PasswordRedis123!Y en config.php:
'redis' => [
'host' => 'localhost',
'port' => 6379,
'password' => 'PasswordRedis123!',
'timeout' => 0.0,
],11.4 Verificar caché
En Nextcloud → Ajustes → Administración → Información básica:
Debería decir:
Memcache local: APCu
Memcache distribuida: Redis
Memcache locking: RedisConsulta Optimización de servidores Linux.
12. Apps esenciales
Nextcloud incluye muchas apps por defecto, pero estas son imprescindibles:
12.1 App Store
Ajustes → Apps → Tu App Store:
- Collabora Online o OnlyOffice — ofimática.
- Talk — videollamadas y chat.
- Calendar — calendario.
- Contacts — contactos.
- Mail — cliente de correo.
- Notes — notas.
- Tasks — tareas.
- Deck — gestión tipo Kanban.
- Photos — fotos con reconocimiento.
- Passwords — gestor de contraseñas.
- Bookmarks — marcadores.
- News — lector RSS.
- Maps — mapas.
12.2 Instalar apps por CLI
sudo -u www-data php /var/www/nextcloud/occ app:install calendar
sudo -u www-data php /var/www/nextcloud/occ app:install contacts
sudo -u www-data php /var/www/nextcloud/occ app:install mail
sudo -u www-data php /var/www/nextcloud/occ app:install notes
sudo -u www-data php /var/www/nextcloud/occ app:install tasks
sudo -u www-data php /var/www/nextcloud/occ app:install deck12.3 App recomendada por categoría
Ofimática:
- OnlyOffice (recomendado).
- Collabora Online (alternativa).
Comunicación:
- Talk (videollamadas).
- Mail (correo).
Productividad:
- Calendar (calendario).
- Contacts (contactos).
- Tasks (tareas).
- Deck (Kanban).
- Notes (notas).
Media:
- Photos (fotos).
- Music (música).
- Video (vídeos).
Seguridad:
- Passwords (gestor).
- Two Factor TOTP (2FA).
Otros:
- Bookmarks.
- News.
- Maps.
- Forms (formularios).
Consulta Protección contra malware: herramientas y estrategias.
13. Seguridad y hardening
13.1 Checklist
- HTTPS obligatorio.
- Contraseña admin robusta.
- 2FA obligatorio para admins.
- Cifrado SMB/Redis.
- Firewall restrictivo.
- Fail2ban.
- Actualizaciones al día.
- Backups regulares.
- No exponer a internet sin protección.
- Monitorización.
13.2 2FA con TOTP
sudo -u www-data php /var/www/nextcloud/occ app:install twofactor_totp
sudo -u www-data php /var/www/nextcloud/occ app:enable twofactor_totpForzar para admins:
En config.php:
'twofactor_enforced' => 'true',
'twofactor_enforced_groups' => ['admin'],13.3 Cifrado del servidor
Encriptación en reposo:
sudo -u www-data php /var/www/nextcloud/occ app:enable encryption
sudo -u www-data php /var/www/nextcloud/occ encryption:enable
sudo -u www-data php /var/www/nextcloud/occ encryption:encrypt-all⚠️ Guarda la clave de cifrado en un lugar seguro.
13.4 HTTPS obligatorio
Ya configurado con Certbot.
Añadir HSTS:
add_header Strict-Transport-Security "max-age=31536000; includeSubDomains" always;13.5 Firewall
sudo ufw default deny incoming
sudo ufw allow 22/tcp
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable13.6 Fail2ban
sudo apt install -y fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.localCrea /etc/fail2ban/filter.d/nextcloud.conf:
[Definition]
_groupsre = (?:(?:,?\s*"\w+":(?:"[^"]+"|\w+))*)
failregex = ^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Login failed:
^\{%(_groupsre)s,?\s*"remoteAddr":"<HOST>"%(_groupsre)s,?\s*"message":"Trusted domain error.
ignoreregex =Crea /etc/fail2ban/jail.d/nextcloud.conf:
[nextcloud]
enabled = true
port = http,https
filter = nextcloud
logpath = /var/www/nextcloud-data/nextcloud.log
maxretry = 5
bantime = 86400
findtime = 3600sudo systemctl restart fail2ban
sudo fail2ban-client status nextcloudConsulta Cómo configurar y usar Fail2ban.
13.7 Limitar acceso por IP (opcional)
En Nginx:
location / {
allow 192.168.1.0/24;
allow 200.100.50.25;
deny all;
try_files $uri $uri/ /index.php$request_uri;
}13.8 VPN para acceso remoto
Recomendado si es para uso privado:
- WireGuard.
- Tailscale.
- Cloudflare Tunnel.
Consulta Cómo montar tu propio servidor de VPN y Zero Trust.
13.9 Auditoría de seguridad
En Nextcloud → Ajustes → Administración → Resumen de seguridad:
Te muestra:
- HTTPS configurado.
- 2FA habilitado.
- Contraseñas débiles.
- Apps sin actualizar.
- Errores en logs.
Corrige todas las advertencias.
13.10 Actualizar regularmente
sudo -u www-data php /var/www/nextcloud/updater/updater.pharConsulta la sección 17.
14. Backups automáticos
14.1 Qué respaldar
- Base de datos (
nextcloud). - Configuración (
/var/www/nextcloud/config/). - Apps personalizadas.
- Datos (
/var/www/nextcloud-data/) — opcional si usas almacenamiento externo.
14.2 Script de backup
sudo nano /usr/local/bin/backup-nextcloud.sh#!/bin/bash
set -e
FECHA=$(date +%Y-%m-%d_%H-%M)
BACKUP_DIR="/backup/nextcloud"
NEXTCLOUD_DIR="/var/www/nextcloud"
mkdir -p "$BACKUP_DIR"
# Modo mantenimiento
sudo -u www-data php $NEXTCLOUD_DIR/occ maintenance:mode --on
# Backup BD
mysqldump --single-transaction -u nextcloud -pPASSWORD nextcloud | gzip > "$BACKUP_DIR/nextcloud-db-$FECHA.sql.gz"
# Backup configuración
tar -czf "$BACKUP_DIR/nextcloud-config-$FECHA.tar.gz" \
-C "$NEXTCLOUD_DIR" config apps
# Backup datos (opcional)
# rsync -av --delete /var/www/nextcloud-data/ "$BACKUP_DIR/data/"
# Modo normal
sudo -u www-data php $NEXTCLOUD_DIR/occ maintenance:mode --off
# Retención 30 días
find "$BACKUP_DIR" -name "*.gz" -mtime +30 -delete
echo "Backup completado: $FECHA"sudo chmod +x /usr/local/bin/backup-nextcloud.sh14.3 Programar con cron
sudo crontab -e0 3 * * * /usr/local/bin/backup-nextcloud.sh >> /var/log/backup-nextcloud.log 2>&114.4 Probar restauración
Esencial. Un backup no probado no es un backup.
Consulta La importancia de los backups y Cómo hacer un backup seguro en Linux.
15. Clientes: Windows, macOS, Linux, móvil
15.1 Cliente de escritorio
Descargar: https://nextcloud.com/install/#install-clients
Disponible para:
- Windows (10, 11).
- macOS (Intel, Apple Silicon).
- Linux (AppImage, deb, rpm, Flatpak).
Configuración:
- Instalar.
- Introducir URL:
https://cloud.tudominio.com. - Credenciales.
- Elegir carpetas a sincronizar.
15.2 Cliente móvil
iOS: App Store → «Nextcloud»
Android: Google Play / F-Droid → «Nextcloud»
Funciones:
- Sincronización automática de fotos.
- Acceso a archivos.
- Compartir enlaces.
- Edición de documentos.
- Chat y videollamadas (Talk).
15.3 Cliente web
Accede directamente a https://cloud.tudominio.com.
15.4 WebDAV
Acceso por WebDAV:
https://cloud.tudominio.com/remote.php/dav/files/USUARIO/Ejemplo con rclone:
rclone config
# Tipo: webdav
# URL: https://cloud.tudominio.com/remote.php/dav/files/USUARIO/
# Vendor: nextcloud
# Usuario: tu-usuario
# Contraseña: tu-password15.5 Sincronización con otros servicios
- rclone para sincronizar con Google Drive, Dropbox, S3.
- Nextcloud Desktop para sincronización continua.
Consulta Cómo usar Python y pandas para análisis de datos si integras con scripts.
16. Integración con Office
16.1 OnlyOffice
Recomendado. Alternativa open source a Microsoft Office.
Instalación:
Opción 1: Docker (recomendado):
docker run -i -t -d -p 8080:80 --restart=always \
-v /app/onlyoffice/DocumentServer/logs:/var/log/onlyoffice \
-v /app/onlyoffice/DocumentServer/data:/var/www/onlyoffice/Data \
onlyoffice/documentserverOpción 2: Instalación nativa:
Consulta https://helpcenter.onlyoffice.com/
Configurar en Nextcloud:
- Ajustes → Apps → OnlyOffice.
- Instalar y habilitar.
- Configurar URL:
http://IP_DEL_SERVIDOR:8080/.
16.2 Collabora Online
Alternativa. También open source.
Instalación:
docker run -t -d -p 9980:9980 \
-e "domain=cloud\\.tudominio\\.com" \
-e "extra_params=--o:ssl.enable=false" \
--restart always \
collabora/codeConfigurar en Nextcloud con la app Collabora Online.
16.3 Comparativa
| Aspecto | OnlyOffice | Collabora |
|---|---|---|
| Compatible MS Office | ✅ Excelente | ✅ Buena |
| Interfaz | Moderna | Clásica |
| Recursos | Más | Menos |
| Instalación | Fácil (Docker) | Fácil (Docker) |
| Recomendación | ✅ Para uso general | Para recursos limitados |
Consulta Qué es Docker.
17. Actualizaciones
17.1 Backup antes de actualizar
sudo /usr/local/bin/backup-nextcloud.sh17.2 Actualizar con el updater
sudo -u www-data php /var/www/nextcloud/updater/updater.pharEl updater:
- Verifica la versión actual.
- Descarga la nueva.
- Reemplaza archivos.
- Actualiza la base de datos.
- Reinicia.
17.3 Actualización mayor
Para saltos de versión (ej: 28 → 30):
- Backup completo.
- Modo mantenimiento:
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --on- Actualizar paso a paso (no saltar versiones mayores).
- Modo normal:
sudo -u www-data php /var/www/nextcloud/occ maintenance:mode --off⚠️ Nextcloud solo permite saltos de una versión mayor a la siguiente. Ej: 28 → 29 → 30, no 28 → 30 directamente.
17.4 Actualizar apps
sudo -u www-data php /var/www/nextcloud/occ app:update --all17.5 Verificar
sudo -u www-data php /var/www/nextcloud/occ statusConsulta Guía Completa de Linux.
18. Troubleshooting
18.1 Página en blanco
Diagnóstico:
sudo tail -f /var/log/nginx/nextcloud.error.log
sudo tail -f /var/www/nextcloud-data/nextcloud.log
sudo tail -f /var/log/php8.2-fpm.logCausas:
- Falta extensión PHP.
- Permisos incorrectos.
- Configuración de BD incorrecta.
Solución:
sudo chown -R www-data:www-data /var/www/nextcloud
sudo chmod -R 750 /var/www/nextcloud
sudo -u www-data php /var/www/nextcloud/occ maintenance:repair18.2 «Trusted domain error»
Solución: añade el dominio a trusted_domains en config.php.
18.3 «Internal Server Error»
Diagnóstico:
sudo tail -f /var/log/nginx/nextcloud.error.logCausas comunes:
- Permisos.
- Falta extensión.
.htaccess(si usas Apache).
18.4 No puedo subir archivos grandes
Ajustar:
php.ini:upload_max_filesize,post_max_size.- Nginx:
client_max_body_size. config.php:max_filesize.
18.5 Sincronización lenta
Causas:
- Servidor saturado.
- Disco lento.
- PHP-FPM mal configurado.
Solución:
- Aumentar
pm.max_children. - SSD NVMe.
- Redis para caché.
18.6 Redis no funciona
Diagnóstico:
redis-cli ping
sudo systemctl status redis-serverCausas:
- Redis no arranca.
- Contraseña incorrecta.
- Configuración de
config.phpcon errores.
18.7 Base de datos llena
Solución:
sudo du -sh /var/lib/mysql/nextcloud/Limpiar versiones antiguas:
sudo -u www-data php /var/www/nextcloud/occ versions:cleanup18.8 Errores tras actualización
Solución:
sudo -u www-data php /var/www/nextcloud/occ maintenance:repair
sudo -u www-data php /var/www/nextcloud/occ upgrade18.9 SSL no funciona
sudo certbot renew
sudo nginx -t
sudo systemctl reload nginx18.10 Ver logs
# Nextcloud
sudo tail -f /var/www/nextcloud-data/nextcloud.log
# Nginx
sudo tail -f /var/log/nginx/nextcloud.error.log
# PHP-FPM
sudo tail -f /var/log/php8.2-fpm.log
# MariaDB
sudo tail -f /var/log/mysql/error.logConsulta Análisis de registros en Linux.
19. FAQ
¿Qué es Nextcloud?
Nextcloud es una plataforma de almacenamiento y colaboración en la nube auto-hospedada. Alternativa a Google Drive, Dropbox, OneDrive.
Precursor: fork de ownCloud (2016).
¿Nextcloud es gratis?
Sí, en su versión Community Edition.
Nextcloud Enterprise es de pago (soporte, features adicionales).
¿Nextcloud o ownCloud?
- Nextcloud: más popular, más apps, actualizaciones frecuentes.
- ownCloud: enfoque enterprise, integración Microsoft 365.
Recomendación: Nextcloud para uso general.
Consulta Guía de ownCloud.
¿Necesito un servidor potente?
No para empezar:
- <10 usuarios: 2 GB RAM.
- 10-50 usuarios: 4-8 GB RAM.
- 50+ usuarios: 8+ GB RAM.
El disco es lo que más crece.
¿Cuánto disco necesito?
Depende del uso:
- Uso personal: 100 GB – 1 TB.
- PyME: 1-5 TB.
- Empresa: 5+ TB.
Consejo: usa almacenamiento externo (NAS, S3) para los datos.
¿Cómo migro desde Google Drive?
Con rclone:
rclone config
# Configurar Google Drive como origen
# Configurar Nextcloud como destino
rclone copy gdrive: nextcloud:¿Cómo añado usuarios?
Desde el panel admin:
- Usuarios → Añadir.
- Nombre, email, contraseña.
O con occ:
sudo -u www-data php /var/www/nextcloud/occ user:add usuario¿Cómo comparto archivos?
- Con usuarios: compartir con usuarios/grupos.
- Enlace público: con o sin contraseña.
- Federación: con otras instancias Nextcloud.
¿Cómo cifro los datos?
Server-side encryption:
sudo -u www-data php /var/www/nextcloud/occ encryption:enableEnd-to-end encryption (solo para carpetas específicas):
- Instalar app End-to-End Encryption.
¿Nextcloud soporta 2FA?
Sí. Instala twofactor_totp:
sudo -u www-data php /var/www/nextcloud/occ app:install twofactor_totpConsulta la sección 13.2.
¿Cómo hago backup?
Consulta la sección 14.
Lo importante: backup de BD + archivos + configuración.
¿Cómo actualizo?
sudo -u www-data php /var/www/nextcloud/updater/updater.pharBackup antes.
¿Nextcloud afecta al SEO?
No, si lo usas como nube privada.
Consejo: márcalo noindex si es cloud.tudominio.com.
¿Puedo usar Nextcloud para sincronizar código?
Sí, pero no es ideal. Para código usa Git (GitLab, Gitea).
¿Nextcloud soporta Office?
Sí, con OnlyOffice o Collabora. Consulta la sección 16.
¿Puedo migrar a Nextcloud desde otro servicio?
Sí:
- Desde Google Drive: con rclone.
- Desde ownCloud: herramienta de migración.
- Desde Dropbox: con rclone.
¿Cuánto cuesta Nextcloud Enterprise?
Según tamaño. Para 50 usuarios, ~3.000-5.000 €/año.
Community Edition: gratis.
¿Nextcloud funciona con Docker?
Sí. Imagen oficial:
docker pull nextcloudConsulta Qué es Docker.
¿Nextcloud soporta LDAP/AD?
Sí. Instala la app user_ldap y configura en el panel.
Consulta Gestión de identidades y accesos (IAM).
¿Cómo añado almacenamiento externo?
Apps compatibles:
- S3, SMB, NFS, FTP, WebDAV.
- Google Drive, Dropbox, OneDrive.
Ajustes → Almacenamiento externo.
¿Nextcloud soporta cuotas?
Sí. En el panel de usuarios.
sudo -u www-data php /var/www/nextcloud/occ user:setting usuario files quota 10GB¿Nextcloud es seguro?
Sí, si lo configuras bien:
- HTTPS.
- 2FA.
- Fail2ban.
- Cifrado.
- Actualizaciones.
Consulta Guía Completa de Ciberseguridad.
¿Cómo hago streaming de vídeo?
Nextcloud puede servir vídeos, pero para streaming profesional mejor Jellyfin o Plex.
¿Nextcloud tiene API?
Sí. API REST completa.
Documentación: https://docs.nextcloud.com/server/latest/developer_manual/client_apis/
¿Nextcloud soporta Kubernetes?
Sí. Helm chart oficial.
Consulta Qué es Kubernetes.
20. Conclusión
Nextcloud es la plataforma de nube auto-hospedada más popular del mundo. Con +400.000 instalaciones y +400 apps, es la alternativa open source más completa a Google Drive, Dropbox y Microsoft 365.
Puntos clave:
- Instalación completa con Nginx + MariaDB + PHP-FPM.
- SSL obligatorio con Let’s Encrypt.
- Redis para caché y locking.
- Configuración segura con 2FA, Fail2ban, cifrado.
- Apps esenciales (Talk, Office, Calendar, Mail…).
- Integración con OnlyOffice/Collabora.
- Clientes para Windows, macOS, Linux, móvil.
- Backups automáticos.
- Actualizaciones fáciles.
- Troubleshooting extenso.
Si quieres seguir aprendiendo:






