Category: Linux

Montar un servidor de Minecraft en casa Parte 3

By , 12/03/2012 12:07

Venimos de aquí… Montar un servidor de Minecraft en casa Parte 2

Hemos terminado de preparar una máquina linux y tenemos el sistema funcionando perfectamente. Tenemos el router preparado para que redirecione los puertos. ¿A qué esperamos?. Vamos a empezar con el juego.

Tenemos dos opciones, utilizar directamente el servidor original de Minecraft o en nuestro caso utilizar bukkit. Bukkit es una extensión de Minecraft, una comunidad de desarrolladores que ha generado una “api” que permite implementar modificaciones sobre el juego original y que cuenta con montones de plugins que hacen mil y una maravillas.

Caso 1. Servidor de Minecraft Normal.

Descargamos el servidor desde la página de Minecraft, y lanzamos (¡Así de fácil!):

:~$ java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui

Caso 2. Servidor Minecraft con Bukkit.

Descargamos la última versión del Bukkit, descomprimimos y metemos en una carpeta para no mezclar archivos. Dentro de la carpeta creamos el archivo craftbukkit.sh e insertamos el siguiente código:

cat > craftbukkit.sh << EOF
#!/bin/sh
BINDIR=$(dirname "$(readlink -fn "$0")")
cd "$BINDIR"
java -Xmx1024M -Xms1024M -jar craftbukkit.jar
EOF

Nos aseguramos de que el archivo sea ejecutable y lanzamos:

:~$ chmod +x craftbukkit.sh
:~$ . craftbukkit.sh

En cualquiera de los dos casos recomiendo para el servidor, con la instrucción “STOP” y modificar el archivo de propiedades con los valores deseados

Montar un servidor de Minecraft en Amazon EC2

By , 10/03/2012 00:26

El puñetero juego Minecraft. (¿No sabes que es?… Rápido… ¡Sal de aquí!. ). Después de jugar mucho en partidas locales pensamos que sería algo interesante tratar de montar un servidor en el que pudiéramos jugar en conjunto, esto añadiría un plus de diversión seguro. Así que me puse manos a la obra. Mientras trato de montar algo más complejo en mi propia casa con un pc antiguo (ver: Post) decidí mirar por encima como funciona todo el tinglado que tiene montado Amazon (Amazon Elastic Compute Cloud Amazon EC2) ¿De que se trata?. En resumidas cuentas es un servicio web que proporciona capacidad informática con tamaño modificable en la nube. Puedes levantar máquinas para cualquier tipo de tarea imaginable en minutos, modificar el uso de recursos, el sistema operativo, el uso de micro… Todo desde un panel de administración.

Como añadido, Amazon tiene un detalle con sus nuevas altas. Descuentan 12 meses completos de ciertos servicios muy básicos… Más que suficientes para pruebas o pequeñas aplicaciones web. En nuestro caso Minecraft.

La capa de uso gratuito de AmazonEC2 incluye para los nuevos cada mes y durante un año los siguientes servicios de EC2:

  • 750 horas de uso para la ejecución de instancias Linux/Unix Micro en EC2
  • 750 horas de uso para la ejecución de microinstancias Microsoft Windows Server en EC2
  • 750 horas de Elastic Load Balancing más 15 GB de procesamiento de datos
  • 30 GB de Amazon Elastic Block Storage (EBS) más 2 millón de E/S y almacenamiento de instantáneas de 1 GB
  • Se añaden 15 GB de ancho de banda saliente en todos los servicios de AWS
  • 1 GB de transferencia de datos regional

El proceso para darse de alta es muy sencillo y aviso… Es necesario dar los datos de una tarjeta de crédito. Entramos en la página de inscripción y seguimos todos los pasos indicados. Llegado el momento tras pedirnos la tarjeta de crédito Amazon hace un test para verificar la tarjeta. según me han comentado te retienen 1$ unos dias.

Si todo ha ido bien tendremos acceso al panel de control insertando nuestro correo y el password, en el menu de usuario vamos a “AWS Management Console” y lanzamos la aplicación.

Temas de dinero… Mucho cuidado con esto. Amazon no crea una cuenta gratuita capada, Amazon te da acceso a TODOS sus servicios y luego te descuenta lo que te regala. Si somos muy manazas y no prestamos atención podemos lanzar una máquinón que gasta 1500€ al mes. Por tanto, ¡Mucha precaución!.

Una vez logados en la consola nos vamos a la pestañita “Amazon EC2″. Elegimos la región que mejor nos vena por cercanía… En teoría la más cercana y más rápida debe ser la de “EU WEST Ireland”. Y vamos a crear la instancia.  Pulsamos sobre el botón de “launch instance”. Insertamos nombre de la instancia, creamos un juego nuevo de Key pair (llaves de acceso) y seleccionamos la Ami que queremos levantar. En nuestro caso hemos optado por una Ubuntu Server 11.10. Deberemos descargar el archivo del “Key Pair” Guardadlo como Oro en paño, si lo perdemos perdemos las instancia.

Posteriormente pasamos a una página de configuración en la que no tendremos que configurar nada, tan solo asegurarnos de que el tipo es Micro.

Una vez terminado le damos a “Launch”. La máquina tarda unos 10 minutos en estar operativa, una vez esté lista podremos verla en el listado de nuestras instancias. Podemos ver su estado “running” signo inequívoco de que ya está lista.

Ahora tenemos que configurar un par de aspectos extras, en primer lugar tenemos que añadirle un grupo de seguridad. Viene a ser como cuando tocamos los puertos del Router, pero en este caso lo que hacemos es abrirle puertos y decirle desde que IP’s nos vamos a conectar. Abrimos el puerto 22 y el 25565. Yo he puesto el 80 por si en algún momento monto algo en el Apache.

Finalmente tenemos que asignarle una “Elastic IP”, mucho cuidado que no debemos olvidar que si creamos una IP pero no la asignamos a niguna Instancia Amazon nos cobra un suplemento por tener IP sin usar… No es mucho pero si se nos olvida un mes entero… Puede ser una gracia. Así que una vez creada asignarla inmediatamente.

Bien, ya tenemos la máquina andando y configurada, ahora tenemos que conectarnos por SSH. Amazon nos da varias opciones, bien con Putty desde Windows (Un coñazo), bien por SSh desde linux o bien desde una consolita java que inorporan.  Para conectarnos por SSH a nuestra recién levantada máquina hacemos una conexión por ssh indicando el archivo .pem (previamente descargado desde el panel de Amazon  EC2), usuario y la IP.
ssh -i rutahastael.pem ubuntu@IP

Instalamos Java, ya que la Ami que hemos seleccionado y por lo que he visto prácticamente todas vienen sin Java por defecto.

~$ sudo apt-get install openjdk-6-jre

Una vez instalado Java procedemos a instalar y preparar el servidor de Minecraft, creamos una carpeta y descargamos el servidor en formato jar.

~$ cd /home/ubuntu
~$ mkdir minecraft-server
~$ cd minecraft-server
~$ wget https://s3.amazonaws.com/MinecraftDownload/launcher/minecraft_server.jar

Lanzamos el servidor por primera vez para que genere todos los archivos necesarios. Recordad que estamos en una máquina que solo cuenta con 613Mb por lo que lanzaremos la aplicación con un límite de 512Mb. Una vez termine de iniciarse la detenemos.

~$ sudo java -Xmx512M -Xms512M -jar minecraft_server.jar nogui
stop

** Atención! (Actualización). Con 512Mb la máquina parece que no tira bien con más de un jugador. Hemos probado a bajarlo a 256Mb y parece que hasta con 4 o 5 jugadores tira bastante bien.

Editemos el archivo de preferencias… Hay muchas posibilidades aquí así cada uno puede lo configurar a su gusto.

Para vigilar el gasto en ancho de banda, procesador y demás aspectos podemos utilizar las estadísticas que nos genera casi en tiempo real el panel de Amazon EC2, recordad que hay ciertos límites que si son sobrepasados nos serán cargados en la tarjeta.

No he realizado aun una prueba de uso real, lo más que hemos hecho ha sido conectarnos dos al mismo tiempo. Pude ver que el micro se ponía al 50% con el primer jugador y al 100% con el segundo y que el consumo de datos podría ser de unos 4 o 5 mb por hora. No son datos muy fiables pero… Trataré de hacer una prueba más seria.

Montar un servidor de Minecraft en casa Parte 2

By , 08/03/2012 12:44

Venimos de aquí… Montar un servidor de Minecraft en casa Parte 1

Comenzamos con nuestro pequeño proyecto. Tenemos una máquina preparada (AMD 3100 2Gb Ram) y un DVD con una Debian 64Bits, en concreto una Debian 64 Bits 6.04 Stable . Comenzamos con la instalación siguiendo todos los pasos, bastante bien explicados durante todo el proceso. En mi caso una vez finalizada la instalación me encontré con un problema ya conocido que me parece tiene algo que ver con mi viejete PC… Que no anda muy bien ya el pobre. El caso es que el sistema de arranque no me funciona y cada vez que hago una instalación tengo que recuperarlo. Misterios de la Informática. Durante la instalación hay un momento en el que te pregunta por ciertos servicios, en mi caso activé la instalación de MYSQL, APACHE, SSH-SERVER. No es necesario hacerlo aquí, pero mejor esto a tener que instalarlos después a mano. Una vez finalizada la instalación entramos en la nueva máquina y configuramos el acceso a internet, en mi caso mediante wifi.

Esta misma madrugada he estado peleando con el SSH-SERVER, para poder acceder a la máquina desde fuera de mi red. Internamente no he tenido problemas, simplemente editamos el archivo de configuración.

Nos logamos como root

yo@server:su

Por si no lo tenemos instalado…

yo@server: apt-get install openssh-server

Editamos el fichero de configuración…

yo@server: nano /etc/ssh/sshd_config 

Nos aseguramos de que el puerto sea el 22, de que tengamos el acceso abierto a todas las IP’S (ListenAddress 0.0.0.0) y poco más. No voy a entrar en temas de seguridad, si alguien es un mijita de la seguridad sabrá como configurar esto para que sea mucho más seguro.

Nos peleamos ahora un poco con nuestro router, en primer lugar la IP de la máquina recién intalada es fija. En mi caso le he asignado la 192.168.1.130 para no tener que andar reconfigurando nada en el futuro, por lo que nos vamos al router y tenemos que ir a la parte de NAT. Allí le diremos que todas las peticiones que vengan al puerto 22 las redirija al puerto 22 de la IP 192.168.1.130. En mi caso tuve una gran pelea a muerte con el router (COMTREND) porque parece ser que utiliza dicho puerto para comunicaciones propias, al añadirlo al NAT saltaba un mensaje diciendo que cambiaba sus comunicaciones al puerto 2222… Pero no… No era cierto. tras varias horas haciendo mil y una pruebas lo dejé por imposible. Esta mañana ha comenzado a funcionar de forma mágica. Me imagino que se habrá reiniciado solo esta noche. algo que no hice ayer por agotamiento extremo.

Paralelamente a esto estoy probando con Amazon, solucionado el problema con mi tarjeta de débito. Parece que voy a tener que documentarlo todo en próximas entregas.

Montar un servidor de Minecraft en casa Parte 1

By , 06/03/2012 10:36

Este post y los que le siguen nacen del profundo vicio en el que se ha convertido para mi y algunos amigos el puñetero juego Minecraft. (¿No sabes que es?Rápido¡Sal de aquí!. ). Después de jugar mucho en partidas locales pensamos que sería algo interesante tratar de montar un servidor en el que pudiéramos jugar en conjunto, esto añadiría un plus de diversión seguro. Así que me puse manos a la obra. Iremos por partes:

- En primer lugar necesitamos un ordenador... Lo ideal es un PC que no estemos usando, ya que el servidor de Minecraft en versión java exige bastante y no queremos que la partida se vea ralentizada o entorpecida por factores externos. En mi caso se trata de un Pc de sobremesa fruto de la unión de todas las piezas que han ido sobrando de anteriores PC’s. Un AMD 3100+, 2 Gb de Ram, Tarjeta gráfica Ati de 128 Mb, 160 Gb de disco y tarjeta Wifi. En principio pienso que será más que suficiente.

- Evidentemente necesitamos una conexión a internet, en mi caso JAZZTEL de 6 Mb. Y unos pequeños ajustes en nuestro router para redirigir y permitir ciertas entradas/salidas a algunos puertos. – Sistema operativo… Linux sin dudar (It’s free!). Más complejo, más complicado, pero mucho más eficiente en todos los aspectos que cualquier Windows que pueda meterle a esta máquina. Con windows Xp en todo caso… No he probado, pero dudo que se acerque al rendimiento de una máquina Linux dedicada. En mi caso por facilitar un poco la tarea me he decantado por una Debian de 64Bits, aunque lo realmente ideal hubiera sido una versión server… Pero como no me manejo a nivel experto en este tema he optado por una versión de escritorio que facilita mucho ciertas tareas y además permite que en un momento dado pueda darle algún otro uso a la máquina.

- Extras… Para que nos vamos a engañar, a uno le gusta liarse por naturaleza así que pretendo complicarlo todo lo posible y más allá.

  1. Pretendo añadirle algún servicio tipo dyndns, para no tener que andar avisando a todo el mundo cada vez que me cambien la IP. Por lo que optaremos por crear algo del estilo nombre.dyndns-home.com que redirija a la IP que mi router tenga en cada momento. Dyndns tiene un cliente que actualiza la IP continuamente por lo que haciendo referencia a este Hostname iremos siempre a nuestro Router.
  2. Añadiremos algún tipo de extra a Minecraft, por sencillez hemos pensado en Bukkit, que genera un entorno sencillo y una enorme comunidad que ofrece cientos de plugins para mil y una chorradas en el juego.
  3. Una web ligera. En la misma máquina que permita obtener información detallada del estado del servidor de Minecraft y si fuera posible que permita algo de administración remota.
  4. Acceso al servidor por SSH que mediante el uso de SCREEN permita administración remota del servidor y del juego. En nuestro caso somos más de un informático por lo que puede ser necesario que varias personas puedan andar trasteando en la máquina.
  5. Una base de datos MYSQL. No es imprescindible pero creo recordar que algunos de los plugins de Bukkit se pueden apoyar en una BBDD.

Esto es todo por ahora. Iré actualizando mis avances.

Instalando Abobe Acrobat Reader en Ubuntu 64bits

By , 23/02/2012 11:08

Empezamos por descargar la aplicación desde la web de Adobe. Una vez descargado a un lugar accesible… Si intentamos instalar nos dará un error de arquitectura, ya que la versión descargada es de 32 bits.
Ejecutamos:

sudo dpkg -i --force-architecture AdbeRdr9.1.2-1_i386linux_enu.deb

Ojo, la versión y por tanto el nombre del archivo irán variando en el futuro, así que es probable que tengáis que cambiarlo.

Transmission de Linux accesible via web desde red local

By , 11/08/2011 19:42

Estoy montandome un server para centralizar descargas y archivos. Una de las cosas que he montado es el Transmission, el programita simplón este de descarga de torrents. Buscando por las opciones de configuración me di cuenta que permitia acceder via web por el puerto 9091. Probé varias veces pero no es accesible directamente si no se tocan algunas cosillas el archivo $HOME/.config/transmission/settings.json, en concreto hay que tocar estas dos líneas:

“rpc-enabled”: true,
“rpc-whitelist”: “127.0.0.1,192.168.*.*

Con esto ya podremos acceder desde la red local… Imagino que con un poco de toqueteo aquí y algo en el router se podrá habilitar para manejo web desde el exterior de la red local.

Brasero no crea imagen ISO en Debian 64 bits

By , 10/08/2011 17:50

Trasteando con mi nueva instalación Debian 64 bits, me he topado con que no podía crear imágenes de DVD en ISO con el programa Brasero. La solución aunque simple me ha costado unos cuantos quebraderos de cabeza. Al parecer las dependencias no están del todo correctas y necesitamos un paquetito extra.

apt-get install brasero-cdrkit

Y listo! :D

Flash en ubuntu 64 bits con chrome

By , 04/05/2011 13:20

Tras pelearme con el Ubuntu 11.04 “Natty Narwhal” y conseguir instalarlo (No sin bastantes problemas con la tarjeta gráfica y los drivers nvidia) una de los primeros problemas era permitir la reproducción de flash en mi navegador (Actualmente Google Chrome). El proceso es muy sencillo:

Desinstalar Flash: sudo apt-get purge flashplugin-installer flashplugin-nonfree.
Descargamos la última versión de Flash del sitio de Adobe (Es un archivo llamado libflashplayer.so).
Hacemos sudo.
Copiar la librería a la dirección de los plugins de Chrome: /opt/google/chrome/plugins.
Es probable (Como en mi caso) que la carpeta no exista. La creamos.
En el siguiente inicio del navegador ya podréis utilizarlo.

Añadir aplicaciones al inicio (Ubuntu)

By , 14/03/2011 10:15

Simple, mucho más de lo que yo pensaba. Es tan sencillo como ir a Sistema / Preferencias / Aplicaciones al inicio y añadir la aplicación que queremos que se inicie con el sistema operativo. Hay que añadir el comando que lanza la aplicación, si no lo sabemos lo más sencillo es hacer un poco de “google” o añadir la aplicación a la barra de aplicaciones y botón derecho – Propiedades.

Mi primera aplicación de Facebook

By , 11/08/2010 12:20

Tras haber estado trasteando con Twitter decidí lanzarme a investigar un poco como funcionan las aplicaciones de facebook, que aunque en teoría utiliza también Oauth tiene bastantes particularidades. En general me ha resultado mucho más complejo, hay mucha información pero aparece bastante dispersa y se centra muy poco en la práctica. Pocos ejemplos de código. Para colmo Facebook tiene su propia API, extensa y con numerosas versiones… Para empezar recomiendo leer su documentación (solo en inglés) para hacernos una idea general.

Facebook incorpora dos lenguajes propios, Facebook Markup Language (FBML) y Facebook Query Language (FQL)… En resumidas cuentas FBML son pequeños módulos que puedes reutilizar del estilo de formularios, listas, botones… con las funcionalidades típicas de facebook. Por ejemplo:

<fb:photo pid="12345" />

Mientras que FQL viene a ser una especie de SQL con el que obtener datos realizando consultas directamente a “tablas” internas de Facebook. Por ejemplo:

SELECT name FROM user WHERE uid = me()

El primer paso como siempre es registrar nuestra aplicación en Facebook, para ello deberemos unirnos al grupo de developers y desde ahí acceder a la creación de una nueva aplicación. El funcionamiento es similar a twitter, obtenemos un id de aplicación y un par de claves para nuestra aplicación. a partir de aquí nos toca partirnos los cuernos empezando por tener un dominio propio en el cual subiremos todos los archivos de nuestra aplicación (No he visto que facebook ofrezca espacio dedicado).

A nivel de programación aunque aparentemente es bastante simple la documentación es mínima y los ejemplos son pocos y en muchos casos desfasados (versiones anteriores de la API), dado que mi intención no era hacer una aplicación seria por ahora me he limitado a tratar de hacer una aplicación que obtenga permisos de escritura en el muro, permita dejar comentarios y permita invitar a los amigos. Para ello me decanté por un framework casero (Gracias a Alvaroveliz, un poco de info en su blog), al que comencé añadiendo los datos de mi aplicación (/config/facebook.php).

$fb_apikey        = '****************************'; // API KEY
$fb_secret        = '****************************'; // Secret Key
$app_callbackurl  = 'http://********/moo/'; // APP Canvas URL
$canvas_url       = 'http://apps.facebook.com/dothemoo/'; // Canvas URL

Posteriormente cree varias vistas para generar un conjunto de “tabs” o pestañas con los 3 apartados que necesitaba, un index, otro para comentarios, un tercero para invitar amigos y uno oculto para lanzar el evento de escritura en el muro. Os pongo algunos fragmentos de código:

<fb:tabs>
  <fb:tab-item href='http://apps.facebook.com/dothemoo/index.php' title='Inicio' selected='true'/>
  <fb:tab-item href='http://apps.facebook.com/dothemoo/index.php?section=comments' title='Comentarios' />
  <fb:tab-item href='http://apps.facebook.com/dothemoo/index.php?section=invite' title='Invitar' />
 </fb:tabs>
$friends = $facebook->api_client->fql_query('SELECT uid FROM user WHERE is_app_user = 1 AND uid IN (SELECT uid2 FROM friend WHERE uid1 = '.$user.')');
	$excludedFriends = array();
	if (is_array($friends) && count($friends) > 0)
	{
	  foreach($friends as $friend){
	    $excludedFriends[] = $friend['uid'];
	  }
	}
	$excludedFriends = implode(',', $excludedFriends);
}
$contentBox = "<fb:name uid=\"$user\" firstnameonly=\"true\" /> quiere que uses la aplicación do the Moo <fb:req-choice url=\"http://apps.facebook.com/dothemoo\" label=\"Confirmar\" />";
?>

<fb:request-form type="Do the Moo" action="index.php?section=invite" content="<?= htmlentities($contentBox,ENT_COMPAT,'UTF-8'); ?>" method="post">
<fb:multi-friend-selector actiontext="Invita a tus amigos para que usen nuestra primera aplicación" showborder="true" exclude_ids="<? echo $excludedFriends; ?>" />
$facebook->api_client->stream_publish($message, $attachment, $action_links);

Resumiendo. Mucha dificultad para tan poca cosa que pretendía, pero si que es cierto que una vez que sacas lo básico se convierte en algo muy potente por las posibilidades que da el acceder a millones de usuarios con relativo poco esfuerzo.

Por cierto… Mi aplicación “chorra” escribe en el muro del usuario un numero de “mugidos” aleatorios, podéis acceder a ella desde aquí. El algoritmo de generar mugidos aleatorios lo he patentado :P .

Panorama Theme by Themocracy