Instalación · 5 min read · Jan 23, 2026
Instalar ownCloud con SSL y Nginx en CentOS 6.5
Instalar ownCloud con SSL y Nginx en CentOS 6.5
Versión: 3.0
Autor: Aaron
CentOS ha actualizado muchos paquetes, y el post que escribí hace 1 año ya no funciona en CentOS 6.5 actualizado.
Hice una investigación y parece que este será el primer tutorial en 2014 sobre cómo instalar owncloud en centos con nginx, postgresql y ssl. No encontrarás instalación de CentOS y owncloud con nginx hoy en día, porque la mayoría de la gente no sabe cómo resolver problemas simples.
Mi servidor se vio afectado y esta es la razón por la que decidí escribir este post hoy.
Los paquetes en los repositorios de EPEL y CentOS están obsoletos, mientras que nginx, postgresql y owncloud requieren paquetes un poco más nuevos. Simplemente te quedarás en la página de inicio de sesión sin poder acceder a tus archivos, quedándote rascándote la cabeza y preguntándote qué demonios acaba de pasar. Los archivos de registro no te mostrarán de dónde proviene el problema ni el propio owncloud.
Los requisitos de owncloud son
PostgreSQL >= 9.0, pero en EPEL es 8.8, requiere php 5.3.3 como mínimo pero no funciona con esa versión, además todos estos paquetes más nuevos requerirán la última versión estable de nginx.
Lo primero que debemos hacer es eliminar todas las bibliotecas de mysql.
yum remove mysql* mysql-server mysql-devel mysql-libsComo de costumbre, instalaremos repositorios de terceros, como epel, remi y el nuevo: el último postgresql
rpm -ivh http://dl.fedoraproject.org/pub/epel/6/i386/epel-release-6-8.noarch.rpmrpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpmrpm -ivh http://yum.postgresql.org/9.3/redhat/rhel-6-i386/pgdg-centos93-9.3-1.noarch.rpmEdita el repositorio de epel y asegúrate de que la parte superior sea enabled=1
vi /etc/yum.repos.d/epel.repoHaz lo mismo con el repositorio remi, pero asegúrate de habilitar la versión de php 5.6,
vi /etc/yum.repos.d/remi.repo

Crea un archivo de configuración del repositorio nginx
vi /etc/yum.repos.d/nginx.repoy añade:
[nginx] name=nginx repo baseurl=http://nginx.org/packages/centos/$releasever/$basearch/ gpgcheck=0 enabled=1
Actualiza tu servidor CentOS para añadir esos repositorios de terceros
yum updateInstala los siguientes paquetes para satisfacer los requisitos de owncloud:
yum install nginx postgresql93 postgresql93-libs postgresql93-server wget php-fpm php-gd php-ldap php-pear php-xml php-xmlrpc php-magickwand php-magpierss php-mbstring php-mcrypt php-shout php-snmp php-soap php-tidy php-pgsql php-pdoInicia PostgreSQL, inicia nginx temporalmente y añádelo a los servicios de inicio del sistema con chkconfig
service postgresql-9.3 initdb
service postgresql-9.3 start
chkconfig postgresql-9.3 on
service nginx start
chkconfig nginx on
service nginx stopCrea un nuevo usuario y base de datos en PostgreSQL.
su - -c "psql" postgresCREATE USER cloud WITH PASSWORD 'userpass';
CREATE DATABASE cloudbase OWNER cloud ENCODING 'UTF8';
GRANT ALL PRIVILEGES ON DATABASE cloudbase TO cloud;
\qVerifica y recuerda tu zona horaria
cat /etc/sysconfig/clockEdita el archivo de configuración de php
vi /etc/php.inipost_max_size = 2Gcgi.fix_pathinfo = 0upload_max_filesize = 2Gdate.timezone = "tu/zona_horaria"Edita el archivo de configuración de php-fpm para usar tcp en lugar de socket unix
vi /etc/php-fpm.d/www.confAsegúrate de que listen no apunte a /var/run/php-fpm/php-fpm.sock
listen = 127.0.0.1:9000Inicia el servicio php-fpm
chkconfig php-fpm on
service php-fpm startEdita el archivo de configuración de postgresql para permitir inicios de sesión con contraseña:
vi /var/lib/pgsql/9.3/data/pg_hba.confy cambia ident por password - nota el cursor en la siguiente imagen:

Reinicia la base de datos postgresql service postgresql-9.3 restart
Crea una carpeta vacía donde almacenaremos nuestros certificados SSL
cd /etc/nginx
mkdir -p certSi estás familiarizado con los hosts virtuales de apache, entonces el siguiente archivo que tendrás que crear es exactamente eso.
cd conf.dvi cloud.confupstream php-handler {
server 127.0.0.1:9000;
#server unix:/var/run/php5-fpm.sock;
}
server {
listen 80;
server_name 10.10.10.110; # reemplaza con tu nombre de dominio o ip interna del servidor
return 301 https://$server_name$request_uri; # forzar https
}
server {
listen 443 ssl;
server_name 10.10.10.110; # reemplaza con tu nombre de dominio o ip interna del servidor
ssl_certificate /etc/nginx/cert/server.crt;
ssl_certificate_key /etc/nginx/cert/server.key;
# Ruta a la raíz de tu instalación
root /var/www/owncloud/;
client_max_body_size 10G; # establecer tamaño máximo de carga
fastcgi_buffers 64 4K;
rewrite ^/caldav(.*)$ /remote.php/caldav$1 redirect;
rewrite ^/carddav(.*)$ /remote.php/carddav$1 redirect;
rewrite ^/webdav(.*)$ /remote.php/webdav$1 redirect;
index index.php;
error_page 403 /core/templates/403.php;
error_page 404 /core/templates/404.php;
location = /robots.txt {
allow all;
log_not_found off;
access_log off;
}
location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
deny all;
}
location / {
# Las siguientes 2 reglas solo son necesarias con webfinger
rewrite ^/.well-known/host-meta /public.php?service=host-meta last;
rewrite ^/.well-known/host-meta.json /public.php?service=host-meta-json last;
rewrite ^/.well-known/carddav /remote.php/carddav/ redirect;
rewrite ^/.well-known/caldav /remote.php/caldav/ redirect;
rewrite ^(/core/doc/[^\/]+/)$ $1/index.html;
try_files $uri $uri/ index.php;
}
location ~ ^(.+?\.php)(/.*)?$ {
try_files $1 = 404;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$1;
fastcgi_param PATH_INFO $2;
fastcgi_param HTTPS on;
fastcgi_pass php-handler;
}
# Opcional: establecer encabezado EXPIRES largo en activos estáticos
location ~* ^.+\.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
expires 30d;
# Opcional: No registrar acceso a activos
access_log off;
}
}
He subido ese archivo de configuración de nginx a mi sitio web, así que en lugar de escribirlo manualmente simplemente escribe wget http://linux.sytes.net/img/nginx1-6.conf.txt y renómbralo a algo como cloud.conf
Como especificaste en el “host virtual” de nginx anterior, nuestro servidor ownCloud estará usando SSL, así que vamos a crear estos certificados, ¿de acuerdo?
cd ..
cd cert
openssl req -x509 -nodes -sha384 -days 3650 -newkey rsa:4096 -keyout server.key -out server.crt
chmod 600 server.key
chmod 600 server.csrA continuación, descarga, extrae el archivo de owncloud y establece permisos para la carpeta de owncloud. Ten en cuenta que descargaremos la versión de desarrollo de owncloud.
cd /var/www
wget http://download.owncloud.org/community/daily/owncloud-daily-master.tar.bz2
tar xjf owncloud-daily-master.tar.bz2
mkdir -p owncloud/data
chmod 770 owncloud/data
chmod 777 owncloud/config/
chown -R root:apache owncloud
rm -rf owncloud-daily-master.tar.bz2Permite conexiones tcp entrantes a los puertos de tu servidor: 80 y 443. Si tú o alguien más llama a la ip interna de tu servidor, será redirigido a https://tuipservidorinterna, porque especificaste eso en el “host virtual” de nginx anteriormente.
iptables -I INPUT 4 -p tcp -d 10.10.10.110 --dport 80 -j ACCEPT
iptables -I INPUT 4 -p tcp -d 10.10.10.110 --dport 443 -j ACCEPTservice iptables save
service iptables restartReinicia PostgreSQL por última vez y comienza nginx con la nueva configuración:
service postgresql-9.3 restart
service nginx startEso es todo, abre tu navegador y apunta a la ip de tu servidor. Elige cualquier nombre de inicio de sesión y contraseña que desees.

Recibe nuevas publicaciones en tu bandeja de entrada.
No spam. Cancela la suscripción en cualquier momento.