Año nuevo, consola vieja

Bueno, en realidad no es una «consola» son muuuchas consolas en una. Ya os conté anteriormente como había construido mi mini máquina aracade.Esta vez, viendo que se habían vuelto a poner de moda las versiones «mini» de las consolas retro (que, por cierto, estoy intentando coleccionar) decidí construirme la mía… No sería mucho más barato, pero si que tendría el control de todo lo que metería en la misma. Este es el resultado:

Estuve tentado de imprimir también la carcasa en 3D con mi impresora.. Pero sabía que el resultado iba a ser peor y quería algo que fuese, como mínimo, familiar. La consola es capaz de ejecutar juegos de NES, SNES, Megadrive, Master system, PSX, Neo Geo, Game Boy, GBA, Game Gear y Arcades… Además, he incluido que se puedan ejecutar programas del CPC 464 y de C64 y VIC-20… Vamos, todo lo que puede dar de si una Raspberry Pi 3.

Así que aquí os dejo la lista de «ingredientes» para que los vayáis preparando:

También se puede hacer con una SD de 8Gb, pero entonces podrás meter menos juegos. El resto de lo necesario supongo que ya lo tenéis (cable HDMI,cargador y cable de móvil microusb)

Cuando las tengáis continuamos… No quiero que nos precipitemos… Así tenemos proyecto para el año nuevo.

Por cierto… ¡Feliz 2018!

Usando google drive desde Ubuntu

Una de las cosas a los que los linuxeros estamos acostumbrados es a que las grandes empresas nos «ninguneen» constantemente y oferten servicios multiplataforma solo para windows y mac, aunque el esfuerzo de haberlos hecho para linux pueda ser mínimo. Uno de estos productos, y que uso mucho ya que tengo cuenta de empresa desde hace más de 10 años es google drive.

 

Si accedemos a la página web para descargarnos el software de google, este nos indica que no hay cliente para nuestro sistema «todavía», y lleva diciendo esto desde hace más de cinco años, sin embargo el acceso mediante la API es realmente sencillo (yo lo uso en NoMorePass por ejemplo desde una app para móvil), por eso me extrañaba mucho esta carencia.

Pero, como siempre, la comunidad de software libre viene al rescate y ya hay algunos que han desarrollado el cliente que necesitamos. Esta es la receta para instalarlo:

sudo add-apt-repository ppa:alessandro-strada/ppa
sudo apt-get update
sudo apt-get install google-drive-ocamlfuse

Una vez instalado, hay que crear el directorio donde queremos que se sincronice (por ej. ~/google-drive) y ejecutar (como usuario):

google-drive-ocamlfuse

Esto nos abrirá una ventana en el navegador para autorizar a la aplicación y darle acceso a tu cuenta, si todo va bien terminará apareciendo esta pantalla:

Y el proceso terminará con un «Access token retrieved correctly». A partir de este momento ya puedes montar la unidad con el comando:

google-drive-ocamlfuse ~/google-drive

Para desmontar el directorio basta con escribir:

fusermount -u ~/google-drive

Y eso es todo, yo lo he hecho y aparentemente funciona, ahora queda ver si es operativo o no…

¿Porqué el ciberataque no me importa?

Como diría Pablo Iglesias en el congreso refiriéndose a Rajoy, el «ciberataque» de estos días no me importa lo más mínimo, me trae sin cuidado o, al final, me la bufa.

¿Porqué me la bufa?

Primero, porque ese «ataque» no me afecta en lo más mínimo. Se basa en un factor de infección exclusivo de windows, utilizando una vulnerabilidad conocida hace pocos meses (excepto para la CIA) y que, por tanto, no afecta a los ordenadores Linux con los que trabajo. Así, ante la alarma causada por todos los medios de comunicación y el principio del apocalipsis cibernético augurado, yo me senté tranquilamente a ver el espectáculo.

Segundo, porque hago backups regularmente de TODO ya que no te puedes fiar de nada en esta vida y de un disco duro menos. Aunque algún muñón de colaborador le diese por venir infectado de casa con un windows y se conectase a mi red los daños que podría causar serían mínimos.

Tercero, porque no es nada nuevo, ni nada que no hayamos vivido antes. Todavía recuerdo los famosos ataques por messenger, donde toda la oficina en la que trabajaba empezó a ver como sus ordenadores empezaban a mandar infecciones a sus contactos mientras les impedía seguir trabajando. O aquella vez que cada vez que instalaba windows a mi hermana y lo conectaba a internet no pasaban ni dos minutos hasta que el virus se instalaba de nuevo y me reiniciaba el ordenador (el famoso sasser).

Y, por último, porque ahora que guardo casi todo en la nube y mis passwords están seguras en mi móvil con nomorepass, nada de esto me ha quitado ni un solo minuto de mi tiempo. ¿No hay posibilidades de infecciones en Linux? Si, claro que si, pero si un sistema operativo se ha hecho para gente sin conocimiento (como windows), lo más normal es que gente sin conocimiento lo use (y caiga más fácilmente en trampas) y eso arrastre a muchos otros que tienen que cargar con las deficiencias de un sistema que solo puede parchear un equipo determinado en un país determinado. Los usuarios de Linux suelen estar más informados y las soluciones pueden llegar de cualquier parte del mundo en cualquier momento.

Instalar un servidor de correo con docker

Hace tiempo que vengo mirando la tecnología de contenedores con interés, la verdad es que desde hace mucho tiempo el trabajo más ingrato, después de haber terminado un desarrollo, era configurar el servidor donde se iba a ejecutar finalmente. No basta con saber el sistema operativo, necesitas instalar una miriada de dependecias y de versiones de software que no siempre se encuentra en la versión que usaste para el desarrollo. Docker promete poder replicar entornos completos mediante una virtualización parcial y eso me parece muy, muy interesante.

Aunque no entraré al análisis profundo de cómo funciona docker, por el momento, si que veremos un ejemplo práctico de una tarea muy habitual como administrador de sistemas, configurar un servidor de correo con todos los servicios habituales. Para ello vamos a utilizar una máquina virtual (no sirve cualquiera, hay sistemas de virtualización que no se llevan bien con docker, en mi caso usé un VPS de OVH después de desechar otros dos de strato y webserver4you). Nuestra máquina virtual tiene un ubuntu 14.04… Al lío.

Lo primero que hay que hacer es instalar docker. Por suerte esto es bastante sencillo:

sudo apt-key adv --keyserver hkp://ha.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo "deb https://apt.dockerproject.org/repo ubuntu-trusty main" | sudo tee /etc/apt/sources.list.d/docker.list
sudo apt-get update
sudo apt-get install apt-transport-https ca-certificates
sudo apt-get install linux-image-extra-$(uname -r) linux-image-extra-virtual
sudo apt-get install docker-engine

Con esto ya tendremos docker en la máquina. Podemos probarlo:

sudo service docker start
sudo docker run hello-world

Si no queremos andar usando sudo para cada comando, añadiremos nuestro usuario al grupo de docker:

sudo groupadd docker
sudo usermod -aG docker $USER

Ahora usaremos Poste.io como contenedor de nuestro servidor de correo. Es una solución simplemente completa y muy sencilla de instalar y configurar. En nuestro caso lo único que hay que hacer para ponerlo a funcionar es crear un directorio (en mi caso /home/mail/data) y ejecutar lo siguiente:

docker run \
-p 25:25 \
-p 81:80 \
-p 110:110 \
-p 143:143 \
-p 8443:443 \
-p 465:465 \
-p 587:587 \
-p 993:993 \
-p 995:995 \
-v /etc/localtime:/etc/localtime:ro \
-v /home/mail/data:/data \
-e "HTTPS=OFF" \
--name "mailserver" \
--restart=always \
-t analogic/poste.io

Lo más relevante en este caso es que NO queremos las redirecciones https porque vamos a configurar el servidor apache que ya tenemos para que actúe de proxy y será él quien tenga el https y los certificados y que el puerto que exponemos para la administración es el puerto 81 (redirigido al puerto 80 del contenedor).

Para que sea accesible desde el exterior por https lo que hicimos fue configurar un virtualhost en apache de esta manera:

<VirtualHost *:80>
        ServerName mail.midominio.es
        AssignUserId mailuser mailuser

        ServerAdmin [email protected]
        DocumentRoot /home/mailuser/www

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        <Directory /home/mailuser/www>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>

ProxyPass / http://localhost:81/

RewriteEngine on
RewriteCond %{SERVER_NAME} =mail.midominio.es
RewriteRule ^ https://%{SERVER_NAME}%{REQUEST_URI} [END,QSA,R=permanent]
</VirtualHost>

La configuración del https es similar, aunque yo dejé que el certbot de let’s encrypt me lo configurase automáticamente al generar los certificados, quedó una cosa como esta:

<IfModule mod_ssl.c>
<VirtualHost *:443>
        ServerName mail.midominio.es
        AssignUserId mailuser mailuser

        ServerAdmin [email protected]
        DocumentRoot /home/mailuser/www

        ErrorLog ${APACHE_LOG_DIR}/error.log
        CustomLog ${APACHE_LOG_DIR}/access.log combined

        <Directory /home/mailuser/www>
                Options Indexes FollowSymLinks
                AllowOverride All
                Require all granted
        </Directory>

ProxyPass / http://localhost:81/

SSLCertificateFile /etc/letsencrypt/live/mail.midominio.es/cert.pem
SSLCertificateKeyFile /etc/letsencrypt/live/mail.midominio.es/privkey.pem
Include /etc/letsencrypt/options-ssl-apache.conf
SSLCertificateChainFile /etc/letsencrypt/live/mail.midominio.es/chain.pem
</VirtualHost>
</IfModule>

Si todo ha ido bien (seguro que algún detalle se nos pasa), tendremos el contenedor funcionando y podremos acceder al administrador de esta manera:

https://mail.midominio.es/admin/

Y, después de verificar la identidad y hacer los primeros ajustes de dominio, cuentas y demás podremos disfrutar de nuestro servidor de correo…

 

Construyendo mi propia máquina de arcade

Esta, tengo que reconocerlo, es una entrada que tenía muchas ganas de escribir. Para mi es muy especial el poder construir cualquier cosa, y si esa cosa es útil, o aporta algo a quien la usa, pues mejor que mejor… El caso es que yo, como cualquiera nacido en los setenta, he tenido una infancia y juventud muy influenciada por los videojuegos arcade. Y dado que tenía un ordenador viejo por casa y que me entró la nostalgia de esos tiempos, me puse como tarea construirme una. Y este es el resultado:

bartop_finalAhora bien, llegar hasta este resultado no ha sido fácil, ni rápido. Pero el esfuerzo creo que ha merecido la pena y, la verdad, toda esta actividad de constructor me ha entretenido un montón y me ha despejado la mente de muchos otros problemas….

Y al principio era el ordenador…

La idea que me rondaba por la cabeza cada vez con más insistencia y, revisando mi trastero, descubrí que tenía un ordenador que ya no usaba con una forma que me estaba llamando. El ordenador era este:

IMG_20141026_122921Un ordenador con su base y todo que había servido como kiosko de fotos y que tenía toda la placa detrás del monitor y la base era la fuente de alimentación… Tome unas cuantas medidas y me hice un plano mental, que luego convertí en cartón. Ah! y mientras tanto compré unos mandos arcade para ir notando el tacto del joystick.

Usando un poco de cartón que encontré por ahí e imprimiendo mis plantillas en hojas de papel terminé montando esto:

IMG_20141107_183624Aproveché entre recorte y recorte y me decidií a probar algunas distribuciones linux con mame para darle la vida a mi maquinita. Al final me decanté por Live MameCab, que tenía todo lo que podría desear y se manejaba todo con los mandos. Luego conseguí unos cuantos cientos de gigas en ROMS de mame y, bueno, todavía estoy eligiendo los juegos.

Después de mucho tiempo decidiendo si terminar o no la máquina, me puse manos a la obra y saqué un despiece (todo hecho con el inkscape, a mi el 3d no se me da demasiado bien) y me fui a pedir las maderas. Todo en MDF de 10mm, bastante barato y resistente. El problema es que en la tienda solo me hacían cortes en escuadra y con cierto tamaño mínimo, así que al final lo que obtuve fue esto:

IMG_20141116_131101Y me puse manos a la obra en mi terraza (perdón a los vecinos afectados) y con una sierra de calar que me costó 19 Euros (no se si será desechable, pero los huesos de mi mano terminaron por separarse de la carne del traqueteo). Obteniendo esto otro (se nota que no soy un experto):

IMG_20141116_160907Después de una sesión de lija interminable y de aumentar la contaminación en mi zona con un montón de serrín, empecé el montaje (nota para los que quieran escuchar, la pintura es más fácil darla antes del montaje), pero no podía esperar a verla montada:

IMG_20141116_190102A partir de ver mi caja ya con forma me puse creativo y diseñé (yo co mi gimp y mucho corta-pega) unos vinilos que encargué por internet y que quedaron así:

IMG_20141203_190526Pero claro, no podía pegar el vinilo sobre el MDF (es poroso), por lo que compré un poco de laca negra (me costó más cara que la madera) y le di un par de capas de pintura a todo el invento… La verdad es que queda la mar de bien la laca si se aplica de la manera correcta (no es el caso).

IMG_20141206_184305Una vez seco del todo, ya podíamos poner los vinilos, los mandos (y su glorioso cableado) y el resultado fue este:

la foto 2(1)Para llegar al resultado final (lo que hay en la primera foto) solo le faltaba un panel de metacrilato transparente para el frontal (y así poder poner más vinilos al rededor) y unas luces led para la marquesina, que, como van a 12 voltios las conecté directamente a la fuente de alimentación del ordenador y redirigir el botón de encendido del ordenador a otro más discreto (si, se ve en la foto del principio, pero hay que echarle imaginación, a ver quien la encuentra).

Y ahora a disfrutar… He instalado ya unos cuantos juegos y, la verdad, estoy empezando a jugar con mis hijos y recordando viejos tiempos. Una inversión perfecta.