Instalando Owncloud en un VPS

Hace poco tuve que reinstalar por tonto el VPS que adquirí hace algo menos de un año.

Por el camino perdí la instalación de Owncloud que tenia hecha, y como no encontré ningún tutorial medio actual en español que explicara cómo instalarlo, ahí va mi pequeña aportación.

Descargar Owncloud

Lo primero que necesitaremos para instalar Owncloud será descargarlo.
Hay una opción que es recurrir al auto-instalador (importar el ppa y apt-get install), pero después de probarlo y ver que metía más mierda que otra cosa, decidí montarlo por mi cuenta.

Para ello, vamos a la página del changelog y nos bajamos la ultima versión disponible:
http://owncloud.org/changelog/

wget https://download.owncloud.org/community/owncloud-7.0.2.tar.bz2

Una vez descargado el zip (recomiendo hacerlo en un directorio temporal) extraeremos su contenido con tar xvjf owncloud-7.0.2.tar.bz2.

Una vez tengamos todo el contenido descomprimido, moveremos el directorio a la carpeta donde tengamos alojados nuestros sitios web (yo utilizaré /var/owncloud/).

mv owncloud/ /var/owncloud

Además, le cambiaremos el usuario a www-data:www-data:
chown -R www-data:www-data /var/owncloud/

Preparando la base de datos

Dando por hecho que en el servidor se tiene MySQL instalado y funcionando, abriremos un prompt de MySQL:

mysql -u root -p

E introduciremos nuestra contraseña de root de MySQL.

A continuación, introduciremos los siguientes comandos por orden:

CREATE USER 'owncloud'@'localhost' IDENTIFIED BY 'contraseña';

(Con esto crearemos un nuevo usuario de MySQL llamado owncloud. Reemplazar "contraseña" por una que recordemos)

CREATE DATABASE owncloud;

(Hemos creado una nueva base de datos llamada owncloud)

GRANT ALL ON owncloud.* TO 'owncloud'@'localhost';
(Damos permisos sobre todas las tablas de la base de datos con nombre owncloud al usuario owncloud)

flush privileges;

(Aplicamos los cambios de permisos)

exit;

Enlazando el sitio

Una vez tengamos los archivos en su sitio y la BD preparada, solo nos falta crear el registro A en nuestro proveedor de DNS (esto varía en función del proveedor que tengamos, así que aquí cada uno sabrá como crearlo).

Una vez creado, crearemos el archivo de configuración de nuestro apache2/nginx para que el sitio sea accesible.

Yo utilizo nginx, así que aquí dejo mi archivo de configuración para quien le pueda servir:

server {

	listen 80;
        server_name my.domain.com;

        root /var/owncloud;

        client_max_body_size 10G; # set max upload size
        fastcgi_buffers 64 4K;

        rewrite ^/caldav((/|$).*)$ /remote.php/caldav$1 last;
        rewrite ^/carddav((/|$).*)$ /remote.php/carddav$1 last;
        rewrite ^/webdav((/|$).*)$ /remote.php/webdav$1 last;

        index index.php;
        error_page 403 = /core/templates/403.php;
        error_page 404 = /core/templates/404.php;

        location ~ ^/(data|config|\.ht|db_structure\.xml|README) {
                deny all;
        }

        location / {
                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 ~ ^(?<script_name>.+?\.php)(?<path_info>/.*)?$ {
                try_files $script_name = 404;

                include fastcgi_params;
                fastcgi_param PATH_INFO $path_info;
                fastcgi_pass 127.0.0.1:9000;
				fastcgi_param HTTPS on;
        }

        location ~* ^.+.(jpg|jpeg|gif|bmp|ico|png|css|js|swf)$ {
                expires 30d;
                # Optional: Don't log access to assets
                access_log off;
        }

}

Ghostbin

NOTA

En función de cómo tengáis configurado PHP en nginx, es posible que necesitéis cambiar fastcgi_pass 127.0.0.1:9000 por fastcgi_pass unix:/var/run/php5-fpm.sock;

Reiniciamos nuestro apache2/nginx y ya estamos listos para el siguiente paso.

Accediendo

Una vez tengamos levantado nuestro servidor, solo tendremos que acceder al dominio que hemos configurado en el registro A y rellenar unos campos:

Setup

NOTA

La página mostrada puede no ser exactamente esta, pero los campos deberían coincidir.

En los dos primeros campos crearemos la cuenta del usuario administrador.
Elegimos un nombre de usuario y una contraseña.

El apartado de data folder en principio no será necesario configurarlo, ya que debería detectarlo automáticamente (En esta imagen aparece /var/web/owncloud/data porque la captura no es mia).

Después, en la parte inferior introduciremos lo siguiente:

  1. owncloud - Nombre de usuario de MySQL
  2. contraseña - Contraseña del usuario de MySQL
  3. owncloud - Nombre de la DB de MySQL
  4. localhost - Utilizaremos el servidor MySQL del propio servidor

Completar instalación, y deberíamos poder acceder a nuestro Owncloud.

Pequeños retoques

Por defecto PHP tiene un límite de subida bastante reducido, y eso puede ser un problema a la hora de compartir archivos.

Para modificarlo deberemos ir al archivo /etc/php5/fpm/php.ini y modificar los siguientes valores:

upload_max_filesize = VALOR

post_max_size = VALOR

El valor puede ser cualquier entero terminado en M para MB y G para GB.
Por ejemplo, 1G => 1GB.

NOTA

Si utilizáis vim como editor, encontrar esas líneas es tan facil como
vim /etc/php5/fpm/php.ini

/upload_max

/post_max

Después de editar el php.ini, deberemos reiniciar el servicio:
service php5-fpm restart

Y listo, ya podemos subir archivos del tamaño que queramos!

"Acortador" de URL

URL

Owncloud ofrece la posibilidad de compartir archivos mediante URL propias, pero por desgracia esas URL son del estilo
http://my.server.com/public.php?service=files&t=4428aaabbb65sdfg7

Hace tiempo, para Owncloud 5 había un plugin que permitía generar URL acortadas directamente desde el panel de Compartir

Si utilizáis nginx, podéis montaros un pequeño acortador vosotros mismos simplemente añadiendo esta línea dentro del apartado location / {

rewrite ^/f/(.*)$ /public.php?service=files&t=$1&download;

A partir de ahora, cuando tengáis una URL del estilo
http://my.server.com/public.php?service=files&t=4428aaabbb65sdfg7 podréis enlazar el archivo simplemente haciendo
http://my.server.com/f/4428aaabbb65sdfg7

Y hasta aquí la configuración básica de Owncloud.
Espero que os haya servido!