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.
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> # Usuario con permisos de lectura exclusivo para obtener métricas NEXTCLOUD_PASSWORD: <CONTRASEÑA> ports: - "9205:9205" networks: - net_backend networks: internal_net: name: net_backend external: true net_backend: external: true volumes: datanextcloud: confignextcloud: appsnextcloud: themenextcloud:
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'
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:
<?php $CONFIG = array ( 'htaccess.RewriteBase' => '/', '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.