Instalar ownCloud en Rocky Linux (LAMP)
Introducción
ownCloud es un conjunto de software de código abierto para crear servicios de alojamiento de archivos similares a Google Drive o Dropbox. Permite configurar un servidor de alojamiento de archivos autoalojado y ofrece una aplicación servidor (componente principal) y clientes para Linux, Windows, macOS, Android e iOS.
ownCloud está desarrollado principalmente en PHP, JavaScript y Go. Facilita la sincronización de calendarios, el almacenamiento de archivos y multimedia, y la gestión de tareas y agendas. Es extensible mediante aplicaciones adicionales.
Este tutorial explica cómo instalar y configurar ownCloud en Rocky Linux, incluyendo la pila LAMP, Redis, SELinux y Firewalld, con ejemplos prácticos y comprobaciones.
Contenido y variantes de intención
Este artículo cubre la instalación en Apache/httpd. Variantes relacionadas: instalar con Nginx, usar PostgreSQL en lugar de MariaDB/MySQL, configurar con PHP-FPM, migrar desde SQLite, y desplegar en contenedores.
Requisitos previos
- Un servidor Rocky Linux 8.x (ejemplo: nombre ‘owncloud-server’, IP ‘192.168.5.100’).
- Un usuario no root con privilegios sudo (o root si lo prefiere).
- Un dominio o subdominio apuntando a la IP del servidor (ejemplo: howtoforge.local).
Important: Asegúrese de que el sistema tiene actualizaciones recientes y suficiente espacio en disco para almacenar archivos de usuarios.
Resumen de la metodología (mini-methodology)
- Preparar repositorios (EPEL, REMI) y paquetes base.
- Instalar Redis y PHP 7.4 con extensiones requeridas.
- Instalar y configurar Apache (httpd) y Firewalld.
- Instalar MariaDB y crear base de datos para ownCloud.
- Descargar ownCloud, verificar suma SHA256 y ajustar permisos.
- Crear virtual host con SSL (Let’s Encrypt asumido) y configurar SELinux.
- Completar instalación vía web y habilitar cron.
- Hardenear y probar (comprobaciones de seguridad, backups y monitoreo).
Instalación de dependencias básicas
Configure repositorios y paquetes necesarios: EPEL, Redis v6 y utilidades (openssl, ImageMagick, zip).
Instale EPEL:
sudo dnf install epel-releaseCuando se le pida confirmación, escriba y y pulse ENTER.

Habilite Redis v6 (el repositorio de Rocky puede ofrecer varias versiones; use la 6 para este ejemplo):
sudo dnf module reset redis
sudo dnf module enable redis:6Confirme con y.

Instale las dependencias básicas:
sudo dnf install libsmbclient redis unzip libzip bzip2 openssl rsync ImageMagickConfirme con y.

Inicie y habilite el servicio Redis:
sudo systemctl enable redis
sudo systemctl start redisVerifique el estado:
sudo systemctl status redis
Nota: Redis se usa como cache/almacenamiento en memoria para mejorar el rendimiento del sistema ownCloud.
Instalación de PHP 7.4 y extensiones
ownCloud v10.x requiere PHP 7.4 (al momento de escribir este tutorial) y no es totalmente compatible con PHP 8.
Añada el repositorio REMI para obtener PHP 7.4:
sudo dnf install dnf-utils http://rpms.remirepo.net/enterprise/remi-release-8.rpmConfirme con y.

Habilite el módulo para PHP 7.4:
sudo dnf module reset php
sudo dnf module enable php:remi-7.4
Instale PHP 7.4 con las extensiones necesarias para ownCloud:
sudo dnf install --enablerepo=remi php php-intl php-mysql php-mbstring \
php-imagick php-igbinary php-gmp php-bcmath \
php-curl php-gd php-zip php-imap php-ldap \
php-bz2 php-ssh2 php-common php-json \
php-xml php-devel php-apcu php-redis \
php-smbclient php-pear php-phpseclibConfirme con y.

Verifique la versión de PHP:
php --versionDebe mostrar PHP 7.4.x.

Importante: Mantener PHP 7.4 solo para ownCloud si necesita compatibilidad. Planifique una migración cuando ownCloud soporte PHP 8 de forma estable.
Instalación del servidor httpd (Apache)
ownCloud puede ejecutarse en Apache, Nginx o IIS; aquí usamos Apache/httpd.
Instale httpd y mod_ssl:
sudo dnf install httpd httpd-devel httpd-tools mod_ssl
Inicie y habilite httpd:
sudo systemctl enable httpd
sudo systemctl start httpdVerifique el estado:
sudo systemctl status httpd
Configure firewalld para permitir tráfico HTTP y HTTPS:
sudo firewall-cmd --add-service=http --permanent
sudo firewall-cmd --add-service=https --permanent
sudo firewall-cmd --reload
sudo firewall-cmd --list-services
Verificación rápida de PHP+Apache: cree un archivo info.php para phpinfo():
cat <
EOF Abra en el navegador: http://192.168.5.100/info.php (reemplazar por su IP o dominio).

Eliminar este archivo tras la verificación por seguridad.
MariaDB: instalación y preparación de la base de datos
ownCloud soporta MariaDB/MySQL, PostgreSQL y SQLite. Para producción, se recomienda MariaDB/MySQL o PostgreSQL.
Instale MariaDB:
sudo dnf install mariadb-serverInicie y habilite el servicio:
sudo systemctl enable mariadb
sudo systemctl start mariadbVerifique:
sudo systemctl status mariadb
Asegure MariaDB:
sudo mysql_secure_installationResponda según las indicaciones: cambiar contraseña root (y), deshabilitar login remoto de root (y), eliminar usuarios anónimos (y), eliminar bd test (y), recargar permisos (y). Si el instalador pregunta sobre unix_socket, para este tutorial elija n (no) para seguir con autenticación por contraseña.
Cree la base de datos y el usuario para ownCloud (reemplazar owncloudpass por una contraseña segura):
sudo mysql -u root -p
CREATE DATABASE owncloud;
CREATE USER IF NOT EXISTS 'owncloud'@'localhost' IDENTIFIED BY 'owncloudpass';
GRANT ALL PRIVILEGES ON owncloud.* TO 'owncloud'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
quit
Verifique privilegios:
SHOW GRANTS FOR 'owncloud'@'localhost';
Descargar y preparar el código fuente de ownCloud
Mueva al directorio base web y descargue el paquete completo y su suma SHA256:
cd /var/www
wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2
wget https://download.owncloud.com/server/stable/owncloud-complete-latest.tar.bz2.sha256Verifique la suma:
sudo sha256sum -c owncloud-complete-latest.tar.bz2.sha256 < owncloud-complete-latest.tar.bz2Debería obtener OK si el archivo está íntegro.
Extraiga y ajuste permisos:
sudo tar -xvjf owncloud-complete-latest.tar.bz2
sudo chown -R apache:apache /var/www/owncloudAsegúrese de que los permisos son correctos para que httpd pueda leer y escribir en carpetas necesarias.
Configuración del Virtual Host de httpd con SSL
Cree el archivo de configuración del virtual host en /etc/httpd/conf.d/owncloud.conf y adapte dominio y rutas de certificados SSL (ejemplo howtoforge.local):
ServerName howtoforge.local
Redirect permanent / https://howtoforge.local/
ServerName howtoforge.local
DocumentRoot /var/www
Protocols h2 http:/1.1
Redirect permanent / https://howtoforge.local/
ErrorLog /var/log/httpd/howtoforge.local-error.log
CustomLog /var/log/httpd/howtoforge.local-access.log combined
SSLEngine On
SSLCertificateFile /etc/letsencrypt/live/howtoforge.local/fullchain.pem
SSLCertificateKeyFile /etc/letsencrypt/live/howtoforge.local/privkey.pem
SSLCipherSuite ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-CHACHA20-POLY1305:ECDHE-RSA-CHACHA20-POLY1305:DHE-RSA-AES128-GCM-SHA256:DHE-RSA-AES256-GCM-SHA384
SSLProtocol All -SSLv2 -SSLv3 -TLSv1 -TLSv1.1
SSLCompression off
Header always set Strict-Transport-Security "max-age=63072000"
Alias /owncloud "/var/www/owncloud/"
Options +FollowSymlinks
AllowOverride All
Dav off
SetEnv HOME /var/www/owncloud
SetEnv HTTP_HOME /var/www/owncloud
Guarde y pruebe la configuración:
sudo apachectl configtest
sudo systemctl restart httpd
Nota: Se asume el uso de certificados Let’s Encrypt; obténgalos con certbot y coloque las rutas adecuadas en SSLCertificateFile y SSLCertificateKeyFile.
Configuración de SELinux para ownCloud
Si SELinux está en modo enforcing (recomendado en Rocky Linux), etiquete correctamente las rutas que ownCloud necesita escribir y ajuste booleanos para que httpd pueda acceder a servicios de red.
Instale herramientas SELinux:
sudo dnf install policycoreutils-python-utilsEtiquete los directorios y archivos que ownCloud necesita escribir:
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/data(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/config(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/apps(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/apps-external(/.*)?'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/.htaccess'
sudo semanage fcontext -a -t httpd_sys_rw_content_t '/var/www/owncloud/.user.ini'
sudo restorecon -Rv '/var/www/owncloud/'Permita a httpd acceder a otros servicios de red necesarios:
sudo setsebool -P httpd_can_network_connect_db on
sudo setsebool httpd_unified on
sudo setsebool -P httpd_can_connect_ldap on
sudo setsebool -P httpd_can_network_connect on
sudo setsebool -P httpd_can_network_memcache on
sudo setsebool -P httpd_can_sendmail on
sudo setsebool -P httpd_use_cifs on
sudo setsebool -P httpd_use_fusefs on
sudo setsebool -P httpd_use_gpg on
Proceso de instalación mediante web
Abra el navegador y visite: https://howtoforge.local/owncloud/ (ajuste por su dominio).
Complete el formulario de instalación: cree un usuario administrador, elija MySQL/MariaDB, y aporte los datos de la base creada (usuario owncloud, contraseña, nombre de bd).
Haga clic en “Finalizar configuración” o el botón equivalente del instalador para completar la instalación.

Una vez instalado, acceda al login con el usuario admin creado.

Desde el panel de usuario puede crear carpetas, subir archivos y gestionar aplicaciones instaladas.

Ejemplo de subida y creación de directorio:

Configurar cron para tareas en segundo plano
ownCloud recomienda usar cron para trabajos en segundo plano. Cambie el modo a cron y configure una tarea programada cada 15 minutos.
Ejecute una vez para cambiar al modo cron:
sudo -u apache /var/www/owncloud/occ background:cronEdite el crontab del usuario apache:
sudo crontab -u apache -eAñada la línea:
*/15 * * * * /usr/bin/php -f /var/www/owncloud/occ system:cronGuarde y salga.

Verifique desde Ajustes > General que “Todas las comprobaciones pasadas” (Security and setup warnings) muestre OK.

Comprobaciones y criterios de aceptación
Criterios para considerar la instalación correcta:
- Acceso HTTPS estable y válido al dominio de ownCloud.
- Inicio de sesión del administrador y acceso al panel de usuario.
- Cron ejecutándose cada 15 minutos (ver logs o tareas programadas).
- Redis y MariaDB activos y accesibles por ownCloud.
- SELinux en modo enforcing con contextos correctos para /var/www/owncloud.
- No hay advertencias críticas en Ajustes > General.
Lista de verificación por roles
Administrador del sistema:
- Actualizar el sistema y paquetes antes de comenzar.
- Configurar reserva/backup del directorio /var/www/owncloud y la base de datos.
- Configurar certificados SSL y renovación automática.
- Asegurar firewall y SELinux.
DevOps/Despliegue:
- Preparar automatización (Ansible/Chef) para reproducir la instalación.
- Monitorizar métricas (CPU, memoria, I/O) y establecer alertas.
Soporte/Usuarios:
- Proveer guías de uso y límites de tamaño de archivo.
- Configurar cuotas si aplica.
Seguridad y hardening (pasos recomendados)
- Forzar HTTPS y HSTS (ya configurado en VirtualHost).
- Deshabilitar PHP functions peligrosas en php.ini si no son necesarias.
- Limitar tamaño de subida y tiempo de ejecución en PHP acorde al uso.
- Mantener PHP y extensiones actualizadas; planificar migración a versiones soportadas.
- Configurar backups regulares de la BD y de /var/www/owncloud/data.
- Usar Redis para caching y parte de la performance; asegurar que Redis esté protegido por firewall o socket local.
- Revisar y aplicar permisos mínimos a carpetas: owner apache y permisos 750/770 según convenga.
Copias de seguridad y mantenimiento
Recomendación de copia de seguridad básica:
- Backup diario de la base de datos (mysqldump o herramienta equivalente).
- Backup del directorio data de ownCloud (rsync a almacenamiento externo).
- Pruebas de restauración periódicas.
Ejemplo de dump simple:
mysqldump -u root -p owncloud > /backup/owncloud-$(date +%F).sqlMigración y compatibilidad
- Si migras desde SQLite a MariaDB, usa las herramientas de ownCloud y planifica ventana de mantenimiento.
- Para migrar de Apache a Nginx, configura root, reglas rewrite y encabezados necesarios (X-Forwarded-* si hay proxy).
- Asegúrese de que las extensiones PHP requeridas por ownCloud estén instaladas en el nuevo entorno.
Alternativas y cuándo este flujo falla
Alternativas:
- Nginx + PHP-FPM: mejor rendimiento en entornos con muchas conexiones simultáneas.
- PostgreSQL: alternativa sólida para la base de datos si tiene experiencia con Postgres.
- Contenedores (Docker / Podman): facilitan despliegues reproducibles y aislamiento.
Cuándo puede fallar este procedimiento:
- Si su versión de ownCloud requiere PHP >=8 (verifique compatibilidad antes de instalar).
- Si SELinux bloquea accesos y no se aplicaron correctamente los fcontexts o booleans.
- Si la suma SHA256 del paquete no coincide (no extraiga paquetes no verificados).
- Si firewall o proveedor cloud bloquea puertos 80/443.
Solución de problemas comunes
Problema: Página en blanco después de la instalación.
- Compruebe los logs de Apache (/var/log/httpd/) y los logs de ownCloud (data/owncloud.log).
- Asegúrese de que PHP tenga las extensiones requeridas y que php-info muestre la versión adecuada.
Problema: “Can’t connect to database”
- Verifique que MariaDB esté en ejecución y que las credenciales del config.php coincidan.
- Asegúrese de que DB host sea localhost o socket correcto.
Problema: Permisos denegados en uploads o apps.
- Verifique propiedad y permisos de /var/www/owncloud (apache:apache) y contexto SELinux.
Hoja de referencia rápida (cheat sheet)
- Reiniciar servicios: sudo systemctl restart httpd mariadb redis
- Verificar SELinux: sudo getenforce
- Aplicar contextos SELinux: sudo restorecon -Rv /var/www/owncloud
- Probar cron manualmente: sudo -u apache /var/www/owncloud/occ system:cron
Diagrama de decisión (flujo) para elegir arquitectura
flowchart TD
A[¿Necesita alto rendimiento y muchas conexiones?] -->|Sí| B[Nginx + PHP-FPM]
A -->|No| C[Apache/httpd]
B --> D{¿Prefiere base de datos?}
C --> D
D -->|Escalabilidad| E[PostgreSQL]
D -->|Compatibilidad con MySQL| F[MariaDB/MySQL]
E --> G[Configurar Redis y caching]
F --> GGlosario (1 línea por término)
- LAMP: Conjunto Linux + Apache + MariaDB/MySQL + PHP.
- Redis: Almacén en memoria para caching y colas.
- SELinux: Mecanismo de control de acceso obligatorio en Linux.
- VirtualHost: Configuración de Apache para alojar varios dominios.
Pasos siguientes recomendados
- Habilitar monitorización (Prometheus, Grafana, Zabbix) para recursos y tiempos de respuesta.
- Planificar actualizaciones y pruebas en entorno staging antes de producción.
- Configurar backup automático y testeos de restauración mensuales.
Conclusión
Has instalado ownCloud en Rocky Linux con LAMP, Redis y SELinux activado. Ahora puedes subir archivos, gestionar usuarios y empezar a integrar ownCloud con otros servicios. Asegúrate de seguir buenas prácticas de seguridad, realizar backups y monitorizar el servicio.
Resumen:
- ownCloud instalado y accesible vía HTTPS.
- Base de datos MariaDB y Redis configurados.
- SELinux etiquetado y cron configurado.
Notas importantes:
- Planifica la migración a PHP 8 solo cuando ownCloud lo soporte de manera estable.
- Mantenga copias de seguridad y pruebe restauraciones.
Fin del tutorial.
Materiales similares
Podman en Debian 11: instalación y uso
Apt-pinning en Debian: guía práctica
OptiScaler: inyectar FSR 4 en casi cualquier juego
Dansguardian + Squid NTLM en Debian Etch
Arreglar error de instalación Android en SD