Instalar ubuntu desde un USB

Instalar Ubuntu (o la mayoría de distribuciones más o menos conocidas) puede hacerse utilizando un USB sin necesidad de quemar (burn) un CD. Es mucho más simple de lo que parece si se siguen los puntos de la lista:

  1. El primer paso es descargar Ubuntu.
  2. Comprobar el md5um
    • Usar el siguiente el comando en la terminal: md5sum ubuntu-11.10-dvd-i386.iso
    • Comprobar el hash que te da como resultado con los hashes oficiales de canonical.
  3. Para finalizar preparar Ubuntu en un USB vacío. Para esto usaremos UNetbootin y seguiremos las “instrucciones”.

Más fácil imposible. Para más info la página oficial.

 

Propósitos para el 2016

Los propósitos de año nuevo sirven para hacer durante el nuevo año lo que no se estaba preparado para hacer el año anterior. En cierto modo creo que es cierto, uno empieza de 0 y tiene que avanzar, por lo que es año nuevo se tienen que coger los conocimientos del pasado y mejorarlos. Usar los cimientos del pasado para seguir construyendo. Vivir es seguir mejorando, ya hace algunos años que hago públicos mis objetivos de año nuevo. Para los curiosos aquí encontrareis los objetivos del año pasado revisados.

Este año toca nuevos propósitos y objetivos. Como cada año, los propósitos tienen algunas características, como que sean concretos, medibles y relevantes. Pero esta vez voy a poner la forma que voy a seguir para conseguirlos y fechas algo más estrictas que el año pasado. Esta vez he intentado que los propósitos sean con la ilusión de un niño, la sensatez de un adulto, que contenga algo imposible para hacer lo inesperado.

Sin más dilaciones aquí os dejo la lista de los propósitos del 2016:

Profesional (y formación):

  1. Espero que sea la última vez que pongo esto. Sacarme el B2 de alemán. Para esto voy a finalizar mi lista de 5.000 palabras alemanas y aprender la gramática del libro básico y intermedio. Me voy a apuntar al examen de Abril del Goethe. (Al finalizar el examen seguir aprendiendo más palabras en este idioma).

  2. Asistir a un mínimo de 12 eventos en Múnich. Para hacer contactos sobre el terreno, conocer el ecosistema de startups y practicar un poco mi alemán. Voy a intentar que sean workshops o actividades parecidas ya que me parece que es donde están los “doers”.

  3. Desarrollar una idea multimillonaria. Voy a revisar mi lista de ideas y programar una de ellas. Cabe la posibilidad que sustituya este punto por un proyecto random que me parezca interesante.

  4. Empezar una lista de objetivos mensuales. Con esta lista pretendo marcarme algunas metas a conseguir durante el transcurso de cada mes. Mucho agile para startups pero luego no nos aplicamos el cuento en la vida personal. Voy a probar a ver como funciona. Evidentemente cada mes tendrá poquitos objetivos pero será mucho más responsive a las circunstancias y obligaciones del momento.

  5. Crear algo cada día. La idea consiste en escribir, programar, dibujar, cocinar, etc. cada día. Aunque sea poco rato, crear algo.

  6. Practicar el ideas-sex / idea-machine de Altucher. Quiero empezar a hacer “culturismo de ideas” ejercitando el músculo como menciona James y mantenerlo en forma. Lo he puesto aquí porque estas ideas quiero que estén destinadas a ideas de negocio nuevas o de mejora. (Este concepto me parece fascinante y si quieres que lo ponga en un post al castellano déjame un comentario).

Personal:

  1. Salir de mi circulo de amistades habitual. Sé que ya puse esto el año pasado y lo conseguí, pero lo que me gustaría intentar este año es reducir mi asistencia en sitios abarrotados, con ingentes cantidades de cerveza y musica ruidosa. Resultando en una ampliación por mi parte de actividades culturales y socializadoras durante las horas de luz. Y las fiestas nocturnas supongo que en algunos casos serán inevitables pero  más cortas.

  2. Poder correr sin que me duela la rodilla. Lo de la rodilla es algo que me preocupa y me gustaría ir al médico a que me lo mire y me aporte una solución. Iré al médico en Múnich antes de que empiece el próximo semestre de invierno, lo más probable después de los exámenes de verano.

  3. Seguir con mi “tradición” de doce libros al año. Creo que es un punto muy importante que muchos deberían seguir. Como siempre, leeré aproximadamente uno al mes, durante mis ratos de viajes y vacaciones.

  4. Aprender una tercera lengua extranjera (Francés o italiano). Es algo que ya tengo comiéndome por dentro desde hace bastante tiempo y estas lenguas están entre las que quiero hablar. Este año sería un buen momento si consigo sacarme el alemán. La idea es coger créditos de lenguas el semestre de verano en la universidad.

  5. Visitar Suiza y Liechtenstein, está pendiente desde hace dos años y esperemos que me pueda salir con ello esta vez. El objetivo es ir una o dos semanas antes de semana santa (incluso finales de febrero).

  6. Hacer, deliberadamente, tres cosas buenas cada día. Lo vi como idea y la verdad es que me gustó. Lo voy a intentar, puedo perder un metro para hacer de este mundo un lugar mejor.

Propósitos extras:

  1. Ir al carnaval de Köln (Colonia). Ya lo tenía pendiente el año pasado y no pudo ser, se intentará este año.

  2. La intención es que a parte de construir un proyecto monetizarlo antes de fin de año. Aunque solo sirva para cubrir gastos.

  3. Mejorar mis habilidades de escritura en inglés asistiendo a algún curso en la universidad.

  4. Escribir un research paper y publicarlo. Con el mero propósito de ganar puntos para posteriores andaduras (phd?)

  5. Estirar cada día. Se que puede sonar un poco raro, pero pretendo mejorar un poco mi flexibilidad (sobre todo de las piernas). Tanto tiempo sentado se acortan los músculos.

  6. Hablar más frecuentemente con desconocidos. Si yo estoy solo y la persona del lado está sola decirle algo. Si quiere hablar hablamos y si no pues que no sea porqué no lo he intentado. Ya que normalmente la gente es maja (y puede servir de excusa para mejorar mi alemán).

Y para variar como cada año, ante la duda decir “si”, ser feliz, sobrevivir otro año más y conquistar el mundo!

Feliz año nuevo! 😀

Revisión de los propósitos del 2015

No solamente uno se tiene que proponer objetivos en la vida, sino que tiene que pasar revisión de estos para ver dónde se ha estado fuerte y dónde se puede mejorar. Para los que queráis ver los propósitos en el post original los podéis ver pulsando en el siguiente enlace.

Profesional (y formación):

  1. Sacarme el B2 de alemán => No conseguido. No me he apuntado a ningún curso aunque he empezado a vivir con alemanes y hablar alemán regularmente. Aunque estoy aprendiendo mucho vocabulario no me he sentido preparado. Lo conseguiré el próximo año?

  2. Asistir a un mínimo de 12 eventos en Múnich => Conseguido! He ido a todo tipo de eventos variopintos y curiosos que me han ayudado a conocer mucha más gente y aprender muchas cosas nuevas.

  3. Desarrollar una idea multimillonaria => No conseguido. Decidí ir mucho más a tope con la universidad y en mi tiempo libre socializar y culturizarme un poquito más.

  4. Trabajar más en el marketing del blog => Conseguido a medias. Si que hice algo de márketing y gané algo de visitas pero no lo hice tan a menudo como quería. Ya que estoy pensando en pasarme al inglés.

  5. Entrar en el máster de informática de la TUM => Conseguido! La universidad me hizo sufrir pero después de pasarme por el notario y por una traductora, dos meses después de empezar el semestre conseguí matricularme de forma permanente.

  6. Aprender MongoDB => Conseguido a medias. Hice el primer curso y vi que ofrecía todo lo que quería aprender. Además me consumía mucho más tiempo del que disponia por lo que a pesar de no hacer todo lo que dije me doy por satisfecho.

Personal:

  1. Salir de mi circulo de amistades habitual => Conseguido! He conocido un mogollón de gente nueva. Y aunque algunas veces ha sido algo complicado he hecho muchas amistades interesantes.

  2. Correr una Maratón sub 3.30h => No conseguido. En verano me empezó a doler la rodilla y al final he dejado de correr. Por lo menos de momento.

  3. Seguir con mi “tradición” de doce libros al año. => Más que conseguido! He leido mogollón de libros este año y me he puesto muy fuerte con la lectura.

  4. Tirarme en paracaídas. => Conseguido! Por fin después de dos años he tenido tiempo y las condiciones meteorológicas han sido las ideales. La experiencia me decepcionó un poco porque esperaba más adrenalina.

  5. Visitar Suiza y Liechtenstein. => Existió la ortunidad pero “life happens” y hubo un cambio de planes de bastante última hora.

  6. Empezar a cocinar más decentemente => Conseguido! Estoy cocinando una vez por la semana pero son platos elaborados y así ya tengo la cena de todos los días.

Propósitos extras:

  1. Mejorar los artículos ya escritos de este blog. => Conseguido! Mejoré los que tenía en mente aunque en algunos casos fue una reescritura completa.

  2. Ir al carnaval de Köln => No conseguido. Se está convirtiendo en mi tendón de Aquiles y está perdiendo fuerza de motivación.

  3. Construir un proyecto monetizarlo antes de fin de año => Si no he hecho lo de construir no he hecho lo de monetizar…

  4. Mejorar mis habilidades de escritura en inglés. => Conseguido! No he asistido a ningún curso pero si que he mejorado mi escritura escribiendo muchos papers en inglés.

  5. Leer cada día. => Conseguido! A pesar de que no las tenía todas por las mañanas y por las noches he leído un poco todos los días. Me ha ayudado a dormir más relajadamente y a completar mi objetivo de doce libros al año.

  6. Escribir un research paper y publicarlo => No conseguido. No sabia si ponerlo en semi conseguido o en no y al final me he decantado por la segunda opción. Sencillamente escribí algo para la universidad y no se planteó la posibilidad de publicarlo. Quizás queda para el próximo año.

Lo que no me he propuesto pero he conseguido:

  1. He organizado TEDxTUM, he seguido con la “tradición” del año pasado.
  2. Escribí en el Oasi (la revista de la uni). Esta vez ya si que creo que ya he terminado con lo de escribir en el Oasi ya que no soy estudiante de la UPC.
  3. Un amigo me propuso de ir a un Hackathon y allí me planté :) La experiencia me gustó. Conocí gente muy interesante y aunque no creo que fuera un Hackathon estándar, me gustaría repetir.
  4. Soy Mentor. Del mismo modo que fui tutelado cuando me vine de Erasmus en Alemania ahora voy a compensar el altruismo que se me dio. Además me he apuntado a otro tipo de de Mentoria.
  5. Me he hecho Freelancer. Técnicamente lo hice muy a finales de hace dos años, pero creo que no hay constancia por lo que lo escribo en este año ya que mi mayor actividad ha sido durante este año.
  6. Inesperadamente he aprendido Lindyhoop (propuesta de una amiga). He seguido con salsa después de hacer un parón. He empezado rock. Y de vez en cuando hago workshops de Forró (baile brasileño).
  7. Participé en el Mobember (haciendo donación por supuesto). Fue divertido ver a la gente (y a mi mismo) con mostacho 😛
  8. Terminé la carrera. Finalmente. Aunque lo retrasé deliberadamente. Este ha sido el año!
  9. He participado en actividades más o menos regulares que echaba un poco de menos. Como hacer senderismo, visitar algunas ciudades de alrededores y jugar a póker.

El total tiene 9 de completados (verdes),  7 no completados (rojos) y 2 naranjas (conseguido a medias). Considero que sigue habiendo mucho rojo y lo que más me molesta es que algunas de las rojas realmente me gustaría que no fueran rojas. Tocará mejorar para el próximo año! :) De lo que no me propuse y he realizado estoy bastante contento es muy variado y no lo hubiera esperado.

Feliz año nuevo!

Consigue todos las publicaciones científicas que quieras

Cuando nos pica la curiosidad y buscamos algunos papers por internet algunas (y en según que campos muchas) veces las publicaciones científicas solo se pueden conseguir si tienes una institución grande respaldándote. Supongo que algunas empresas permiten a sus empleados comprar papers interesantes pero no todo el mundo tiene esta suerte. Por mi parte puedo decir que la TUM (mi uni) me ofrece un extenso abanico de opciones de dónde poder descargar los papers.

El siguiente sitio ruso nos permite descargar la mayoría de ellos usando como proxy algunas universidades.

http://sci-hub.net/

Lo que se tiene que hacer es buscar el paper como si estuvieras en google scholar (si ya sabes lo que quieres puedes poner el título). Luego pinchamos sobre el resultado de la búsqueda adecuado y automáticamente el website nos muestra el pdf (eso si, spameado con publicidad a tope).

Pero esto no se termina aquí. Si le pones “.sci-hub.io” después del “.com” del dominio te redirige automáticamente al artículo. Ejemplo: Vemos que http://www.sciencedirect.com/science/article/pii/S0045782501002717 se tiene que pagar pero si ponemos http://www.sciencedirect.com.sci-hub.io/science/article/pii/S0045782501002717 nos pedirá un captcha y luego ya nos mostrará el pdf.

Me cansé de editar documentos Latex a mano

Hace ya un tiempo escribía mis ficheros Latex a mano. Para los que no lo sepan, es un tipo de documento dónde escribes lo que quieres ver. A diferencia de Word no lo puedes hacer de forma visual sino que para que nos entendamos lo “programas”. Una vez terminado el documento lo compilas (como los programas) y tienes un pdf muy bonito. Latex lo hace bastante fácil para los dominios técnicos con las fórmulas y todo eso.

Escribirlos a mano queda de hacker badass, pero es algo duro. Para esto busqué una solución sencilla. Y esta solución la voy a compartir con vosotros (que majo que soy :D)
Lo mejor que he encontrado ha sido Kile. Lo mejor de todo es que funciona en Linux (party!!!). Lo recomiendo porqué:

  • Tiene interfaz gráfica
  • Completa los comandos
  • Tiene corrector ortográfico
  • Compila y muestra el documento con un click
  • Te señala los errores
  • Puedes tener la lista de tus ficheros latex

Nada más que añadir!

Arreglar las teclas de funciones para cambiar el brillo del portátil con Lubuntu

Como ya habrás notado en los últmos posts, tras la reinstalación de Lubuntu algunas he reconfigurado algunas cosas de mi ordenador. Una de estas ha sido arreglar las teclas de funciones para cambiar el brillo de la pantalla del portátil des del teclado.

La primera solución que encontré y que no funciona des del teclado es creando un bash script con la siguiente linea:

echo X > /sys/class/backlight/intel_backlight/brightness

Dónde X es el valor del brillo. Cada vez que quería cambiar el brillo tenia que ejecutar el fichero desde la consola cambiando la X por un numero del 1 al 4000.

La solución que me ha arreglado las teclas de funciones de forma permanente permitiéndome modificar la intensidad de brillo de la pantalla ha sido la siguiente. Primero de todo ejecutamos el siguiente comando en la terminal:

sudo gedit /etc/default/grub

Luego cambiamos

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash"

por

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash acpi_osi="

guardamos los cambios y ejecutamos la siguiente linea en la terminal

sudo update-grub

Sinceramente no entiendo muy bien el porqué de las lineas anteriores, pero la conclusión es que funciona 😀

Crear atajos de teclado en Lubuntu

Como ya sabréis he reinstalado Lubuntu (es como Ubuntu pero usando la interfaz gráfica LXDE). Lo primero que hago es crear un atajo en el teclado para abrir la consola pulsando la tecla Windows + T.

Primero tendremos que encontrar el fichero, que en mi caso está en:

/home/<Nombre_de_usuario>/.config/openbox/lubuntu-rc.xml

Luego en la sección de <keyboard> tenemos que añadir el comando que queramos tener. En mi caso para conseguir abrir la consola con la tecla windows + T he añadido las siguientes lineas:

<keybind key="W-T">
      <action name="Execute">
        <command>lxterminal</command>
      </action>
    </keybind>

Notese que en mi caso es la letra W para indicar tecla  Windows. Otros comandos:

A- significa “Alt+”
C- significa “Ctrl+”
S- significa “Shift+”
W- significa la tecla “Windows”

Para coger ideas de como se hacen las cosas lo que puedes hacer es mirar otros ejemplos dentro el fichero.

Cambiar el layout del teclado al español con Lubuntu

Después de una nueva instalación el teclado no me correspondía con la configuración del sistema. La primera solución que encontré para cambiar fue la siguiente aunque no nos cambia el layout de forma permanente. Simplemente se tiene que ejecutar el comando en la consola.

setxkbmap -layout "es"

Para conseguirlo de forma “permanente” he usado el Autostat que ofrece LXDE. Lo encontramos en:

Menu inicio > Preferences > Default applications for LXSession

En la nueva ventana vamos a la pestaña de Autostart y en “manual autostarted applications” añadimos el comando anterior. De esta forma cada vez que Lubuntu arranque se ejecutará el comando fijando el teclado al layout español.

Manual para instalar OpenVPN en Ubuntu con script

Hace ya algun tiempo me hice con un servidor y lo voy usando para hacer mis cosicas. Como por ejemplo instalar rTorrent para poder bajarme ficheros el cual estuvo acompañado de otro post para mover ficheros entre el servidor y mi ordenador. Esta vez lo que quiero hacer es usar el server como túnel para evitar contenidos restringidos en el país dónde estoy y mejorar la seguridad en redes abiertas.
Primero de todo tendremos que instalar el software necesario. Para ello ejecutando la siguiente linea en la consola bastará:

wget http://git.io/vpn --no-check-certificate -O openvpn-install.sh; chmod +x openvpn-install.sh; ./openvpn-install.sh

Para los que os gusta hacerlo paso a pasa y configurarlo todo al milímetro al final del post hay un link (en inglés) que os ayudará. Para el resto de mortales el siguiente script lo hace todo, es simplemente un autoinstaller que puede generar claves, revocar certificados y desinstalar OpenVPN.

#!/bin/bash
# OpenVPN road warrior installer for Debian-based distros

# This script will only work on Debian-based systems. It isn't bulletproof but
# it will probably work if you simply want to setup a VPN on your Debian/Ubuntu
# VPS. It has been designed to be as unobtrusive and universal as possible.

if [ $USER != 'root' ]; then
echo "Sorry, you need to run this as root"
exit
fi

if [ ! -e /dev/net/tun ]; then
echo "TUN/TAP is not available"
exit
fi

if [ ! -e /etc/debian_version ]; then
echo "Looks like you aren't running this installer on a Debian-based system"
exit
fi

# Try to get our IP from the system and fallback to the Internet.
# I do this to make the script compatible with NATed servers (lowendspirit.com)
# and to avoid getting an IPv6.
IP=$(ifconfig | grep 'inet addr:' | grep -v inet6 | grep -vE '127\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | cut -d: -f2 | awk '{ print $1}' | head -1)
if [ "$IP" = "" ]; then
IP=$(wget -qO- ipv4.icanhazip.com)
fi

if [ -e /etc/openvpn/server.conf ]; then
while :
do
clear
echo "Looks like OpenVPN is already installed"
echo "What do you want to do?"
echo ""
echo "1) Add a cert for a new user"
echo "2) Revoke existing user cert"
echo "3) Remove OpenVPN"
echo "4) Exit"
echo ""
read -p "Select an option [1-4]: " option
case $option in
1)
echo ""
echo "Tell me a name for the client cert"
echo "Please, use one word only, no special characters"
read -p "Client name: " -e -i client CLIENT
cd /etc/openvpn/easy-rsa/2.0/
source ./vars
# build-key for the client
export KEY_CN="$CLIENT"
export EASY_RSA="${EASY_RSA:-.}"
"$EASY_RSA/pkitool" $CLIENT
# Let's generate the client config
mkdir ~/ovpn-$CLIENT
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/ovpn-$CLIENT/$CLIENT.conf
cp /etc/openvpn/easy-rsa/2.0/keys/ca.crt ~/ovpn-$CLIENT
cp /etc/openvpn/easy-rsa/2.0/keys/$CLIENT.crt ~/ovpn-$CLIENT
cp /etc/openvpn/easy-rsa/2.0/keys/$CLIENT.key ~/ovpn-$CLIENT
cd ~/ovpn-$CLIENT
sed -i "s|cert client.crt|cert $CLIENT.crt|" $CLIENT.conf
sed -i "s|key client.key|key $CLIENT.key|" $CLIENT.conf
tar -czf ../ovpn-$CLIENT.tar.gz $CLIENT.conf ca.crt $CLIENT.crt $CLIENT.key
cd ~/
rm -rf ovpn-$CLIENT
echo ""
echo "Client $CLIENT added, certs available at ~/ovpn-$CLIENT.tar.gz"
exit
;;
2)
echo ""
echo "Tell me the existing client name"
read -p "Client name: " -e -i client CLIENT
cd /etc/openvpn/easy-rsa/2.0/
. /etc/openvpn/easy-rsa/2.0/vars
. /etc/openvpn/easy-rsa/2.0/revoke-full $CLIENT
# If it's the first time revoking a cert, we need to add the crl-verify line
if grep -q "crl-verify" "/etc/openvpn/server.conf"; then
echo ""
echo "Certificate for client $CLIENT revoked"
else
echo "crl-verify /etc/openvpn/easy-rsa/2.0/keys/crl.pem" >> "/etc/openvpn/server.conf"
/etc/init.d/openvpn restart
echo ""
echo "Certificate for client $CLIENT revoked"
fi
exit
;;
3)
apt-get remove --purge -y openvpn openvpn-blacklist
rm -rf /etc/openvpn
rm -rf /usr/share/doc/openvpn
sed -i '/--dport 53 -j REDIRECT --to-port/d' /etc/rc.local
sed -i '/iptables -t nat -A POSTROUTING -s 10.8.0.0/d' /etc/rc.local
echo ""
echo "OpenVPN removed!"
exit
;;
4) exit;;
esac
done
else
echo 'Welcome to this quick OpenVPN "road warrior" installer'
echo ""
# OpenVPN setup and first user creation
echo "I need to ask you a few questions before starting the setup"
echo "You can leave the default options and just press enter if you are ok with them"
echo ""
echo "First I need to know the IPv4 address of the network interface you want OpenVPN"
echo "listening to."
read -p "IP address: " -e -i $IP IP
echo ""
echo "What port do you want for OpenVPN?"
read -p "Port: " -e -i 1194 PORT
echo ""
echo "Do you want OpenVPN to be available at port 53 too?"
echo "This can be useful to connect under restrictive networks"
read -p "Listen at port 53 [y/n]: " -e -i n ALTPORT
echo ""
echo "Finally, tell me your name for the client cert"
echo "Please, use one word only, no special characters"
read -p "Client name: " -e -i client CLIENT
echo ""
echo "Okay, that was all I needed. We are ready to setup your OpenVPN server now"
read -n1 -r -p "Press any key to continue..."
apt-get update
apt-get install openvpn iptables openssl -y
cp -R /usr/share/doc/openvpn/examples/easy-rsa/ /etc/openvpn
# easy-rsa isn't available by default for Debian Jessie and newer
if [ ! -d /etc/openvpn/easy-rsa/2.0/ ]; then
wget --no-check-certificate -O ~/easy-rsa.tar.gz https://github.com/OpenVPN/easy-rsa/archive/2.2.2.tar.gz
tar xzf ~/easy-rsa.tar.gz -C ~/
mkdir -p /etc/openvpn/easy-rsa/2.0/
cp ~/easy-rsa-2.2.2/easy-rsa/2.0/* /etc/openvpn/easy-rsa/2.0/
rm -rf ~/easy-rsa-2.2.2
rm -rf ~/easy-rsa.tar.gz
fi
cd /etc/openvpn/easy-rsa/2.0/
# Let's fix one thing first...
cp -u -p openssl-1.0.0.cnf openssl.cnf
# Fuck you NSA - 1024 bits was the default for Debian Wheezy and older
sed -i 's|export KEY_SIZE=1024|export KEY_SIZE=2048|' /etc/openvpn/easy-rsa/2.0/vars
# Create the PKI
. /etc/openvpn/easy-rsa/2.0/vars
. /etc/openvpn/easy-rsa/2.0/clean-all
# The following lines are from build-ca. I don't use that script directly
# because it's interactive and we don't want that. Yes, this could break
# the installation script if build-ca changes in the future.
export EASY_RSA="${EASY_RSA:-.}"
"$EASY_RSA/pkitool" --initca $*
# Same as the last time, we are going to run build-key-server
export EASY_RSA="${EASY_RSA:-.}"
"$EASY_RSA/pkitool" --server server
# Now the client keys. We need to set KEY_CN or the stupid pkitool will cry
export KEY_CN="$CLIENT"
export EASY_RSA="${EASY_RSA:-.}"
"$EASY_RSA/pkitool" $CLIENT
# DH params
. /etc/openvpn/easy-rsa/2.0/build-dh
# Let's configure the server
cd /usr/share/doc/openvpn/examples/sample-config-files
gunzip -d server.conf.gz
cp server.conf /etc/openvpn/
cd /etc/openvpn/easy-rsa/2.0/keys
cp ca.crt ca.key dh2048.pem server.crt server.key /etc/openvpn
cd /etc/openvpn/
# Set the server configuration
sed -i 's|dh dh1024.pem|dh dh2048.pem|' server.conf
sed -i 's|;push "redirect-gateway def1 bypass-dhcp"|push "redirect-gateway def1 bypass-dhcp"|' server.conf
sed -i "s|port 1194|port $PORT|" server.conf
# Obtain the resolvers from resolv.conf and use them for OpenVPN
cat /etc/resolv.conf | grep -v '#' | grep 'nameserver' | grep -E -o '[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}' | while read line; do
sed -i "/;push \"dhcp-option DNS 208.67.220.220\"/a\push \"dhcp-option DNS $line\"" server.conf
done
# Listen at port 53 too if user wants that
if [ $ALTPORT = 'y' ]; then
iptables -t nat -A PREROUTING -p udp -d $IP --dport 53 -j REDIRECT --to-port $PORT
sed -i "/# By default this script does nothing./a\iptables -t nat -A PREROUTING -p udp -d $IP --dport 53 -j REDIRECT --to-port $PORT" /etc/rc.local
fi
# Enable net.ipv4.ip_forward for the system
sed -i 's|#net.ipv4.ip_forward=1|net.ipv4.ip_forward=1|' /etc/sysctl.conf
# Avoid an unneeded reboot
echo 1 > /proc/sys/net/ipv4/ip_forward
# Set iptables
iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to $IP
sed -i "/# By default this script does nothing./a\iptables -t nat -A POSTROUTING -s 10.8.0.0/24 -j SNAT --to $IP" /etc/rc.local
# And finally, restart OpenVPN
/etc/init.d/openvpn restart
# Let's generate the client config
mkdir ~/ovpn-$CLIENT
# Try to detect a NATed connection and ask about it to potential LowEndSpirit
# users
EXTERNALIP=$(wget -qO- ipv4.icanhazip.com)
if [ "$IP" != "$EXTERNALIP" ]; then
echo ""
echo "Looks like your server is behind a NAT!"
echo ""
echo "If your server is NATed (LowEndSpirit), I need to know the external IP"
echo "If that's not the case, just ignore this and leave the next field blank"
read -p "External IP: " -e USEREXTERNALIP
if [ $USEREXTERNALIP != "" ]; then
IP=$USEREXTERNALIP
fi
fi
# IP/port set on the default client.conf so we can add further users
# without asking for them
sed -i "s|remote my-server-1 1194|remote $IP $PORT|" /usr/share/doc/openvpn/examples/sample-config-files/client.conf
cp /usr/share/doc/openvpn/examples/sample-config-files/client.conf ~/ovpn-$CLIENT/$CLIENT.conf
cp /etc/openvpn/easy-rsa/2.0/keys/ca.crt ~/ovpn-$CLIENT
cp /etc/openvpn/easy-rsa/2.0/keys/$CLIENT.crt ~/ovpn-$CLIENT
cp /etc/openvpn/easy-rsa/2.0/keys/$CLIENT.key ~/ovpn-$CLIENT
cd ~/ovpn-$CLIENT
sed -i "s|cert client.crt|cert $CLIENT.crt|" $CLIENT.conf
sed -i "s|key client.key|key $CLIENT.key|" $CLIENT.conf
tar -czf ../ovpn-$CLIENT.tar.gz $CLIENT.conf ca.crt $CLIENT.crt $CLIENT.key
cd ~/
rm -rf ovpn-$CLIENT
echo ""
echo "Finished!"
echo ""
echo "Your client config is available at ~/ovpn-$CLIENT.tar.gz"
echo "If you want to add more clients, you simply need to run this script another time!"
fi

“Happy tunneling

Bonus: Para los que os guste un poco más el heavy metal aquí un tutorial paso a paso con explicaciones más detalladas.

Porque he decidido no borrar a nadie más de Facebook o el porque las conexiones débiles importan

Prácticamente des de que me abrí una cuenta en Facebook he ido eliminando los “amigos” con los que perdía el contacto. Ya sea porque nos dejamos de ver o porque hemos ido perdiendo los intereses comunes. De este modo siempre tenía las personas con las que compartía más tiempo y a los que quería también dedicar más tiempo de calidad. De este modo tenía una cuenta minimalista.

He mantenido mi perfil entre 200 y 300 personas durante años hasta que di con un artículo que explicaba porque mantener el contacto con conocidos (conexiones débiles) es importante. Mientras que las conexiones fuertes (amistades) son difíciles de sostener en cantidad. El valor de estas recae en como de fuerte sea esta conexión. Contrariamente, con las conexiones débiles lo que importa no es intensificar la fuerza de la conexión si no la cantidad y variedad de ellas. Aunque ciertamente obtener una conexión débil es el primer paso para hacer una amistad no siempre puede evolucionar la relación de este modo.

Una persona con la que mantenemos una relación más íntima (conexión fuerte) se tiende a compartir muchos más que intereses comunes. Con alguien con quién tienes una conexión fuerte uno tiende a compartir espacios, actividades y (atención) círculos de contactos. Estos factores determinan que sea una conexión fuerte.

Si con las conexiones fuertes se comparten círculos de amistades y actividades existe una redundancia de información que ya se obtiene de primera mano u por otras amistades. Lo bueno de no compartir tantos puntos en común con las conexiones débiles es que sirven de puente a círculos de amistades a los que no se tiene acceso de otra forma. Estos puentes son los que nos pueden aportar nueva información o dar acceso a sitios (o puestos de trabajo) a los que no tendríamos acceso de otro modo. Aunque el primer impulso es pedir ayuda a nuestras amistades más intimas en algunas ocasiones puede no ser la mejor opción.

Las conexiones fuertes tienen también sus ventajas. La información fluye más rápidamente, tienden a ser fuentes más creíbles y van a influenciar mucho más en las decisiones. Para favorecer la entropía tenemos que hacer uso de las conexiones débiles ya que nos aportan nuevos conocimientos e ideas a los cuales no teníamos acceso anteriormente.

Bonus: Para los que queráis leer la publicación entera en inglés http://www.cs.kent.ac.uk/people/staff/saf/share/great-missenden/reference-papers/Weak%20Ties.pdf