Microordenadores

Instalar GNUSocial en una Raspberry Pi

Raspberry pi con caja

Este artículo puede servir para instalar un nodo GNUSocial en muchos tipos de máquinas GNU/Linux. Sin embargo, está escrito sobre la experiencia de haber realizado varias instalaciones en una Raspberry Pi Model B. Como es de suponer, tal máquina no puede dar soporte a un nodo grande, pero si a un nodo de unos pocos pares de personas e incluso a un nodo para que se comuniquen objetos en la presente “la internet de las cosas”, del modo en que ya lo hace Twitter con la utilización de tokens y sin los problemas obvios de privacidad que genera esta última.

Desde que fue impuesto el protocolo TCP vía autoritaria, cada vez hubo más nodos centralizadores. Hemos llegado hoy a grandes centralizadores como Google o Twitter que, especialmente el primero, amenzan con engullir Internet y convertirla en una especie de Compuserve, una vez todo el mundo dependa de ellos. Sin embargo, desde el mismo día en que nació Internet, hackers y gente de otros pelajes libran una lucha constante, silenciosa (o silenciada) e incansable por la distribución del poder utilizando la base material de las tecnologías de comunicación.

Una de las respuestas más recientes contra las centralizaciones es GNUSocial, un servicio de microblogging que crea una red no panóptica, distribuida o descentralizada (no está resuelto el debate), pero en ningún caso centralizada. No hay un centro que se adjudique el derecho a decidir quien puede o no puede acceder a su red. Por el contrario, aunque los nodos puedan tener propietario, no lo tienen las redes que se crean entre ellos, por lo que la expulsión de un usuario de un nodo puede ser una molestia, incluso humillante, pero nada impide registrarse en otro e incluso levantar un nodo propio para dialogar en condiciones de igualdad con los que te expulsaron (o ignorarlos) y para conversar con los de antes.

Será un tutorial “paso a paso”, explicado para gente que ya tienen conocimientos técnicos sobre administración de GNU/Linux, aunque si estás iniciándote me alegraría que decidas hacerlo un reto interesante. Dejaremos los servidores Mariadb (Mysql) y Nginx configurados para correr un nodo y me gustaría que cualquier mejora que hagas, si quieres la compartas, en este blog o en el tuyo 😉

cabeza gnu

Empezamos

Grabamos la imágen de Minibian en una tarjeta SD. La podemos descargar de aquí:

http://sourceforge.net/projects/minibian/

Una vez grabada, hay que redimensionarla con un programa como Gparted o fdisk.

El usuario por defecto es root y su contraseña raspberry.

Preparación

Si no tienes un teclado con el layout en inglés, te resultará muy útil reconfigurar las locales.

Al tratarse de un servidor, conviene que tenga una dirección IP estática. Para ello editamos el archivo /etc/network/interfaces en el que tiene que haber algo como lo siguiente:

#auto eth0
#iface eth0 inet dhcp

auto eth0
iface eth0 inet static
address 192.168.0.160
netmask 255.255.255.0
gateway 192.168.0.1

y en el archivo /etc/resolv.conf para las consultas DNS:

nameserver 208.67.222.222                  # O el que prefieras

Minibian está basada en Raspbian Wheezy y para actualizarla a Jessie hay que editar el archivo /etc/apt/source.list y dejarlo así:.

deb http://mirrordirector.raspbian.org/raspbian jessie main contrib non-free rpi
#deb http://archive.raspberrypi.org/debian wheezy main

Una vez que lo tenemos preparado, actualizamos la distribución:

#apt-get update && apt-get dist-upgrade

Cuando el servidor SSH nos pregunte si queremos el acceso root con password le decimos que sí. Más adelante podemos crear un usuario del sistema y deshabilitar el acceso root para SSH por seguridad. En el caso de que estemos instalando con una conexión SSH sin periféricos entrada/salida conectados a la Raspberry sería glorioso negárselo en este momento, sobre todo porque para que cargue el nuevo sistema hay que hacer un:

#reboot

Instalación de paquetes necesarios

De vuelta, instalamos los paquetes necesarios para GNUSocial y sus dependencias:

#apt-get install mariadb-server nginx php5 php5-curl php5-gd php5-intl php5-fpm php5-mysqlnd php-mail php-pear gettext git

Configurar server en Nginx

Creamos el directorio donde estarán los archivos del nodo:

#mkdir /var/www/social

En el archivo /etc/nginx/fastcgi.conf añadir:

fastcgi_connect_timeout 60;
fastcgi_send_timeout 180;
fastcgi_read_timeout 180;
fastcgi_buffer_size 128k;
fastcgi_buffers 4 256k;
fastcgi_busy_buffers_size 256k;
fastcgi_temp_file_write_size 256k;
fastcgi_intercept_errors on;

Abrimos un archivo en el directorio de servers del Nginx que por ejemplo puede llamarse /etc/nginx/sites-available/laenredadera.org con una configuración similar a esta:

server {
                listen 80;
                server_name laenredadera.org;
                root /var/www/social;
                index index.php index.html index.htm;

                location ~ \.php$ {
                                  fastcgi_pass unix:/var/run/php5-fpm.sock;
                                  fastcgi_index index.php;
                                  include /etc/nginx/fastcgi.conf;

                 }

                 location / {
                             root /var/www/social;
                             rewrite ^(.*)$ /index.php?p=$1 last;

                 }

                 location ~* ^.+.(ico|css|js|gif|png|jpg|bmp|JPG|jpeg|woff|ttf|svg|eot)$ {
                            access_log off;
                            expires 30;

                }

                #access_log /var/log/social.log;
                #error_log /var/log/social.log;
}

Creamos un enlace simbólico:

#cd /etc/nginx/sites-enabled
#ln -s ../sites-available/laenredadera.org laenredadera.org
#rm default

Para que Nignx arranque cada vez que se inicie el sistema:

#systemctl enable nginx

PHP

Editamos el archivo /etc/php5/fpm/pool.d/www.conf y modificamos está opción:

pm = ondemand

Reinicamos fp-fpm y lo dejamos que inice a cada arranque del sistema:

#systemctl restart php5-fpm
#systemcrl enable php5-fpm

Mariadb

Durante la instalación de paquetes ya habremos elegido el password de root para acceder a Mariadb, así que nos logueamos en Mariadb

#mysql -u root -p

Una vez dentro, creamos la base datos:

>CREATE DATABASE gnusocial;

Creamos el usuario y le damos permisos sobre la base de datos gnuscial:

>CREATE USER 'pi'@'localhost' IDENTIFIED BY 'changeme';
>GRANT ALL ON gnusocial.* TO 'pi'@'localhost' IDENTIFIED BY 'changeme';

Y configuramos para que Mariadb se inicie cada que vez que arranquemos el sistema:

#systemctl enable mysql

Descargar e instalar GNUSocial

Cambiamos al directorio /var/www/social/ y descargamos las fuentes de GNUSocial:

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

Cambiamos el propietario de los directorios y archivos de GNUSocial:

#chown -R www-data.www-data /var/www/social

Para enviar mensajes a usuarios de otros nodos hay que añadir en el archivo config.php:

$config['queue']['daemon'] = true;

y para configurar el correo tenemos que añadir al final del mismo archivo:

$config['mail']['domain'] = 'laenredadera.net';
$config['mail']['notifyfrom'] = '"La Enredadera.net" <address@hidden>';
$config['mail']['backend'] = 'smtp';
$config['mail']['debug'] = false;
$config['mail']['params'] = array(
'host' => 'smtp.dominio.com',
'port' => 587,
'auth' => true,
'username' => 'miusuario’,
'password' => ‘mipassword’
);

En cualquier navegador, ejecutamos el script install.php localizado en el servidor que hemos creado con Nginx. Deberá verse esta página:

instalacion gnusocial

En la instalación saldrá un warning deprecated. Es un bug de PEAR que va apareciendo y desapareciendo versión tras versión. Ésta lo tiene. La instalación se realiza bien, pero si queréis corregir el bug, está reportado aquí y ofrecen un par de soluciones.

Una vez realizada la configuración inicial del nodo, cambiamos los permisos al archivo config.php

#chmod 400 /var/www/social/config.php

Y ya está la instalación básica ¡A disfrutar!

Hi, I’m Gustavo Moreno