ownCloud Core: Servidor de archivos autohospedado con WebDAV, CalDAV y CardDAV

Publicado por


ownCloud Core

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.

Plataforma madura de sincronización y uso compartido de archivos con estándares abiertos (WebDAV, CalDAV, CardDAV) y arquitectura extensible mediante aplicaciones.

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.

docker run -d –name owncloud \
-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.

# Ejemplo genérico (adaptar a la versión actual)
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.

git clone https://github.com/owncloud/core.git
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.

# Ejemplo de parámetros comunes en config.php
'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.

# php.ini recomendaciones
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.

# Poner en modo mantenimiento
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.

# Habilitar federación
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.

# Backup base de datos (MySQL/MariaDB)
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).

# Escanear archivos
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.

# Ver logs recientes
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).

# Ejemplo headers Apache
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

Apoya el canal GENBYTE

Sígueme en mis redes sociales

Dejar un comentario

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *