Por qué autoalojar tu almacenamiento en la nube
Servicios como Google Drive o Dropbox son cómodos, pero tus datos quedan en servidores ajenos. Con Nextcloud puedes tener sincronización de archivos, calendario, contactos y mucho más bajo tu propio control. Tú decides dónde se almacenan los datos, quién accede y durante cuánto tiempo se conservan.
Requisitos previos
Necesitas un servidor Linux con acceso root y una pila LAMP o LEMP funcional:
- Sistema operativo: Debian 12, Ubuntu 22.04+ o similar
- Servidor web: Apache o Nginx
- Base de datos: MariaDB 10.6+ o MySQL 8.0+
- PHP: 8.2 o superior con módulos necesarios — la versión mínima sube con cada versión mayor de Nextcloud, comprueba la tabla de compatibilidad oficial antes de instalar (Ubuntu 22.04 LTS solo trae PHP 8.1 en sus repos oficiales, así que necesitarás un repositorio como Ondřej Surý’s PPA para una versión más reciente)
El proceso completo, de arriba a abajo:
1. Instalar dependencias (Apache, MariaDB, PHP)
│
▼
2. Preparar la base de datos ("nextcloud", usuario "nextcloud")
│
▼
3. Descargar y extraer Nextcloud en /var/www/nextcloud
│
▼
4. Configurar Apache (nube.tudominio.com) y ajustar PHP
│
▼
5. Asistente de primer acceso en http://nube.tudominio.com
│
▼
6. Configurar cron (*/5 * * * * cron.php) para tareas en segundo plano
Instalar dependencias
sudo apt update && sudo apt upgrade -y
sudo apt install apache2 mariadb-server libapache2-mod-php \
php php-gd php-mysql php-curl php-mbstring \
php-intl php-imagick php-xml php-zip php-bcmath php-gmp \
unzip wget -y
Preparar la base de datos
Accede a MariaDB y crea la base de datos y el usuario dedicado para Nextcloud:
sudo mysql -u root
CREATE DATABASE nextcloud CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci;
CREATE USER 'nextcloud'@'localhost' IDENTIFIED BY 'tu_password_segura';
GRANT ALL PRIVILEGES ON nextcloud.* TO 'nextcloud'@'localhost';
FLUSH PRIVILEGES;
EXIT;
## Importante
Usa una contraseña robusta para el usuario de la base de datos. Nunca dejes la contraseña de ejemplo en producción.
Descargar e instalar Nextcloud
Descarga la última versión estable desde el sitio oficial y extrae el archivo en el directorio web:
cd /tmp
wget https://download.nextcloud.com/server/releases/latest.zip
sudo unzip latest.zip -d /var/www/
sudo chown -R www-data:www-data /var/www/nextcloud
Configurar Apache
Crea un virtualhost dedicado para Nextcloud:
sudo nano /etc/apache2/sites-available/nextcloud.conf
<VirtualHost *:80>
ServerName nube.tudominio.com
DocumentRoot /var/www/nextcloud
<Directory /var/www/nextcloud>
Require all granted
AllowOverride All
Options FollowSymLinks MultiViews
</Directory>
ErrorLog ${APACHE_LOG_DIR}/nextcloud-error.log
CustomLog ${APACHE_LOG_DIR}/nextcloud-access.log combined
</VirtualHost>
Activa el sitio y los módulos necesarios:
sudo a2ensite nextcloud.conf
sudo a2enmod rewrite headers env dir mime
sudo systemctl restart apache2
Alternativa con Nginx
Si prefieres Nginx, la configuración del bloque server sería similar. Apunta el root a /var/www/nextcloud y asegúrate de pasar las peticiones PHP a php-fpm mediante un bloque location ~ \.php$ con fastcgi_pass.
Ajustar PHP
Edita el archivo de configuración de PHP para mejorar el rendimiento:
sudo nano /etc/php/8.1/apache2/php.ini
Modifica estos valores:
memory_limit = 512M
upload_max_filesize = 16G
post_max_size = 16G
max_execution_time = 3600
opcache.enable = 1
opcache.memory_consumption = 128
opcache.interned_strings_buffer = 16
opcache.max_accelerated_files = 10000
opcache.revalidate_freq = 1
sudo systemctl restart apache2
Primer acceso y configuración del administrador
Abre el navegador y accede a http://nube.tudominio.com. El asistente de instalación te pedirá:
- Usuario administrador: elige un nombre y contraseña seguros.
- Directorio de datos: por defecto
/var/www/nextcloud/data. Puedes cambiarlo a otra partición con más espacio. - Base de datos: selecciona MySQL/MariaDB e introduce los datos creados antes (usuario
nextcloud, contraseña y nombre de base de datosnextcloud).
Haz clic en instalar y espera a que termine el proceso.
Habilitar aplicaciones
Nextcloud incluye un ecosistema de aplicaciones. Desde el panel de administración, accede a Aplicaciones y activa las que necesites:
- Calendar: calendario compatible con CalDAV
- Contacts: libreta de direcciones con CardDAV
- Notes: notas en formato Markdown
- Talk: videollamadas y chat
- Office: edición colaborativa de documentos (requiere Collabora o OnlyOffice)
Las apps más relevantes para sacarle partido a una instalación autoalojada son estas cuatro:
- Nextcloud Talk: chat y videollamadas cifradas entre usuarios de tu instancia, sin depender de Zoom, Meet o Teams. Para grupos de más de unos pocos usuarios simultáneos conviene desplegar aparte el componente High Performance Backend (basado en Janus), pero para uso doméstico o de equipo pequeño funciona directamente con el servidor de señalización interno.
- Nextcloud Office: edición colaborativa de documentos ofimáticos (Writer, Calc, Impress) directamente en el navegador. No viene integrada por defecto: necesitas desplegar un servidor Collabora Online (o OnlyOffice) aparte, normalmente vía Docker, y apuntar la app a esa URL desde Configuración > Office.
- Memories (o Nextcloud Photos, más básica): gestión de fotos con línea de tiempo, reconocimiento facial y álbumes. Si buscas específicamente una galería con reconocimiento facial más pulido y sincronización automática desde el móvil, la alternativa dedicada Immich tiene un enfoque más especializado; Memories tiene sentido cuando ya vives dentro del ecosistema Nextcloud y no quieres mantener dos servicios separados.
- Nextcloud Deck: tablero kanban tipo Trello, útil para gestionar tareas de forma privada sin depender de un SaaS externo.
La instalación se hace desde la interfaz (Aplicaciones > buscar el nombre > Descargar y activar) o por línea de comandos con occ, la herramienta de administración de Nextcloud:
sudo -u www-data php /var/www/nextcloud/occ app:install deck
sudo -u www-data php /var/www/nextcloud/occ app:enable deck
occ app:list te muestra qué apps están activas e inactivas en tu instancia en cualquier momento.
Configurar tareas cron
Para que las tareas de fondo se ejecuten de forma fiable, configura un cron del sistema en lugar del AJAX por defecto:
sudo crontab -u www-data -e
Añade esta línea:
*/5 * * * * php -f /var/www/nextcloud/cron.php
Después, en Configuración > Administración > Ajustes básicos, selecciona Cron como método de tareas en segundo plano.
Solución de problemas comunes
Error “Access through untrusted domain”
Si accedes a tu instancia por una IP o un dominio distinto al que usaste en el asistente de instalación, Nextcloud rechaza la petición con un aviso de dominio no confiable. Esto es una medida de seguridad, no un fallo: evita que alguien redirija tráfico hacia tu servidor con un Host falsificado. Se soluciona añadiendo cada dominio o IP adicional al array trusted_domains de config/config.php:
sudo nano /var/www/nextcloud/config/config.php
'trusted_domains' =>
array (
0 => 'nube.tudominio.com',
1 => '192.168.1.50',
2 => 'nube.tudominio.com:8443',
),
También puedes añadir un dominio nuevo sin editar el array a mano:
sudo -u www-data php /var/www/nextcloud/occ config:system:set trusted_domains 2 --value=nube.tudominio.com
Error de memory_limit al subir archivos grandes o ejecutar tareas en segundo plano
Aunque ya hayas ajustado memory_limit = 512M en el php.ini de Apache durante la instalación (ver más arriba), es fácil que el límite efectivo siga siendo el de otro SAPI de PHP si usas PHP-FPM en vez de mod_php, o que un cambio no se aplique porque falta reiniciar el servicio correcto. Comprueba el valor que PHP está usando realmente en ese momento:
php -i | grep memory_limit
Si el valor mostrado no coincide con el que configuraste, revisa si tu instalación usa PHP-FPM (/etc/php/8.1/fpm/php.ini, distinto del apache2/php.ini) y reinicia el servicio correspondiente después de modificarlo:
sudo systemctl restart php8.1-fpm # si usas PHP-FPM
sudo systemctl restart apache2 # si usas mod_php
Nextcloud recomienda un mínimo de 512M; si sigues viendo errores al subir archivos muy grandes o al ejecutar el escaneo de archivos, sube el valor a 1G y revisa también upload_max_filesize y post_max_size, que deben ser igual o mayores que el tamaño de archivo que quieres subir.
El cron de mantenimiento no se ejecuta
Si en Configuración > Administración > Ajustes básicos ves un aviso de que el cron “no se ha ejecutado en las últimas horas”, casi siempre es porque la línea de crontab no llegó a añadirse para el usuario www-data, o el propio cron.php está fallando en silencio. Comprueba que la tarea existe:
sudo crontab -u www-data -l
Y ejecuta el script manualmente para ver el error real si lo hay:
sudo -u www-data php -f /var/www/nextcloud/cron.php
Un fallo típico aquí es que www-data no tenga permisos de escritura sobre el directorio de datos, o que el memory_limit en el PHP de línea de comandos (cli/php.ini, otro archivo distinto a los dos anteriores) sea demasiado bajo para las tareas en segundo plano.
Recomendaciones finales
- HTTPS: configura un certificado SSL con Let’s Encrypt usando
certbot. - Firewall: abre únicamente los puertos 80 y 443, siguiendo la guía de firewalld, UFW y nftables. Bloquea todo lo demás.
- Actualizaciones: revisa las actualizaciones periódicamente desde el panel de administración o con
sudo -u www-data php /var/www/nextcloud/updater/updater.phar. - Backups: programa copias de seguridad del directorio de datos y de la base de datos, por ejemplo con la estrategia de backups incrementales con rsync.
## Advertencia
Nunca expongas Nextcloud a internet sin cifrado. Sin HTTPS, las credenciales y los archivos viajan en texto plano y pueden interceptarse en cualquier punto de la red.
Con Nextcloud funcionando, tienes tu propia nube privada donde tus archivos, calendarios y contactos permanecen bajo tu control total.
## Nota
✍️ Transparencia: Este artículo ha sido creado con el apoyo de herramientas de inteligencia artificial. Toda la información técnica ha sido revisada y validada por el autor antes de su publicación.