1 dic 2015

Configurando NoIP en GNU-Linux (Debian, Ubuntu, Raspian, Mint.. etc)

Nota: La siguiente entrada es parte de la serie "Servidor de Desarrollo en una Raspberry" pero debido a que Raspbian es un Debian modificado estos pasos aplican para todas aquellas distribuciones de Linux basadas en Debian (Ubuntu, Kubuntu, Mint, etc...)
Para acceder a un servicio en red (una pagina web, un servidor de base de datos, un servidor ftp, etc...) es necesario conocer la dirección en la cual se encuentra publicado dicho servicio, esta dirección no es otra mas que la IP, dependiendo de nuestro servicio de internet esta IP puede ser dinámica o estática, en el primer caso bastara con memorizar dicha IP para acceder al servicio pero en el segundo caso lo mas recomendable sería utilizar un nombre de dominio el cual enmascare nuestra IP. Aunque pensándolo bien sea lo mejor en ambos casos en lugar de recordar números extraños.

No-IP permite enmascarar una dirección IP con un nombre de dominio fácil de recordar, como misitio.ddns.net, y que este siempre este disponible sin importar si nuestra IP es o no estática.

Configurar No-IP es bastante sencillo, basta con obtener un usuario, contraseña y un nombre de dominio en su pagina. El dominio podrá ser un dominio gratuito con extensión .ddns.net o cualquier dominio que poseamos.

Primero que nada tenemos que asegurarnos que nuestro servidor tenga una IP local fija, en seguida nos aseguraremos de contar con los paquetes necesarios para compilar el cliente de NoIP.
sudo apt-get install make gcc g++
Y nos colocaremos en el directorio /usr/local/src/, descargaremos el cliente, descomprimiremos el paquete y lo instalaremos, con los siguientes comandos:
cd /usr/local/src/
sudo wget http://www.noip.com/client/linux/noip-duc-linux.tar.gz
sudo tar xf noip-duc-linux.tar.gz
sudo rm noip-duc-linux.tar.gz
cd noip-2.1.9-1/
sudo make install
A continuación se iniciara un asistente en linea de comandos, el cual nos pedirá el usuario y contraseña que dimos de alta en la página de NoIP, posteriormente nos pedirá que elijamos el dominio que queremos utilizar. En caso de que sea el único que hayamos registrado nos lo dará por default. Por último nos solicitará que confirmemos el tiempo de actualización de nuestro dominio (recomiendo dejar los 30 minutos por default). 

Importante: Con esto habremos instalado el cliente el cual nos resolverá las peticiones del dominio que hemos configurado sin importar la IP que tenga nuestro servidor lo cual no servirá de mucho si no configuramos los puertos de nuestro modem para que los redireccione a la IP local de nuestro servidor, esto queda fuera de esta guía ya que depende mucho del modem que poseamos. En mi caso es un Hawuei HG532e (de Telmex) en el cual se configura en el menú Avanzado/NAT/Mapeo de Puerto. Desde dicho menú seleccionamos la aplicación y el equipo al cual será direccionado.


1 nov 2015

Servidor de desarrollo en una Raspberry Pi (Parte 2)

Nota: Esta entrada es la segunda parte de la entrada Servidor de desarrollo en una Raspberry Pi (Parte 1) en la cual explique el modo de cargar la imagen de Raspbian en una microSD. En esta entrada hablare de la configuración primaria de Raspbian.
Una vez puesta la microSD en la Raspberry Pi debemos conectar, al menos la primera vez el teclado y mouse en los puertos USB, una pantalla al puerto HDMI, el cable ethernet y por último la corriente eléctrica al puerto microUSB.

Al iniciar el Raspbian habrá que iniciar la configuración inicial, abriendo la terminal y tecleando:
sudo raspi-config
Esto nos abrirá una ventana de color azul con un menú con distintas opciones:
Al copiar la imagen en nuestra memoria esta ocupa un tamaño limitado, la primera opción Expand Filesystem nos permite utilizar el espacio completo disponible en la tarjeta microSD.

Change User Password por default en Raspbian se incluyen 2 usuarios root y pi. Esta opción del menú permite modificar la contraseña del usuario pi, la cual por default es raspberry.

Boot Options nos permite elegir el modo en el cual iniciara Raspbian:

  1. Console - Inicio en modo texto solicitando usuario y contraseña 
  2. Console Autologin - Inicio en modo texto loggeado con el usuario pi
  3. Desktop - Modo gráfico
  4. Desktop Autologin - Inicio en modo gráfico loggeado con el usuario pi
Wait for Network at boot esta opción nos permite indicar si queremos dar prioridad al uso de la red al inicio.

Internationalisation Options dentro de esta opción podremos configurar las opciones regionales, el idioma y la distribución del teclado.

Enable Camera esta opción habilita el puerto físico para el modulo externo de la cámara para la Raspberry Pi

Add to Rastrack permite que nuestra Raspberry sea rastreada por el sitio web Rastrack. Este sitio es una herramienta que ubica geograficamente a las Raspberry Pi a las que les han habilitado esta opción. No tiene ningún otro uso, más que ese. Si deseas que tu Raspberry Pi aparezca en el mapa deberas nombrarla y registrar un correo electronico.

Overclock Esta opción permite aumentar la velocidad del procesador. Antes de jugar con los parámetros hay que tener en cuenta que el elevar la velocidad de procesamiento significara un mayor calentamiento en el procesador, un mayor consumo eléctrico y un mayor desgaste físico, es decir se acortara la vida útil de la Raspberry. Si aun así se quiere probar les recomiendo usar disipadores de calor en los chips de la placa e incluso usar algún ventilador. Y usar el comando:
/opt/vc/bin/vcgencmd measure_temp
Para monitorear la temperatura de la placa... que debe andar entre los 40º C y 50º C.

Advanced Options presenta un submenu con diferentes opciones que podremos configurar, entre las que destacan el poder nombrar a nuestra Raspberry dentro de la red local, habilitar o deshabilitar el uso de SSH, elegir si queremos que el audio salga por el jack 3.5mm o por el HDMI, seleccionar la cantidad de memoria compartida entre la CPU y la unidad de gráficos (GPU), forzar la actualización, entre otras.

About raspi-config por ultimo nos muestra una breve descripción de la herramienta.

Una vez terminada la configuración inicial yo recomiendo, desconectar teclado, mouse y display y conectarnos via ssh para esto requerimos conocer la IP de la raspberry para lo que utilizamos el comando
ifconfig
Para conectarnos desde MacOSX y GNU Linux bastara con abrir la consola y teclear:
ssh usuario@dominio
En el caso de la Rasp usaremos el usuario root default "pi" y el dominio en este caso, será nuestra ip (más adelante explicare como configurar un dominio):
ssh pi@192.168.1.5
Si requerimos conectarnos desde windows tendremos que usar algún programa, yo recomiendo Putty Manager.
Nota: A pesar de configurar con el asistente y en el modo visual los parámetros de idioma tuve algunos problemas con perl ya que no se configuraban correctamente. Luego que consultar varios sitios me entere que dicho error era provocado por el ssh al conectarme, para resolverlo edite el archivo /etc/ssh/ssh_config (En MacOS) y comenté (colocando un # al inicio) la linea: 
# SendEnv LANG LC_* 
En la siguiente entrada explicaré como activar todos los servicios restantes en nuestro servidor.

30 oct 2015

Servidor de desarrollo en una Raspberry Pi (Parte 1)

Hace ya un tiempo que venia dandole vuelta a la idea de hacerme de una Raspberry Pi lo cual no había sido posible hasta hoy. Durante todo ese tiempo tuve (valga la redundancia) mucho tiempo para idear un posible uso practico y sencillo que me ayudara a conocer las posibilidades de una Rasp y he aquí que he decidido montar un servidor basado en GNU-Linux!!

Sí, lo se nada fuera de lo común.. pero bueno.. por algo había que empezar...

La idea de montar el servidor surge de la necesidad de tener un servidor de desarrollo de bajo costo y bajo consumo eléctrico, en el que, un pequeño equipo de desarrolladores puedan trabajar a la par en uno o varios proyectos. Para ello el servidor debe contar con las siguientes características:
  • Accesible remotamente vía Internet (HTTP y SSH)
  • Servidor web (Apache + PHP)
  • Servidor de Base de Datos (MySQL)
  • Transferencia de Archivos vía FTP
  • Controlador de versiones (git)

Primero que nada hay que entender que la Raspberry Pi no es mas que una computadora, lista para usarse, basta conectar los cables y listo... Claro que antes habra que ponerle una microSD con un sistema operativo basado en ARM para que nuestra mini computadora funcione, piece of cake.

Primero que nada tendremos que descargarnos el archivo *.img (comprimido en un *.zip) desde la pagina oficial. En mi caso opte por Raspbian, una distribución basada en Debian para la Raspberry Pi El paso siguiente depende del sistema operativo y del modo en el que lo queramos hacer:
NOTA: Al intentar descomprimir el archivo usando la Utilidad de Compresión nativa de MacOS obtenía un archivo *.cpgz, investigando un poco, opte por utilizar The Unarchiver.
En GNU-Linux y en Unix (Mac) desde la terminal

Para los valientes que gustan de usar la terminal, primero que nada debemos saber cual es la ruta en la cual se esta montando nuestra microSD, una vez que la conectemos y abramos la terminal tecleamos:

En linux 
df -h
En mac
diskutil list
Los comandos anteriores nos muestran un listado de los dispositivos conectados, si tenemos dudas para identificar cual es el que queremos utilizar podemos correr el comando antes y después de conectar la memoria. El dispositivo deberá tener un nombre como disk o ssd (En Linux o Mac, respectivamente) en el directorio /dev acompañado de un numero. Acto seguido debemos desmontar esa unidad:

En linux 
unmount /dev/ssd#
En mac
diskutil unmountDisk /dev/disk#
Donde el # es el numero que mencionaba anteriormente. Finalmente usaremos el comando dd para copiar el contenido del *.img en la unidad deseada, este comando es el mismo para ambos sistemas operativos:
dd bs=tamaño_bloque if=archivo_imagen of=ruta_destino
Donde bs indica el tamaño de los bloques que al transferir, if y of son la imagen y el directorio de destino. El destino seria la ruta de nuestra unidad previamente montada. Un ejemplo sería:
dd bs=4M if=2015-09-24-raspbian-jessie.img of=/dev/sdd
En este ejemplo estaríamos usando bloques de 4MB, en caso de que el comando nos diera error tendríamos que cambiar 4M por 1M lo cual aumentaría el tiempo de copiado.

Al correr el comando anterior no tendríamos ningún indicador de tiempo restante lo cual hay que tener en cuenta... y ser pacientes... 
Alternativas a la terminal

En caso de no querer usar la consola podemos emplear estas aplicaciones:

Ambas opciones funcionan de la misma manera, conectamos la microSD, la seleccionamos, seleccionamos la imagen y esperamos.

Una vez copiada la imagen en la SD lo que queda por hacer es expulsar la unidad e introducirla en la Raspberry y ahora si.. conectar todo.

En la entrada posterior "Servidor de desarrollo en una Raspberry Pi (Parte 2)" explico las configuraciones básicas que habrá que hacer para que nuestro servidor quede funcionando.

28 oct 2015

NTFS gratis en Mac OS X (El Capitan)

Dentro de la eterna competencia entre los sistemas operativos se incluye el tema de los formatos de archivos, en windows el estándar es NTFS como para Linux es ext3/ext4, en Mac OS X se usa HFS+ estos formatos (nativamente) son incompatibles por razones obvias.

Como usuario de estos 3 sistemas operativos busco siempre el modo de tener a la mano mis archivos sincronizados y al día independientemente del SO que este utilizando. Para ello utilizo como pivote un disco duro externo (con formato NTFS) y rutinas de sincronización para cada uno de los sistemas que utilizo (ROBOCOPY, rsync.. en otra entrada hablare al respecto). 

El problema radica, en que a diferencia de GNU-Linux Mac OSX nativamente restringe la escritura en los discos duros con formato NTFS, esto se puede solucionar con 2 soluciones comerciales:


Pero no son las únicas opciones existentes, existe una solución gratuita que utiliza NTFS-3G, el driver de código libre para los discos con formato NTFS. Este driver permite crear, renombrar, mover o borrar ficheros de cualquier tamaño en cualquier dispositivo con NTFS.

Antes que nada debemos instalar OSX Fuse es la opción gratuita que utiliza NTFS-3G. Durante la instalación, debemos marcar la opción “MacFUSE Compatibility Layer“ y posteriormente debemos reiniciar el equipo.

Una vez reiniciado deberemos instalar el NTFS-3G y de nueva cuenta reiniciar el equipo. Una vez hecho podremos escribir ficheros en dispositivos con NTFS.

Descarga OSX Fuse (Compatible con El Capitan)


Edición: La versión del NTFS-3G que a mi me funcionó fue la 2010.10.2, actualmente funcionando en MacOS X 10.11.4