====== Nextcloud ======
**Nextcloud** es una plataforma de almacenamiento y colaboración en la nube de código abierto que permite sincronizar, compartir y acceder a archivos desde cualquier dispositivo.
Ofrece funcionalidades similares a servicios como Google Drive o Dropbox, pero con la ventaja de que los datos permanecen bajo control del usuario o la organización.
Además, cuenta con integración de usuarios, aplicaciones adicionales, uso compartido seguro y una interfaz web moderna, lo que lo convierte en una excelente solución para entornos de trabajo colaborativo y educativos.
----
===== docker-compose.yml =====
El archivo **docker-compose.yml** se compone de la siguiente manera:
services:
nextcloud:
image: nextcloud
container_name: nextcloud
restart: unless-stopped
ports:
- 8090:80
volumes:
- datanextcloud:/var/www/html/data # Persistir archivos de usuarios
- confignextcloud:/var/www/html/config # Persistir configuración de nexcloud
- appsnextcloud:/var/www/html/custom_apps # Persistir apps agregadas
- themenextcloud:/var/www/html/themes/mi_tema_personalizado # Persistir temas personalizados
env_file: nextcloud.env
networks:
- internal_net
- net_backend
# Exportador de metricas para prometheus
nextcloud-exporter:
container_name: nextcloud-exporter
image: xperimental/nextcloud-exporter:latest
environment:
NEXTCLOUD_SERVER: https://nextcloud.TUDOMINIO.com.ar
NEXTCLOUD_USERNAME: # Usuario con permisos de lectura exclusivo para obtener métricas
NEXTCLOUD_PASSWORD:
ports:
- "9205:9205"
networks:
- net_backend
networks:
internal_net:
name: net_backend
external: true
net_backend:
external: true
volumes:
datanextcloud:
confignextcloud:
appsnextcloud:
themenextcloud:
----
===== Variables de entorno =====
Las variables de entorno configuradas en el **docker-compose.yml** son las siguientes:
# Nombre del contenedor que corre la base de datos
POSTGRES_HOST: 'NOMBRE_HOST_DB'
# Nombre que utilizada la base de datos
POSTGRES_DB: 'NOMBRE_DB'
# Usuario a utilizar
POSTGRES_USER: 'USER'
# Contraseña
POSTGRES_PASSWORD: 'PASSWORD'
NEXTCLOUD_ADMIN_USER: 'USER'
NEXTCLOUD_ADMIN_PASSWORD: 'PASSWORD'
# Limite de carga de archivos
PHP_UPLOAD_LIMIT: '2G'
# Limite de memoria PHP
PHP_MEMORY_LIMIT: '4G'
# Conexión por HTTPS
OVERWRITEPROTOCOL: 'HTTPS'
# URL
OVERWRITECLIURL: 'nextcloud.TUDOMINIO.com.ar'
----
===== Configuración de Nextcloud =====
Para la configuración del servicio, utilizamos el archivo **config.php**, el cual es el archivo principal de configuración del sistema.
Este archivo define cómo se comporta la instalación, incluyendo los dominios permitidos, conexiones a base de datos, almacenamiento, seguridad y otras opciones avanzadas.
Se encuentra en la ruta **/var/www/html/config/** dentro del contenedor de Nextcloud.
Para acceder al contenedor, ejecutamos el siguiente comando desde el host:
docker exec -it nextcloud /bin/bash
Una vez dentro del contenedor, editamos el archivo de configuración con:
nano /var/www/html/config/config.php
El archivo debe quedar configurado de la siguiente manera:
'/',
'memcache.local' => '\\OC\\Memcache\\APCu',
'apps_paths' =>
array (
0 =>
array (
'path' => '/var/www/html/apps',
'url' => '/apps',
'writable' => false,
),
1 =>
array (
'path' => '/var/www/html/custom_apps',
'url' => '/custom_apps',
'writable' => true,
),
),
'overwriteprotocol' => 'HTTPS',
'overwrite.cli.url' => 'nextcloud.TUDOMINIO.com.ar',
'upgrade.disable-web' => true,
'passwordsalt' => 'ICF9Hb9lNp5bt2jAmV2nrjNg0Qjm+q',
'secret' => 'IPybR1aNDf8Y2v48rWs8AC85JEBLstwCr4oJa8pSTZWcjqC+',
'trusted_domains' =>
array (
0 => 'nextcloud.TUDOMINIO.com.ar',
),
'trusted_proxies' =>
array (
0 => 'IP_INTERNA_PROXY',
),
'forwarded_for_headers' =>
array (
0 => 'HTTP_X_FORWARDED_FOR',
1 => 'HTTP_X_FORWARDED',
2 => 'HTTP_X_FORWARDED_PROTO',
),
'default_phone_region' => 'AR',
'datadirectory' => '/var/www/html/data',
'dbtype' => 'MOTOR_DB',
'version' => '31.0.9.1',
'dbname' => 'NOMBRE_DB',
'dbhost' => 'NOMBRE_HOST_DB',
'dbport' => '5432',
'dbtableprefix' => 'oc_',
'dbuser' => 'USUARIO_DB',
'dbpassword' => 'PASSWORD',
'installed' => true,
'instanceid' => 'och9a9wf7sqs',
'mail_smtpmode' => 'smtp',
'mail_smtpsecure' => 'ssl',
'mail_sendmailmode' => 'smtp',
'mail_domain' => 'TUDOMINIO.com.ar',
'mail_from_address' => 'TUDOMINIO',
'mail_smtphost' => 'nextcloud.TUDOMINIO.com.ar',
'mail_smtpport' => '443',
'loglevel' => 3,
'maintenance' => false,
);
----
Con esta configuración, **Nextcloud** queda completamente funcional y accesible desde el dominio:
https://nextcloud.TUDOMINIO.com.ar
El cual fue previamente definido en **trusted_domains**, utilizando la base de datos **PostgreSQL** configurada en el mismo entorno Docker.