Nextcloud AIO
Instalación Nextcloud AIO en Docker
Instalación de nextcloud/all-in-one en Docker. Vamos a usar la imagen oficial de Nextcloud AIO.
Requisitos
Para poder realizar esta configuración se necesita:
- Servidor GNU Linux (ver Securizar Ubuntu Server)
- Cortafuegos FirewallD (UFW tiene problemas con Docker)
- Docker Engine (ver Docker Engine)
- Módulo: Docker Compose (para PRO)
- NextCloud AIO sólo soporta Docker (para podman hay que generar ficheros compose manualmente)
- Nginx (ver LEMP)
- Usado como proxy inverso.
¿Qué contiene Nextcloud AIO?
Nextcloud All In One (AIO) es la forma más sencilla de instalar Nextcloud de forma que ya venga con todo el middleware instalado y configurado. Contiene los siguientes componentes:
- Nextcloud
- Base ded datos: PostgreSQL
- Nextcloud soporta otras bases de datos, pero no en AIO.
- Servidor web: Apache HTTP Server
- Podría usarse directamente para conectar, pero para poder tener más servicios en el mismo servidor usaremos Nginx como proxy inverso con Virtual Hosts para cada aplicación.
- Servicios:
- Nextcloud Files (Client Push)
- Cachés Redis & APCU
- Nextcloud Office (opcional)
- Nextcloud Talk y servidor TURN para Talk (opcional)
- Nextcloud Talk servidor de grabación (opcional)
- BorgBackup para backups (opcional)
- Antivirus ClamAV (opcional)
- Más
Entorno de DEV
Como entorno de DEV se va a usar Docker Desktop.
Descargar imagen
Vamos a usar la imagen que es la latest a día de hoy (20260409_094910). Contiene Nexcloud 33.
docker pull ghcr.io/nextcloud-releases/all-in-one:latest
Nota: vamos a usar latest sin fijar versión exacta para tener actualizaciones automáticas. En caso de no querer esto fijar versión de repositorio estable.
Ejecutar contenedor en Docker Desktop (DEV)
docker run -d \
--init \
--sig-proxy=false \
--name nextcloud-aio-mastercontainer \
--restart unless-stopped \
--publish 127.0.0.1:8443:8080 \
--env APACHE_PORT=8081 \
--env APACHE_IP_BINDING=0.0.0.0 \
--env APACHE_ADDITIONAL_NETWORK="" \
--env SKIP_DOMAIN_VALIDATION=true \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
--volume //var/run/docker.sock:/var/run/docker.sock:ro \
ghcr.io/nextcloud-releases/all-in-one:latest
Nota 1: no se puede cambiar las siguientes configuraciones
--name nextcloud-aio-mastercontainer \
--volume nextcloud_aio_mastercontainer:/mnt/docker-aio-config \
Nota 2: para cambiar el puerto de la consola administrativa "--publish 127.0.0.1:8081:8080".
Nota 3: para cambiar el puerto de acceso a Nextcloud "--env APACHE_PORT=9081 \".
Nota 4: para entornos locales de prueba hay que indicar "--env SKIP_DOMAIN_VALIDATION=true". En PRO no nos hará falta.
Pruebas
- Acceso a la consola administrativa: https://localhost:8443/.
- Acceso a la Nextcloud: http://localhost:8081/
Entorno de PRO
En el entorno de PRO se va a desplegar transformando la configuración de Docker Desktop en fichero YAML de Docker Composer.
Configurar Virtual Host para Keycloak
- Añadir Virtual Host:
sudo -i
vi /etc/nginx/sites-available/nube.culturetas.net
- Crear carpeta para VirtualHost:
mkdir /var/www/nube.culturetas.net
- Activar Virtual Host:
ln -s /etc/nginx/sites-available/nube.culturetas.net /etc/nginx/sites-enabled/nube.culturetas.net
systemctl reload nginx
Generar certificados Let's Encrypt
certbot --nginx
Crear carpetas para Keycloak
mkdir -p /opt/nextcloud-aio/data
Descargar imagen
Vamos a usar la imagen que es la latest a día de hoy (20260409_094910). Contiene Nexcloud 33.
Nota: vamos a usar latest sin fijar versión exacta para tener actualizaciones automáticas. En caso de no querer esto fijar versión de repositorio estable.
Generar fichero Compose YAML
vi /opt/nextcloud-aio/compose.yaml
chmod 640 /opt/nextcloud-aio/compose.yaml
Arrancar OpenLDAP (manual)
cd /opt/nextcloud-aio
docker compose up -d
Parar OpenLDAP (manual)
cd /opt/nextcloud-aio
docker compose down
Arrancar OpenLDAP (con SystemD)
- Crear fichero SystemD
vi /etc/systemd/system/nextcloud-aio.service
[Unit]
Description=Nextcloud AIO(Docker Compose)
After=docker.service network-online.target
Requires=docker.service
Wants=network-online.target
[Service]
Type=oneshot
RemainAfterExit=yes
WorkingDirectory=/opt/nextcloud-aio
ExecStart=/usr/bin/docker compose up --detach --remove-orphans --quiet-pull
ExecStop=/usr/bin/docker compose down --remove-orphans --volumes --timeout 30
TimeoutStartSec=180
TimeoutStopSec=120
Restart=on-failure
RestartSec=7
[Install]
WantedBy=multi-user.target
- Arrancar y habilitar
systemctl daemon-reload
systemctl start nextcloud-aio
systemctl enable nextcloud-aio