ownCloud Core: Servidor de archivos autohospedado con WebDAV, CalDAV y CardDAV
Componente principal de ownCloud Classic para almacenamiento, sincronización y uso compartido de archivos en infraestructura propia
Vídeo tutorial en YouTube
Mira el vídeo completo sobre cómo instalar y usar ownCloud Core: Servidor de archivos autohospedado con WebDAV, CalDAV y CardDAV en el canal GENBYTE:
¿Qué es ownCloud Core: Servidor de archivos autohospedado con WebDAV, CalDAV y CardDAV?
ownCloud Core es el componente del lado del servidor de ownCloud Classic, una plataforma de almacenamiento y sincronización de archivos utilizada por más de 200 millones de usuarios en todo el mundo. Proporciona servidores WebDAV, CalDAV y CardDAV, arquitectura de plugins para aplicaciones, gestión de usuarios y grupos, soporte de cifrado, backends de almacenamiento externo y una API REST completa. El servidor se ejecuta en PHP con soporte para bases de datos MySQL, MariaDB, PostgreSQL y SQLite. El proyecto forma parte del ecosistema ownCloud Classic y está disponible como imagen Docker en Docker Hub bajo el nombre owncloud/server.
Características principales
Servidores DAV integrados
Incluye servidores WebDAV, CalDAV y CardDAV para sincronización de archivos, calendarios y contactos mediante protocolos estándar.
Arquitectura de aplicaciones
Sistema de plugins que permite extender la funcionalidad con aplicaciones como Activity, Calendar, Contacts y muchas otras desarrolladas por la comunidad.
Gestión de usuarios y grupos
Administración completa de cuentas de usuario, grupos, cuotas de almacenamiento y permisos de acceso.
Cifrado de datos
Soporte para cifrado del lado del servidor para proteger los archivos almacenados.
Almacenamiento externo
Backends de almacenamiento externo que permiten integrar servicios como S3, FTP, WebDAV, Windows Network Drives y otros.
API REST completa
Interfaz programática para integración con aplicaciones de terceros y automatización.
Multi-base de datos
Compatibilidad con MySQL, MariaDB, PostgreSQL y SQLite como backends de base de datos.
Imagen Docker oficial
Disponible en Docker Hub como owncloud/server para despliegue containerizado sencillo.
Requisitos del sistema
- PHP (versión compatible con la rama actual)
- Servidor web (Apache con mod_php o Nginx con PHP-FPM)
- Base de datos: MySQL, MariaDB, PostgreSQL o SQLite
- Composer v2 (para desarrollo)
- Yarn y Node.js v14 o superior (para desarrollo de assets frontend)
- Extensiones PHP requeridas según documentación oficial
Instalación con Docker Compose
Despliegue con Docker (imagen oficial)
La imagen oficial está disponible en Docker Hub. Para producción se recomienda seguir el manual de instalación oficial que cubre configuración de base de datos, volúmenes persistentes, proxy inverso y certificados TLS.
-p 8080:80 \
-v owncloud_data:/var/www/html/data \
-v owncloud_config:/var/www/html/config \
owncloud/server
Instalación manual (método tradicional)
Descargar el paquete desde el sitio oficial, extraer en el directorio web, configurar virtual host, crear base de datos y ejecutar el asistente de instalación web. Consultar el manual de instalación oficial para pasos detallados según distribución y versión de PHP.
wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2
tar -xjf owncloud-complete-latest.tar.bz2
sudo mv owncloud /var/www/html/
sudo chown -R www-data:www-data /var/www/html/owncloud
Entorno de desarrollo
Clonar el repositorio, instalar dependencias PHP con Composer y assets frontend con Yarn, luego compilar con make.
cd core
composer install
yarn install
make
Acceder al proyecto
Interfaz web
Acceder mediante navegador a la URL configurada (puerto 80/443 en instalación manual, puerto mapeado en Docker). El asistente de configuración inicial solicita credenciales de administrador y conexión a base de datos.
Clientes de sincronización
Clientes oficiales de escritorio (Windows, macOS, Linux) y móviles (iOS, Android) disponibles en ownCloud.com para sincronización de archivos.
Acceso WebDAV/CalDAV/CardDAV
Endpoints estándar en /remote.php/dav/, /remote.php/dav/calendars/, /remote.php/dav/addressbooks/ para integración con clientes de terceros (Thunderbird, Evolution, clientes móviles nativos).
Línea de comandos (occ)
Herramienta occ incluida en el directorio raíz para administración: mantenimiento, gestión de usuarios, configuración, actualizaciones y diagnóstico.
Casos de uso
- Almacenamiento y sincronización de archivos privado para equipos y organizaciones
- Servidor CalDAV/CardDAV para calendarios y contactos compartidos
- Colaboración en documentos con edición en línea (mediante apps como Collabora/OnlyOffice)
- Sustitución autohospedada de servicios cloud públicos (Dropbox, Google Drive, iCloud)
- Cumplimiento de soberanía de datos y normativas de privacidad (RGPD, etc.)
- Integración con infraestructura existente mediante almacenamiento externo (S3, NFS, SharePoint)
- Plataforma base para desarrollo de aplicaciones personalizadas mediante API y sistema de apps
Configuración avanzada
Configuración mediante config.php
Parámetros avanzados en config/config.php: trusted_domains, datadirectory, dbtype, dbhost, dbname, dbuser, dbpassword, memcache.local, memcache.distributed, redis, filelocking, encryption, external storage mounts, proxy, logging, mail, maintenance mode, etc. Consultar documentación de administrador para lista completa.
'trusted_domains' =>
array (
0 => 'localhost',
1 => 'cloud.ejemplo.com',
),
'datadirectory' => '/var/www/html/owncloud/data',
'dbtype' => 'mysql',
'dbhost' => 'localhost',
'dbname' => 'owncloud',
'dbuser' => 'oc_user',
'dbpassword' => 'contraseña_segura',
'memcache.local' => '\\OC\\Memcache\\APCu',
'memcache.distributed' => '\\OC\\Memcache\\Redis',
'redis' =>
array (
'host' => 'localhost',
'port' => 6379,
),
Caché y rendimiento
Configurar APCu para caché local y Redis para caché distribuida y file locking. Ajustar opcache de PHP. Habilitar HTTP/2 y compresión en el servidor web. Usar almacenamiento basado en objetos para datos grandes.
opcache.enable=1
opcache.memory_consumption=128
opcache.interned_strings_buffer=8
opcache.max_accelerated_files=10000
opcache.revalidate_freq=1
opcache.save_comments=1
Actualizaciones y mantenimiento
Actualizaciones menores vía interfaz web o occ upgrade. Actualizaciones mayores requieren pasos adicionales (backup, maintenance mode, migración de base de datos). Ver CHANGELOG.md y notas de versión.
sudo -u www-data php occ maintenance:mode –on
# Actualizar código (ejemplo manual)
# … reemplazar archivos …
# Ejecutar migración
sudo -u www-data php occ upgrade
# Quitar modo mantenimiento
sudo -u www-data php occ maintenance:mode –off
Federación y sharing
Configurar federación (federated cloud sharing) para compartir entre instancias ownCloud/Nextcloud. Ajustar trusted_domains y políticas de sharing en config.php y mediante occ.
sudo -u www-data php occ config:app:set core shareapi_allow_links –value=true
sudo -u www-data php occ config:app:set core shareapi_allow_mail –value=true
# Configurar servidor federado
sudo -u www-data php occ federation:add-provider <url>
Gestión y mantenimiento
Copias de seguridad
Respaldar directorio de datos (datadirectory), base de datos y directorio config. Usar occ maintenance:mode –on durante backup en caliente. Automatizar con cron/systemd timers.
mysqldump -u oc_user -p owncloud > owncloud_db_$(date +%F).sql
# Backup archivos
tar -czf owncloud_data_$(date +%F).tar.gz /var/www/html/owncloud/data
# Backup config
tar -czf owncloud_config_$(date +%F).tar.gz /var/www/html/owncloud/config
Limpieza y optimización
Ejecutar occ files:scan para reparar índice, occ files:cleanup para eliminar archivos huérfanos, occ db:add-missing-indices y occ db:convert-filecache-bigint para optimizar base de datos. Programar cron.php para tareas periódicas (limpieza de papelera, versiones, jobs en background).
sudo -u www-data php occ files:scan –all
# Optimizar base de datos
sudo -u www-data php occ db:add-missing-indices
sudo -u www-data php occ db:convert-filecache-bigint
# Configurar cron del sistema (cada 15 min)
*/15 * * * * www-data php -f /var/www/html/owncloud/cron.php
Monitoreo y logs
Revisar log de ownCloud (data/owncloud.log), logs de PHP-FPM/Apache/Nginx, métricas de base de datos. Configurar rotación de logs. Endpoint status.php para health checks básicos.
sudo tail -f /var/www/html/owncloud/data/owncloud.log
# Health check
curl -s https://cloud.ejemplo.com/status.php | jq .
Seguridad
Mantener PHP, servidor web y base de datos actualizados. Usar HTTPS obligatorio (HSTS). Configurar CSP, headers de seguridad. Revisar avisos de seguridad en security.owncloud.com. Reportar vulnerabilidades solo vía security.owncloud.com (no issues públicos).
Header always set Strict-Transport-Security "max-age=15552000; includeSubDomains"
Header always set Content-Security-Policy "default-src 'self'; script-src 'self' 'unsafe-eval'; style-src 'self' 'unsafe-inline'; frame-ancestors 'self';"
Header always set X-Content-Type-Options nosniff
Header always set X-Frame-Options SAMEORIGIN
Header always set X-XSS-Protection "1; mode=block"
Stack técnico
- PHP
- MySQL / MariaDB / PostgreSQL / SQLite
- Apache / Nginx
- JavaScript (frontend legacy)
- Vue.js (partes de frontend moderno)
- WebDAV / CalDAV / CardDAV (SabreDAV)
- Composer (gestión de dependencias PHP)
- Yarn / Node.js (build frontend)
- Docker (despliegue)
- Redis / APCu (caché)
- AGPL-3.0 (licencia actual, migración a Apache 2.0 en curso)
Referencias oficiales
- Repositorio oficial ownCloud Core: https://github.com/owncloud/core
- Documentación de administrador ownCloud Classic: https://doc.owncloud.com/server/latest/admin_manual/
- Documentación de desarrollador: https://doc.owncloud.com/server/latest/developer_manual/
- Imagen Docker oficial en Docker Hub: https://hub.docker.com/r/owncloud/server
- Sitio web ownCloud: https://owncloud.com
- Comunidad y discusiones: https://github.com/orgs/owncloud/discussions
- Chat Matrix: https://app.element.io/#/room/#owncloud:matrix.org
- Reporte de seguridad: https://security.owncloud.com
- Programa Bug Bounty: https://yeswehack.com/programs/owncloud-bug-bounty-program
- Traducciones (Transifex): https://explore.transifex.com/owncloud-org/owncloud/
- OSPO Kiteworks / ownCloud: https://kiteworks.com/opensource
- CHANGELOG: https://github.com/owncloud/core/blob/master/CHANGELOG.md
Apoya el canal GENBYTE
¿Te ha sido útil este contenido?
Suscríbete a YouTube
Newsletter GENBYTE
Ko-fi
Contacto: [email protected]
