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-libs

Como 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.rpm
rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
rpm -ivh http://yum.postgresql.org/9.3/redhat/rhel-6-i386/pgdg-centos93-9.3-1.noarch.rpm

Edita el repositorio de epel y asegúrate de que la parte superior sea enabled=1

vi /etc/yum.repos.d/epel.repo

Haz 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.repo

y 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 update

Instala 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-pdo

Inicia 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 stop

Crea un nuevo usuario y base de datos en PostgreSQL.

su - -c "psql" postgres
CREATE USER cloud WITH PASSWORD 'userpass';  
CREATE DATABASE cloudbase OWNER cloud ENCODING 'UTF8';  
GRANT ALL PRIVILEGES ON DATABASE cloudbase TO cloud;  
\q

Verifica y recuerda tu zona horaria

cat /etc/sysconfig/clock

Edita el archivo de configuración de php

vi /etc/php.ini
post_max_size = 2G
cgi.fix_pathinfo = 0
upload_max_filesize = 2G
date.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.conf

Asegúrate de que listen no apunte a /var/run/php-fpm/php-fpm.sock

listen = 127.0.0.1:9000

Inicia el servicio php-fpm

chkconfig php-fpm on  
service php-fpm start

Edita 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.conf

y 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 cert

Si estás familiarizado con los hosts virtuales de apache, entonces el siguiente archivo que tendrás que crear es exactamente eso.

cd conf.d
vi cloud.conf
upstream 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.csr

A 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.bz2

Permite 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 ACCEPT
service iptables save  
service iptables restart

Reinicia PostgreSQL por última vez y comienza nginx con la nueva configuración:

service postgresql-9.3 restart  
service nginx start

Eso 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.

Share: X/Twitter LinkedIn

Recibe nuevas publicaciones en tu bandeja de entrada.

No spam. Cancela la suscripción en cualquier momento.