¿Que es MediaGoblin?
MediaGoblin es una plataforma de software libre que busca la descentralizacion de contenidos multimedia y que se presenta como alternativa a servicios de publicación privados como flickr,youtube. Lo que ha día de hoy es una manera excelente de librarse de servicios privativos de publicación multimedia existentes totalmente centralizados y auditados por gobiernos y agencias de espionaje.
Instalacion en Debian jessie
Partimos de una instalacion limpia de debian Jessie, en anteriores versiones de debian he tenido problemas para instalarlo, por problemas de dependencias de pip y python por lo que recomiendo usar esta version para no tener problemas.
Instalamos las dependecias de python requeridas
apt-get install git-core python python-dev python-lxml \
python-imaging python-virtualenv npm nodejs-legacy automake \
nginx
Instalamos postgresql(tambien se puede usar sqlite)
apt-get install postgresql postgresql-client python-psycopg2
Creamos nuestra base de datos dentro de postgresql
su - postgres
createuser -A -D mediagoblin
createdb -E UNICODE -O mediagoblin mediagoblin
Creamos una cuenta en el sistema y le damos los permisos necesarios
useradd -c "Cuenta MediaGoblin" -d /var/lib/mediagoblin -m -r -g www-data mediagoblin
Creamos un grupo para añadir al usuario
groupadd mediagoblin && sudo usermod --append -G mediagoblin mediagoblin
Como la cuenta que hemos creado no tiene password para logearnos usamos el siguiente comando
su mediagoblin -s /bin/bash (este comando es muy importante porque necesitaremos para entrar como usuario mediagoblin en el virtualenv y instalar y configurar cosillas)
Creamos un directorio de trabajo para Mediagoblin(crea el directorio en la carpeta que quieres el path es solo de ejemplo
mkdir -p /srv/mediagoblin.prueba && sudo chown -hR mediagoblin:www-data /srv/mediagoblin.prueba
Ahora instalamos MediaGoblin en nuestro virtualenv
Descargamos la ultima version(0.9.0) desde git
git clone git://git.savannah.gnu.org/mediagoblin.git -b stable
Actualizamos los repositorios
git submodule init && git submodule update
Configuramos y compilamos el software
./bootstrap.sh && ./configure && make
Creamos un directorio para subir los archivos multimedia
mkdir user_dev && chmod 750 user_dev
Activamos FastCGI
./bin/easy_install flup==1.0.3.dev-20110405
(para python2)
Terminamos la instalación actualizando el virtualenv
Configuracion
Creamos una copia de los archivos originales para no dañarlos
cp -av mediagoblin.ini mediagoblin_local.ini && cp -av paste.ini paste_local.ini
Editamos el fichero de configuración mediagoblin_local.ini y descomentamos la linea de postgresql
Actualizamos la base de datos
./bin/gmg dbupdate
Testeamos
./lazyserver.sh --server-name=broadcast
para ver que todo funciona lanzamos http://mediagoblin.prueba:6453 en nuestro browser
Si todo ha ido bien salimos de nuestro virtualenv con exit
y seguimos con la instalacion/configuracion de nginx
Instalacion nginx
Aunque mediagoblin trae un servidor web por defecto, es evidente que no es lo mas recomendable para sitios en produccion por lo que vamos a configurarlo en nginx creando un archivo nginx.conf con la siguiente estructura
server {
#################################################
# Stock useful config options, but ignore them :)
#################################################
include /etc/nginx/mime.types;
autoindex off;
default_type application/octet-stream;
sendfile on;
# Gzip
gzip on;
gzip_min_length 1024;
gzip_buffers 4 32k;
gzip_types text/plain application/x-javascript text/javascript text/xml text/css;
#####################################
# Mounting MediaGoblin stuff
# This is the section you should read
#####################################
# Change this to update the upload size limit for your users
client_max_body_size 8m;
# prevent attacks (someone uploading a .txt file that the browser
# interprets as an HTML file, etc.)
add_header X-Content-Type-Options nosniff;
server_name mediagoblin.example.org www.mediagoblin.example.org;
access_log /var/log/nginx/mediagoblin.example.access.log;
error_log /var/log/nginx/mediagoblin.example.error.log;
# MediaGoblin's stock static files: CSS, JS, etc.
location /mgoblin_static/ {
alias /srv/mediagoblin.example.org/mediagoblin/mediagoblin/static/;
}
# Instance specific media:
location /mgoblin_media/ {
alias /srv/mediagoblin.example.org/mediagoblin/user_dev/media/public/;
}
# Theme static files (usually symlinked in)
location /theme_static/ {
alias /srv/mediagoblin.example.org/mediagoblin/user_dev/theme_static/;
}
# Plugin static files (usually symlinked in)
location /plugin_static/ {
alias /srv/mediagoblin.example.org/mediagoblin/user_dev/plugin_static/;
}
# Mounting MediaGoblin itself via FastCGI.
location / {
fastcgi_pass 127.0.0.1:26543;
include /etc/nginx/fastcgi_params;
# our understanding vs nginx's handling of script_name vs
# path_info don't match :)
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_param SCRIPT_NAME "";
}
}
Creamos un enlace simbolico
ln -s /srv/mediagoblin.prueba/nginx.conf /etc/nginx/sites-enabled/
Iniciamos mediagoblin
cd /srv/mediagoblin.prueba/mediagoblin/
su mediagoblin -s /bin/bash
./lazyserver.sh --server-name=fcgi fcgi_host=127.0.0.1 fcgi_port=26543
Como no tenemos usuario creamos uno y listo
cd /srv/mediagoblin.prueba/mediagoblin/
./bin/gmg adduser
Excelente…será útil para mi sitio personal y para mis proyectos…
Buena cosa tener a mano las instrucciones :).. Gracias
buena tarea de difusión para el fortalecimiento de la cultura libre
Poco se de mediagoblin.
Pero he leído que están los servidores federados (no es mesh puro).
Y me surgen preguntas:
¿Cómo se comunican entre ellos?
¿Cómo se validan entre ellos?
¿Cómo ves el contenido de un server en otro server?
¿Qué sucede cuando un server se cae?
Menudo curre, muchas gracias ;)
No lo instaléis en Ubuntu. Se envía un archivo cifrado a canónica con meta datos de los contenidos.