Instalar GNU social

Prerequisitos

Seleccionar una rama

GNU social tiene tres ramas distintas de desarrollo, ofreciendo así un rango de posibilidades entre la estabilidad y las nuevas características.

1.2.x
Esta es la rama estable actual. El código ha sido probado durante un tiempo.
master
master recibe actualizaciones frecuentes y usualmente funciona bien.
nightly
nightly es la que más se actualiza pero no siempre funciona.

Cuando se descarga el código fuente en Ponerlo en marcha será necesario saber que rama se quiere instalar. Siempre se puede pasar de una rama a otra más estable, pero no está garantizado que funcione al hacerlo a la inversa.

Si se quiere usar Qvitter — este es el plugin que hace que GNU social se parezca a Twitter — hay que saber que está testeado solo con la rama nightly. Si se prueba con una rama distinta y no funciona correctamente, es recomendable actualizar a nightly.

Configuración del servidor web

Siempre deberia usarse HTTPS para cifrar las comunicaciones con el nodo GNU social. Hasta hace poco costaba dinero conseguir un certificado «confiable» pero desde que Let’s Encrypt salió, es muy fácil conseguir un certificado sin ningún coste.

Si estás pensando en empezar la instalación con HTTP y cambiar a la instalación cifrada más adelante, no lo hagas. Es probable que hayan problemas de federación.

Si se quiere usar Qvitter, hay que tener en cuenta que solo soporta instalaciones que estén instaladas directamente en el dominio. Esto es, que la URL para acceder a GNU social sea https://www.some.domain/ y no https://some.domain/gnusocial/. Además se requiere tener las Fancy URLs (URLs Bonitas) activadas. Si se usa Apache eso significa que se necesitará mod_rewrite y la posiblidad de usar ficheros .htaccess.

Módulos PHP

Los siguientes paquetes son necesarios para que GNU social funcione correctamente.

PHP 5.5+
En versiones más nuevas, algunas funciones puede que estén desactivadas por defecto, como por ejemplo la familia pcntl_*. Véase la sección Usando el Demonio de Colas.
MariaDB 5+
GNU social usa, por defecto, MariaDB para el almacenamiento de datos. Tanto las versiones 5.x como las 10.x funcionan correctamente. También es posible usar MySQL 5.5+.
Servidor Web
Apache, lighttpd y nginx funcionan correctamente. Se recomienda el modo CGI y también alguna variante de “suexec” (o una configuración adecuada de php-fpm pool) Nota: mod_rewrite o su equivalente es extremadamente útil.

Tu instalación PHP debe incluir al menos las siguientes extensiones PHP para una configuración funcional de GNU social:

openssl
(compilado en Debian, habilitado manualmente en Arch Linux)
php5-curl
Para coger archivos por HTTP.
php5-gd
Para manipulación de imágenes (escalado).
php5-gmp
Para firmas Salmon (parte de OStatus).
pgp5-intl
Soporte de internacionalización
php5-json
Para búsquedas de WebFinger (hola@ejemplo.com) y más.
php5-mysqlnd
El driver nativo de PHP5 para conexiones MariaDB. Si se usa MySQL, deberian valer php5-mysql o php5-mysqli.

Los paquetes mencionados arriba son los nombres que tienen en paquetes basados en Debian. En el caso de Arch Linux, PHP es compilado con soporte para la mayoria de las extensiones, pero requieren de activación manual en el archivo php.ini (básicamente php5-gmp).

Mejor rendimiento

Para algunas funcionalidades, harán falta además las siguientes extensiones:

opcache
Mejora mucho el rendimiento. Está incluido en PHP, debe ser activado manualmente en php.ini para la mayoría de distribuciones. Hay que buscar y activar al menos lo siguiente: opcache.enable=1
mailparse
Para parsear eficientemente las direcciones de correos hace falta esta extensión. La publicación por correo o por SMS lo usa.
sphinx
Un cliente pra el servidor Sphinx, una alternativa a la búsqueda completa de MySQL o PostgreSQL. También se necesitará un servidor Sphinx para servir las consultas de las búquedas.
gettext
Para múltiples idiomas. Está por defecto en muchas instalaciones; se emulará si no está presente.
exif
Para la orienteación correcta de las miniaturas de las imágenes

Puede que se experiencie mejor rendimiento si se configura un cache/acelerador para PHP. La mayoria de distribuciones tienen soporte para «opcache». Se puede activar en php.ini, dónde está documentado junto a sus ajustes.

Instalación

Ponerlo en marcha

Instalar los componentes básicos de GNU social es relativamente fácil, sobretodo si previamente ya se ha preinstalado los paquetes PHP y MariaDB.

  1. El código fuente es distribuido mediante un repositorio git en en el servidor Gitlab de GNU. Hay dos formas de descargarlo:
  • Usando git en el ordenador para clonar el repositorio. Una vez descargado es fácil ir descargando las actualizaciones incrementalmente.
  • Se puede descargar un archivo comprimido de la interfaz web de Gitlab. De este modo no se necesita git pero se necesitará descargar todo el código cada vez que se actualice.

Si se quiere usar git, hay que ejecutar la siguiente orden. Descargará todo el repositorio y lo colocará en un directorio llamado gnusocial.

git clone https://git.gnu.io/gnu/gnu-social.git gnusocial

Entonces, hay que seleccionar la rama que se desea usar:

cd gnusocial
git checkout master  # or '1.2.x' or 'nightly'

Si se quiere descargar el código directamente, hay que ir a las ramas 1.2.x, master o nightly de la página de Gitlab. Arriba a la derecha, en la esquina, hay un botón para descargar un archivo comprimido que contenga esa rama. Si se presiona en la flecha hacia abajo se podrá acceder a distintos tipos de archivo.

Por hacer

Poner link a los enlaces

Download button on gitlab

Hay que descomprimir el archivo tar que se ha descargado, normalmente, una orden como la siguiente funcionará:

tar zxf gnu-social-*.tar.gz

…que hará un subdirectorio en el directorio actual. (Si no se tiene acceso por terminal al servidor, se puede descomprimir el archivo en el ordenador local y luego subir los archivos al servidor por FTP.)

  1. Independientemente de como se haya descargado GNU social, hay que mover los ficheros del directorio en el que se ha descargado al directorio del servidor web. Usualmente, algo como lo siguiente funcionará:

Para un repositorio git:

cd gnusocial
mkdir /var/www/gnusocial
cp -rv * /var/www/gnusocial

Para un archivo comprimido descargado:

mv gnu-social-x.y.z /var/www/gnusocial

Esto hará que el nodo GNU social sea accesible al servidor web en la ruta gnusocial del servidor, como http://example.net/gnusocial. «social» o «blog» puede que sean buenos nombres para una ruta. Si se tiene conocimientos para configurar un virtual host en el servidor web, se puede intentar configurar uno para que sea tipo http://social.example.net (recordemos que será necesario para usar qvitter).

Si se tiene soporte para «rewrite» en el servidor web (que se deberia), se puede activar para poder hacer un uso completo de GNU social. Esto activará las URL Bonitas (Fancy URLs) (o URL bonitas).

  1. Hay que hacer el servidor Web tenga permisos de escritura en el directorio objetivo, hay que tener en cuenta que esto hará que los usuarios tengan acceso al directorio y hay que securizar el servidor, lo cual no se tocará en este documento.

    chmod a+w /var/www/gnusocial/
    

En algunos sistemas, esto funciona como una alternativa más segura:

chgrp www-data /var/www/gnusocial/
chmod g+w /var/www/gnusocial/

Si el servidor Web usa algún otro usuario que no sea www-data, hay que probar el grupo por defecto del usuario. Como último recurso, se puede crear un nuevo grupo tipo gnusocial y añadir el usuario del servidor web al grupo.

  1. Se deberia dar permisos de escritura al usuario del servidor Web en los subdirectorios avatar y file . La forma insegura de hacer esto es:

    chmod a+w /var/www/gnusocial/avatar
    chmod a+w /var/www/gnusocial/file
    
También se puede hacer que solo el grupo del servidor Web tenga permisos de escritura en los directorios, como se ve arriba.
  1. Hay que crear una base de datos en la que se guardaran los datos de la página. Algo así deberia funcionar (se preguntará una contraseña para la base de datos):

    mysqladmin -u "root" -p create socia
    

GNU social debe tener su propia base de datos, no deberia compartir esta con otros programas. Se le puede poner el nombre que se quiera, por eso.

(Si no se tiene acceso por terminal al servidor, puede que se necesite una herramienta como phpMyAdmin para crear la base de datos. Hay que comprobar la documentación del servicio de hosting para ver como crear una base de datos.)

  1. Hay que crear una nueva cuenta para la base de datos que usará GNU social para acceder. Si se tiene acceso por terminal, probablemente lo siguiente funcione en la terminal de MariaDB:

    GRANT ALL on social.*
    TO 'social'@'localhost'
    IDENTIFIED BY 'agoodpassword';
    
Deberia cambiarse el identificador social y la contraseña agoodpassword por otro nombre de usuario y una contraseña. Una vez hecho, hay que comprobar que se puede iniciar sesión en la terminal de MariaDB con este nuevo usuario.
  1. En un navegador, hay que introducir la ruta del script de instalación de GNU social, algo como:

    https://social.example.net/install.php
    
Hay que introducir la información de la base de datos y el nombre de la web. El programa de instalación hará la configuración inicial y creará las tablas de la base de datos.
  1. Ahora deberia ser posible dirigirse a la página principal y ver la «Línea Temporal Pública», que probablemente estará vacía. Ahora se pueden registrar nuevos usuarios, publicar noticias, editar el perfil, etc.

URL Bonitas (Fancy URLs)

Por defecto, GNU social usará las URLs incluyendo el nombre del programa PHP en el. Por ejemplo, la página de perfil de un usuario puede encontrarse en cualquiera de estas direcciones, dependiendo del servidor web y sus posiblidades:

https://social.example.net/index.php/fred
https://social.example.net/index.php?p=fred

Es posible configurar el servidor web para usar URLs bonitas para que se parezcan a esto:

https://social.example.net/fred

Estas «URLs bonitas» son más fáciles de recordar y de leer para las usuarias. Para usarlas, hay que tener Apache 2.x con .htaccess y mod_rewrite activados o saber como configurar la «redirección de direcciones» en el servidor (como lighttpd o nginx).

  1. Véanse las instrucciones para los distintos servidores web:
  • Para Apache, hay que inspeccionar el archivo htacces.sample y guardarlo como .htaccess después de hacer las modificaciones necesarias. Este archivo está muy documentado.
  • Para usar lighttpd, hay que inspeccionar el archivo lighttpd.conf.example y aplicar los cambios apropiados en el virtualhost que se use en el servidor web.
  • Para usar nginx, hay que inspeccionar el archivo nginx.conf.sample y aplicar los cambios apropiados en el virtualhost que se use en el servidor.
  • Para otros servidores web, aceptamos gustosamente contribuciones de configuraciones de ejemplo.
  1. Asimiendo que el servidor web está configurado apropiadamente y que tiene los cambios aplicados (hay que recordar que hay que recargar los servicios), se puede añadir esto al archivo config.php de GNU social:

    $config['site']['fancy'] = true;
    

Ahora deberia ser posible navegar usando las URLs bonitas en el servidor, como por ejemplo:

https://social.example.net/main/register

Temas

Ahora mismo, respecto al tema de la web solo se puede cambiar algunas hojas de estilo CSS y algunos archivos de imágenes; no se puede cambiar el HTML, como añadir o quitar menus, sin la ayuda de algún plugin.

Se puede escoger un tema usando el elemento $config['site']['theme'] en el archivo config.php. Más abajo saldran más detalles.

Se puede añadir un tema propio creando un sub-directorio en el directorio “theme” con el nombre del tema. Cada tema tiene los siguientes archivos:

display.css
un archivo CSS2 para el estilo por defecto en todos los navegadores.
logo.png
la imagen del logo de la web.
default-avatar-profile.png
una imagen de un píxel de 96x96 para usar como avatar en los nuevos usuarios o los que no quieren usar el suyo propio.
default-avatar-stream.png
Lo mismo, pero de 48x48. Para el flujo de publicaciones.
default-avatar-mini.png
Lo mismo, pero de 24x24. Para las subscripciones que salen en las páginas de perfiles.

Es recomendable empezar copiando todos los ficheros del tema por defecto al propio.

Privado

Un nodo GNU social puede ser configurado como «privado», lo que significa que no federará con otros servidores de la red. No es recomendable usar este método por que en este estado, no se garantiza que no puedan haber fugas de información (lo que para los servidores públicos puedan ser características buenas, en los servidores privados pueden verse como errores).

En cualquier caso, los nodos privados son una forma sencilla de crear rápidamente un grupo de colaboración o para compartir imágenes, o crear una comunidad pequeña en la que la federación no es necesaria. Además, es posible cambiar más adelante esta opción y ganar todas las ventajas de la federación.

El acceso a los archivos adjuntos puede restringirse a los usuarios que hayan iniciado sesión:

  1. Hay que crear un directorio fuera del servidor web raiz en el que guardar los archivos subidos. Se puede usar esta orden como orientación para hacerlo:

    mkdir /var/www/gnusocial-files
    
  2. Ahora hay que hacer que el usuario del servidor web tenga permisos de escritura en ese directorio. Una manera insegura de hacerlo es la siguiente (para hacerlo como debe hacerse, habria que leer sobre los permisos de archivo en sistemas UNIX y configurar el servidor web de acuerdo con ellos):

    chmod a+x /var/www/gnusocial-files
    
  3. Hay que decirle a GNU social que use este directorio para subir los archivos. Hay que añadir una linea como la siguiente en el fichero config.php:

    $config['attachments']['dir'] = '/var/www/gnusocial-files';
    

Características extra

Sphinx

Para usar un servidor Sphinx para que busque usuarios y publicaciones, se necesita habilitar el plugin SphinxSearch. Hay que añadir en archivo config.php:

addPlugin('SphinxSearch');
$config['sphinx']['server'] = 'searchhost.local';

Además de lo anterior, hay que instalar compilar y habilitar la extension pecl de sphinx para php en el lado cliente, el cual depende de los archivos de desarrollo de sphinx.

Véase plugins/SphinxSearch/README para más detales y configuración del servidor.

SMS

StatusNet soporta un sistema cutre y sucio para enviar mensajes de actualización a los teléfonos móviles y para recibir actualizaciones desde estos. En vez de enviar a través de la red de SMS, que es caro y requiere compra a las compañías inalámbricas, simplemente se envia a través de pasarelas de correo electrónico que muchas compañías proporcionan a sus clientes. Por lo tanto, la configuración de SMS es esencialmente configuración de correo electrónico.

Cada usuario envia correos a una dirección de correo inventada, que se mantiene en secreto y se usará como contraseña. Los correos que se reciban que tengan el «DE» del correo electrónico del usuario y el «A» el correo inventado y secreto, se convertiran en una publicación y se guardaran en la base de datos.

Para que esto funcione, debe haber algún dominio subdominio al que se envien todos los correos electrónicos y que pueda pasar el filtro.

  1. Hay que ejecutar el script SQL carrier.sql en la instalación StatusNet. Esto normalmente funciona:

    mysql -u "statusnetuser" --password="statusnetpassword" statusnet < db/carrier.sql
    
Esto poblará la base de datos con una lista de operadores telefónicos que soportan la pasarela de correo electrónico a SMS.
  1. Hay que asegurarse de que maildaemon.php es ejecutable:

    chmod +x scripts/maildaemon.php
    
Hay que tener en cuenta que «daemon» es un nombre poco acertado; el script es más un filtro que un demonio.
  1. Hay que editar /etc/aliases en el servidor de correo y añadir la siguiente linea:

    *: /path/to/statusnet/scripts/maildaemon.php
    
  2. Hay que ejecutar el código que apropiado para actualizar la base de datos de aliases. Para muchos servidores de correos (Postfix, Exim, Sendmail) esto deberia funcionar:

    newaliases
    
Puede que sea necesario reiniciar el servidor de correo para que la nueva base de datos se tenga en cuenta.
  1. Hay que definir lo siguiente en el archivo config.php:

    $config['mail']['domain'] = 'yourdomain.example.net';
    

Después de la instalación

Ejecutar queue daemons

Por defecto GNU social intenta, de forma regular, comunicarse con los servidores remotos mientras maneja las peticiones de los usuarios. Esto es a menudo insuficiente. Es posible que se necesite ejecutar el demonio de colas. Véase la siguiente sección: Usando el Demonio de Colas.

Copias de seguridad

No hay ningún sistema incorporado para hacer copias de seguridad en GNU social. Se pueden hacer copias del sistema usado haciendo copias de la base de datos y del directorio web raiz. Para hacer una copia de la base de datos se puede usar mysqldump y para hacer una copia del directorio de la Web, se puede usar tar.

Actualizando

Actualizar está fuertemente recomendado para estar al dia con las actualizaciones de seguridad y con las nuevas características. Para instruciones de como actualizar, véase esta sección: Actualizando la instalación.