Tutoriales, noticias y soluciones informáticas

PiServer con Docker – Parte 1: Primeros pasos hacia un servidor con Docker

Conectores de una raspberry

Hace ya unos cuantos años creamos en este mismo blog una serie de tutoriales para aprender a montar un servidor casero con una Raspberry. Empezamos aprendiendo a instalar Raspbian, que era de aquella el sistema operativo oficial para estos dispositivos, y después hemos ido montando sobre ese sistema un montón de «Servicios» para nuestro hogar. Pi-hole, un servidor de VPN, clientes de aMule y Transmision y hasta un servidor de Plex.

El tiempo ha pasado y han cambiado muchas cosas. Raspbian ha evolucionado y ahora se llama «Raspberry pi OS». Además ahora tenemos herramientas mucho mejores que nos facilitan mucho la vida a la hora de instalar y configurar el sistema, y tenemos tecnologías maduras que nos permiten montar todo de forma muchísimo más sencilla. Así que creo que es un buen momento de volver a explicar de nuevo todo lo que hemos montado de aquella. Seguiré enfocando estas guías a gente que está empezando en el uso de estos dispositivos y que no tienen ni idea de Linux (Creo que es la forma correcta de abordar este tema), por lo que os ruego a los expertos que me perdonen si me paro en exceso explicando comandos demasiado «basicos». Además también quiero introducir unos cambios muy importantes respecto a lo que hicimos hace unos años:

  • Vamos a adaptar estos tutoriales a las nuevas tecnologías y sistemas que han ido apareciendo en los últimos años.
  • Antes de ponernos a instalar cosas, vamos a aprender qué es docker, para qué sirve y cómo se usa (tendremos un artículo íntegramente de este tema)
  • Una vez que sepamos usar docker, vamos a emplearlo para instalar todo lo que habíamos instalado en los tutoriales anteriores (Sí… será como una repetición de esos mismos tutoriales pero usando docker).
  • Y una vez que sepamos montar todo lo que ya habíamos montado previamente ¿Por qué no aprender a instalar muchas más cosas en nuestro servidor?
Bueno... muchas más cosas no podrán ser. Una Raspberry es un dispositivo muy limitado y como le metas mucha caña seguro que acaba explotando. 
Raspberry sobre un macbook

Para tu información, Usuario Anónimo, todo ese software (sin dockerizar) lo he llegado a usar activamente, todo a la vez, en una mísera Raspberry Pi 2. Las Raspberrys actuales tienen más núcleos, más capacidad de proceso, más memoria y procesadores de 64 bits en lugar de 32 por lo que son mucho más potentes y pueden hacer más cosas a la vez. Aún así es evidente que no tienen las capacidades que pueda tener un ordenador completo moderno, pero sí que tienen potencia más que suficiente como para aguantar con todo esto y más.

En todo caso es importante indicar una cosa. Excepto este primer tutorial (Que está enfocado a la instalación del sistema operativo en una Raspberry), el resto de artículos podréis usarlos tal cual en cualquier instalación linux basada en Ubuntu o Debian. Así que lo que aprendamos aquí podremos aplicarlo a instalaciones más complejas.

¿Qué necesitamos para seguir el tutorial?

Para poder montar nuestro pequeño servidor vamos a necesitar lo siguiente:

  • Un ordenador (Da igual que tenga instalado Windows, Mac OS o Linux). Lo necesitaremos para acceder a nuestra pequeña raspberry porque a ésta ni siquiera le vamos a conectar un monitor. Trabajaremos con ella siempre de forma remota.
  • Una placa Raspberry Pi. Para los proyectos que crearemos, nos servirá cualquiera desde la Raspberry Pi 3 en adelante. Incluso una Zero 2 W nos podría servir (Ojo: una zero normal no nos serviría porque no soportaría un sistema operativo de 64 bits). Una sencilla búsqueda en Amazon os muestra algunas opciones.
  • Una tarjeta de memoria Micro SD que hará las veces de disco duro de nuestra Raspberry. Vamos a meterle bastante caña, así que intentad ponerle una decente (no la compréis en el bazar de al lado de casa. Coged una en una tienda de informática de confianza). Os recomendaría usar una de un mínimo de 32 GB de almacenamiento. Este enlace os da algunas opciones.
  • Necesitamos que nuestro ordenador pueda escribir en esa tarjeta de memoria, así que si no tiene un lector de tajetas compatible, necesitaríamos ponerle un adaptador USB que permita escribir en ella. Me refiero a algo como esto.
Adaptador usb-MicroSD
  • Os recomiendo encarecidamente conectar la raspberry con un cable de red directamente al router. Evidentemente no podremos hacerlo si usamos una Raspberry Pi Zero 2 W, pero si no es así, buscad un cable de red y hacedle un sitio a la raspberry al lado del router. Usad sólo la conexión WiFi de la Raspberry como última opción.
  • Para muchos de los proyectos que vamos a hacer, vamos a necesitar mapear puertos en el router que os otorga conexión a internet, así que tened a mano las credenciales de acceso al vuestro.
  • A colación con este último punto, voy a suponer que sabéis todo lo referente a direcciones IP (Sabéis qué es una dirección ip, qué segmento de IP’s estáis usando en vuestra instalación, etc…). Suelo detenerme en cada punto en este tipo de tutoriales, pero pararme a explicar qué es una dirección IP tal vez sea excesivo.

Es importante indicar que, con la excepción de este primer tutorial, el resto de lo que vayamos a aprender se va a poder aplicar tanto en una Raspberry como en cualquier otro equipo en el que hayáis instalado una distribución Linux (al menos las derivadas de Debian y Ubuntu).

Sin más preámbulos, vamos a ver cómo podemos instalar un sistema operativo optimizado para funcionar como servidor en nuestra Raspberry.

Descarga e instalación de Raspberry Pi OS.

Antes de nada, debemos tener claro lo que queremos descargar. Lo primero que haremos en cuanto tengamos el sistema operativo listo es descargar docker. Por desgracia tanto docker como muchas de las aplicaciones que vamos a instalar van a necesitar un sistema operativo de 64 bits.

Espera, espera... pero la Raspberry Pi 2 es de 32 bits. ¿Este tutorial no se puede seguir si tienes una Raspberry Pi 2?

Efectivamente. Si tienes una Raspberry Pi 2 mejor instalar todo tal y cómo vimos hace unos años. Muchas de las cosas que vamos a hacer a partir de ahora sólo nos van a funcionar con una Pi 3 o superior.

Con esta información en mente, nos vamos a la página oficial del sistema operativo de la Raspberry, que es ésta.

https://www.raspberrypi.com/software/

En la que encontraremos actualmente algo similar a esto.

Descarga de Raspberry Pi OS

Debemos descargar el programa que nos indica la web, llamado «Raspberry Pi Imager». Descargaremos la versión creada para el sistema operativo que usemos en nuestro ordenador (Sí: existe el mismo programa para Windows, Mac y Linux). Una vez descargado e instalado, el programa nos mostrará unos menús que nos permitirán personalizar parámetros muy interesantes de la instalación del sistema operativo. Es hora de enchufar nuestra tarjeta microSD en el ordenador y ejecutar el programa. Lo primero que nos muestra es ésto:

Menú de Raspberry Pi Imager
Screenshot

Lo que debemos hacer es ir pulsando por orden esos tres botones y seleccionando entre las opciones que nos dan. Así que pulsamos en el primero («ELEGIR DISPOSITIVO») y nos aparecerá algo como ésto .

Sistemas a elegir

De esta lista, seleccionamos el dispositivo en el que vayamos a hacer la instalación. Con esto, Raspberry Pi Imager va a optimizar el sistema operativo para nuestro dispositivo en concreto. Ahora toca pulsar la siguiente opción, que es «ELEGIR SO» para elegir qué sistema operativo vamos a instalar.

¿Como que elegir el sistema operativo? ¿Pero esto no es para instalar Raspberry Pi OS?

Efectivamente Usuario Anónimo. Pero ahora mismo desde este programa se pueden elegir varias opciones de Raspbery Pi OS. Podemos elegir las versiones de 32 y 64 bits, con entorno gráfico o sin él, la última versión o una versión anterior y más estable… Incluso se nos da la opción de instalar otros sistemas operativos que ni siquiera son Raspberry Pi OS pero que son igualmente compatibles con nuestra raspberry.

En la pantalla principal no está la opción que queremos escoger, así que vamos a seleccionar la opción «Raspberry Pi OS (Other)».

Elijo Raspberrry pi OS (Other)

En esta pantalla sí que tendremos la opción que nos interesa. Escogeremos para montar nuestro servidor «Raspberry Pi OS Lite (64-bit)».

Elijo Raspberry Pi OS Lite (64 bit)
Espera, espera... pero ahí pone "with no desktop environment". ¿Vamos a instalar un sistema operativo sin entorno gráfico? ¡Pero así va a ser imposible usar nada!

Tranquilo Usuario Anónimo. Respira despacio y no te estreses. Ya te dije que no íbamos a conectar ningún monitor en ningún momento a nuestra Raspberry. No nos va a hacer falta el entorno gráfico en absoluto. Por poder, podemos instalarlo, pero lo único que conseguiremos es que el entorno gráfico consuma más recursos a la máquina. Sin entorno gráfico va a ir todo mucho más fluído y como todo lo vamos a configurar tecleando no vamos a echarlo de menos en ningún momento. Sé que es algo que choca mucho a la gente que se inicia en servidores linux, pero en cuanto te has habituado pasa a ser incluso más cómodo que lidiar con enormes interfaces gráficas.

Una vez seleccionado el sistema operativo debemos elegir dónde instalarlo. Toca conectar a nuestro ordenador la tarjeta MicroSD que vamos a usar en la Raspberry a modo de disco duro. Una vez conectada, en la pantalla principal del «Raspberry PI Imager» seleccionamos la opción «elegir almacenamiento» y clicamos en nuestra tarjeta.

SDXC Reader media
¡¡Pero a mi me sale más de un dispositivo!!

Pues eso es que debes tener algún «Pen Drive» o alguna otra tarjeta conectada en tu ordenador. Identifica bien la tarjeta que vas a grabar, porque si escoges la incorrecta a lo mejor acabas perdiendo datos de algún almacenamiento importante. Ante la duda desconecta todo lo que tengas conectado en los puertos USB de tu ordenador y deja sólo la tarjeta que vas a poner en la Raspberry.

Con estos tres datos importantes cubiertos, le damos a «Siguiente». Antes de grabar todo en la tarjeta nos aparece este mensaje.

Personalización del SO

Y este mensaje ¡¡¡MOLA MUCHO!!! ¿Por qué? Pues porque nos va a permitir saltarnos gran parte del tutorial que habíamos hecho hace años para hacer ajustes en la tarjeta. Vamos a pulsar en «Editar Ajustes» y nos saldrá algo así:

Opciones de personalización

Vamos a editar las siguientes partes:

  • Nombre de anfitrión: Ponemos como queremos que se llame nuestro pequeño servidor. Sed creativos, pero no pongáis espacios ni símbolos raros. Ceñíos a letras, números y guiones.
  • Establecer nombre de usuario y contraseña: Poned el usuario y contraseña con el que vayáis a hacer login en el equipo. Y no me cansaré de repetirlo: ¡¡No uséis contraseñas que ya estáis usando en otros sitios!! ¡¡No pongáis la misma contraseña que usáis para encender el ordenador, la del móvil, la del correo o la de Tinder!! ¡¡Estamos montando un servidor, por Jobs!! Aunque la raspberry sea pequeñito va a ser un equipo importante para nosotros, así que hay que darle seguridad desde el minuto cero.
!Deja a Steve Jobs en paz! (Cachis... ¿tampoco puedo usar la de Tinder? Pues vaya...)
  • ¿Configurar Lan Inalámbrica? ¿Seguro que vas a conectar un servidor por WiFi? Sólo cubrid estos campos en caso de no tener otra opción más que conectar vuestra Raspberry usando la red WiFi. Intentad siempre conectarla a través del cable de red, pero si no es posible, entonces tendréis que cubrir los campos de SSID (el nombre de vuestra red WiFi) y contraseña. En todo caso si no usáis la red WiFi (Que sería lo ideal), podéis dejar estos campos en blanco.
  • Establecer ajustes regionales: Simplemente ponéis los datos de la zona del mundo en la que estéis.

Un a vez que tengamos esta pestaña cubierta, nos vamos a la siguiente pestaña, llamada «Servicios».

Activación del ssh

Aquí nos debemos asegurar de tener marcada las opciones de «Activar SSH» y «usar autenticación por contraseña». Gracias a esta configuración podremos conectarnos a nuestra Raspberry sin necesidad de enchufarle físicamente un monitor, lo que es de agradecer.

Una vez hecho esto, pulsamos el botón «Guardar» y volveremos a tener una ventana muy similar a la que teníamos hace un rato, pero con más opciones clickables.

Personalización del SO - Paso final

Pulsamos «Sí» para aplicar los ajustes que hemos realizado. Ahora se nos mostrará lo siguiente:

Advertencia

En este caso pulsamos en «Sí» para grabar el sistema operativo en la tarjeta MicroSD. Eso sí: aseguraos que tenéis la tarjeta correctamente conectada a vuestro equipo.

Escribiendo en la tarjeta

Con todo esto, el programa se encargará de descargar él solito el sistema operativo que le hemos pedido, lo instalará en la tarjeta y lo preparará para que cuando la insertemos en nuestra Raspberry y la encendamos, el sistema operativo ya esté funcionando. Para hacer esto, hace unos años teníamos que hacer… digamos… «cosas extrañas», pero afortunadamente esos tiempos ya han pasado.

Si todo va bien, en un ratito deberíamos de ver algo como ésto:

Escritura exitosa

Ahora por fin tendremos la tarjeta lista para poner en nuestra Raspberry.

Arranque y acceso a nuestra raspberry.

Ahora procedemos sacar la tarjeta de nuestro ordenador, ponerla en la Raspberry y encenderla.

Muy bien, muy bien... pero recuerda que no tengo monitor. Ahora la raspberry se me ha convertido en un cacharro que tiene una luz verde que parpadea. ¿Cómo puedo usarla así? 

Pues muy sencillo. Pero antes de explicarte cómo nos vamos a conectar, te recomiendo bajar para tu sistema operativo un programa que escanee los dispositivos que hay en tu rango de ip’s. Para ello yo uso el «Angry IP Scanner», que podéis descargaros de este enlace. Al abrirlo, simplemente le tenéis que dar el rango de ip’s que estáis usando en vuestra casa (normalmente del 192.168.1.1 al 192.168.1.255, aunque puede ser otro) y luego tenéis que pulsar el botón «Comenzar».

Angry IP Scanner

El programa irá escaneando una por una todas las ip’s del rango y os dirá qué aparatos hay conectados en cada una de ellas. Simplemente tenéis que buscar el nombre que le habéis dado a vuestro dispositivo al configurar la tarjeta SD. En el ejemplo que os pongo es el 10.0.1.169. Simplemente anotad la ip que tenga asignada y quedaos con ese dato.

Ahora ya sabemos qué dirección IP tiene nuestra raspberry. Sólo tenemos que conectarnos a ella de alguna forma, y lo vamos a hacer por SSH.

¿Lo cualo? ¿SSH? ¿Eso qué es? ¿Sociedad Secreta de Hamsters? ¿Super Sapos Hipnóticos? ¿Sardinas Saltarinas Hiperactivas? ¿Sushi Sideral Hiperdelicioso?

Ehhhhh… va a ser que no. SSH significa «Secure Shell» y es uno de los métodos más usados a la hora de conectarse de forma remota a un terminal linux. Por ejemplo, si con Angry IP Scanner hemos visto que la ip de la raspberry es la 10.0.1.169, si usas linux en tu ordenador o Mac OS, usando la aplicación «Terminal», puedes conectar con tu Raspberry mediante SSH con un comando tal que así:

ssh usuario@10.0.1.169

Recuerda que el nombre de usuario sería el que has configurado justo antes de grabar la tarjeta SD de la Raspberry (al igual que la contraseña).

La conexión se vería algo similar a esto:

Conexión por ssh

Asegúrate de escribir «Yes» cuando te pregunte si estás seguro de que deseas conectarte y recuerda también poner la contraseña correcta de tu usuario cuando se te pregunte.

Ya, ya, lo que quieras, pero ¿y si soy una persona normal y uso Windows como persona normal que soy?

Pues puedes usar PowerShell (que ya viene de serie con Windows) y usar exactamente el mismo comando. Mira.

Conexión con powershell

O también puedes conectarte usando un software de terceros como «Putty», que es especifico para esta labor. Puedes descargarlo desde este enlace. Por cierto: Putty es software libre y gratuíto, así que es una opción muy interesante, aunque sólo funciona en Windows.

Cambiamos la ip de nuestra Raspbery por una ip fija.

El problema que tenemos ahora es que tal y cómo está configurada, ahora mismo la Raspberry tiene ip dinámica. Eso quiere decir que es factible que si apagamos la Raspberry y mañana la volvemos a encender, nos encontremos con que la ip sea diferente y tengamos que repetir el proceso anterior para averiguar su dirección IP. Este problema también es muy sencillo de corregir en las versiones modernas de Raspberry Pi OS.

Desde el propio SSH conectado a nuestra Raspberry (ya hayamos entrado desde el terminal, desde powershell o desde Putty), Introducimos el siguiente comando:

sudo nmtui

Cuando pulsemos enter, nos encontraremos con el siguente menú.

Seleccionar una opción en NMTUI

Pulsamos en «Edit a connection» y nos aparecerán las interfaces de red que tiene configurada la Raspberry.

Conexión cableada

Pulsamos en la conexión de red por la que estemos accediendo (en mi caso por «Wired Connection») y luego en «Edit». Ahora podremos ver la configuración de ese interfaz de red.

Ver configuración cableada

Quiero que os fijéis en la parte dónde indica cómo está configurada dirección ip de ese interfaz (tanto IPv4 como IPv6). Fijaos que en los dos casos se indica que la configuración es automática (la raspberry está cogiendo la ip que le da el router, lo que se llama DHCP, que son las siglas de «Dynamic Host Configuration Protocol»).

IPV4 automática

Eso es lo que no nos interesa. No queremos que la configuración de la IPv4 sea automática, sino manual, así que lo cambiamos.

La ponemos en manual

Una vez cambiado a «Manual» pulsamos en «Show» para ver los valores que tiene configurado nuestro interfaz.

Ya está cambiada

Y aquí vemos que toda la configuración está en blanco. Debemos poner la configuración deseada en los campos siguientes (fijaos que debéis poner una ip dentro del rango en el que esté funcionando vuestro router).

Ponemos la dirección ipv4 fija

En concreto debéis cubrir los siguientes campos (adecuando las direcciones a las que usa vuestro router en su red local).

  • Addresses (tal vez algo como 192.168.1.250, por poner un ejemplo)
  • Gateway (tal vez algo como 192.168.1.1)
  • DNS Servers (posiblemente algo como 1.1.1.1, que son las de Cloudflare, o algo como 8.8.8.8 que son las de Google).
ipv4 fija puesta

Una vez cubiertos esos campos, si nos vamos abajo de todo, podemos pulsar el botón que pone «OK».

Le damos a ok

Habremos vuelto a la lista de conexiones. Pulsamos en «Back».

volvemos a wired connection

Y por último salimos del programa pulsando «Quit».

salimos de nmtui

Para finalizar, reiniciamos nuestra raspberry con el siguiente comando.

sudo shutdown -r now
reiniciamos la máquina

La raspberry se apagará y se volverá a encender. Ahora podemos conectarnos a ella de nuevo a través de SSH, pero en este caso modificad la dirección ip en el comando de conexión, porque deberemos conectarnos con la dirección ip nueva que le hemos asignado.

Actualizamos nuestro sistema operativo y programas a la última versión.

Por último vamos a hacer una actualización del sistema operativo y aplicaciones de la raspberry. Lo que vamos a hacer en este paso grabadlo a fuego en vuestra memoria, porque son dos comandos que deberíais ejecutar de vez en cuando para asegurar que no haya ningún agujero de seguridad en el dispositivo.

El primer comando le va a decir a nuestro sistema operativo «Oye, búscame a ver si encuentras actualizaciones del sistema operativo o programas, pero no instales nada todavía». Es tan sencillo como entrar de nuevo a nuestra Rasberry por SSH y escribir este comando.

sudo apt-get update

El segundo comando hay que escribirlo sólo después de escribir el anterior (porque si no no funcionará correctamente). Lo que haremos con el segundo comando es pedirle a la rasberry que instale las actualizaciones que ha encontrado en el comando anterior. Sería el siguiente:

sudo apt-get dist-upgrade

Puede que este comando nos pida una confirmación acerca de si estamos seguros de actualizar los paquetes. Le decimos que sí (Pulsamos «Y» y luego pulsamos la tecla «Enter») y esperamos a que acabe.

Un ejemplo de lo que os podría aparecer (En caso de que no tengáis ninguna actualización pendiente) sería esta imagen (pero lo que os puede salir es factible que sea mucho más largo si el equipo ha encontrado actualizaciones)

Actualizamos el sistema

Con esto tendremos la Raspberry completamente preparada para empezar a meterle caña. En el próximo tutorial…

¿Cómo que en el próximo tutorial? ¿No vamos a empezar a usar docker en este artículo?

No, Usuario Anónimo. Antes incluso de empezar a instalar nuestros primeros dockers, creo necesario explicar en un artículo diferenciado cómo funciona esa tecnología, qué usos tiene y cuáles son los comandos básicos para gestionar dockers con el objetivo de saber resolver problemas en caso de haberlos. Y por supuesto de nuevo voy a suponer que el lector no tiene ni idea de esta tecnología, así que iremos muy despacito para poder asentar bien estos conceptos.

Ahora os toca a vosotros decirme: ¿Habéis encontrado algún problema al seguir esta guía? ¿Queréis añadir alguna sugerencia? Os animo a dejarme vuestras impresiones en los comentarios.

Share

2 comentarios

  1. Yepaswepas

    Acabo de pillar la 5. Esperando el siguiente como agua de mayo

  2. Aglak

    Me encantan tus tutoriales. Pruebo muchas de las cosas que haces.
    Gracias por volver.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

© 2024 Flopy.es

Tema por Anders NorenArriba ↑

Uso de cookies

Este sitio web utiliza cookies para que usted tenga la mejor experiencia de usuario. Si continúa navegando está dando su consentimiento para la aceptación de las mencionadas cookies y la aceptación de nuestra política de cookies, pinche el enlace para mayor información.

ACEPTAR
Aviso de cookies