EbenezerIT · Services
Inicio/Guías/Nube Privada
Nextcloud Dificultad Tiempo · ~60 min Descargar PDF Vídeo en YouTube · próximamente

Nube Privada: despliegue paso a paso

Nextcloud es la alternativa más limpia a Google Drive cuando no quieres depender de la nube de un tercero. Funciona en cualquier VPS modesto y se integra con casi todo: documentos, calendarios, contactos, notas y fotos.

Pila
Nextcloud
Tiempo
~60 min
Pasos
4
Probado en
Ubuntu 24.04 LTS
Si prefieres que lo haga yo
130 €

VPS con Ubuntu 24.04 (2 GB de RAM recomendados), Docker con Docker Compose (guía aquí) y un subdominio, por ejemplo nube.tudominio.com, apuntando a su IP. Usaremos la imagen oficial detrás de Nginx como proxy inverso.

Antes de copiar

En los comandos verás tudominio.com: sustitúyelo siempre por tu dominio real.

Paso 01

Crear la estructura de directorios

Separa datos, configuración y base de datos en carpetas propias: facilita las copias de seguridad y permite mover el servicio de máquina.

estructura.sh
sudo mkdir -p /opt/nextcloud/{db,html,data}
cd /opt/nextcloud
Paso 02

Definir el docker-compose.yml

Este compose levanta Nextcloud y MariaDB. Fíjate en el puerto: 127.0.0.1:8080 hace que Nextcloud solo sea accesible desde el propio servidor, a través del proxy.

docker-compose.yml
services:
  db:
    image: mariadb:10.11
    restart: unless-stopped
    command: --transaction-isolation=READ-COMMITTED --binlog-format=ROW
    volumes:
      - ./db:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: cambia-esto
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: cambia-esto-tambien

  app:
    image: nextcloud:stable-apache
    restart: unless-stopped
    ports: ["127.0.0.1:8080:80"]
    depends_on: [db]
    volumes:
      - ./html:/var/www/html
      - ./data:/var/www/html/data
    environment:
      MYSQL_HOST: db
      MYSQL_DATABASE: nextcloud
      MYSQL_USER: nextcloud
      MYSQL_PASSWORD: cambia-esto-tambien
      NEXTCLOUD_TRUSTED_DOMAINS: nube.tudominio.com
      OVERWRITEPROTOCOL: https

Docker se salta UFW

Un puerto publicado como "8080:80" queda abierto a Internet aunque UFW diga lo contrario, porque Docker escribe sus propias reglas de firewall. Publica siempre en 127.0.0.1 lo que vaya detrás de un proxy.

Paso 03

Arrancar y completar el asistente

Levanta el stack, configura el proxy siguiendo la guía de Nginx (apuntando a 127.0.0.1:8080) y entra en https://nube.tudominio.com para crear la cuenta de administrador.

arrancar.sh
sudo docker compose up -d
sudo docker compose logs -f app
Paso 04

Ajustes recomendados tras la instalación

Estos comandos eliminan las advertencias del panel de administración (cron, índices de la base de datos).

ajustes.sh
sudo docker compose exec -u www-data app php occ db:add-missing-indices
sudo docker compose exec -u www-data app php occ maintenance:repair --include-expensive

# Cron real cada 5 minutos (sustituye al modo AJAX)
echo "*/5 * * * * root docker compose -f /opt/nextcloud/docker-compose.yml exec -u www-data -T app php cron.php" \
  | sudo tee /etc/cron.d/nextcloud

¿Prefieres que lo haga por ti?

Lo implemento por ti por 130 €, con la configuración de seguridad inicial y esta guía aplicada a tu servidor.

Contratar