Configuración del servidor En este capítulo vas a encontrar todos los artículos respecto a la preparación del servidor para cosas como: Exponerlo al internet públicoInstalarle los componentes necesarios para correr los serviciosY más El router Preparar nuestro router para conexiones externas Sinopsis Cuando utilizamos una computadora como servidor, sea para acceder y depositar archivos o para acceder a servicios, normalmente la conectamos a nuestra red local de casa, gestionada por nuestro Router, el cual en muchos casos nos es proveído por nuestra empresa de internet (o ISP). El router polvoriento que me dio Fibertel Para qué sirven los routers Estos aparatos hacen varias cosas, entre ellas: Gestionan nuestra red local(permiten que nuestras computadoras y dispositivos se conecten entre sí), y nos permiten conectarnos a internet. Cada vez que cargamos una página o bajamos un video, nuestra computadora le está pidiendo a nuestro router que nos ponga en contacto con la máquina que tiene dicha página o video. En este sentido, el router es el punto único de conexión entre nuestras computadoras en nuestra casa y las demás computadoras del mundo conectadas a internet. Además de esto, es a través del router otras computadoras de internet hablan con las nuestras. Normalmente esto ocurre cuando nuestras computadoras se ponen primero en contacto con una compu de afuera: Si queremos revisar el mail, cuando cargamos la página somos nosotrxs quienes pedimos a la compu de afuera que tiene nuestros mails guardados que nos los mande para que los podamos leer, por ejemplo. Sin embargo, para poder acceder nuestra computadora desde afuera, necesitaríamos poder indicar de alguna forma al router, que recibiría la conexión, que "derive" el pedido de la computadora de afuera a una computadora en específico, en este caso nuestro servidor. De esta manera, cuando una computadora externa (como, por ejemplo, nuestro celular cuando no estamos conectadxs a la red wifi o local) se conecta a nuestra IP pública , nuestro router la guía a la IP local de nuestra red. Por lo general, esto no es algo que nuestros routers hagan por defecto: Todas las comunicaciones que tenemos a interent, por defecto, las llevamos a cabo desde nuestra casa hacia afuera por cuestiones de seguridad. Para poder hacer que nuestro router "derive" estas conexiones cuando son originadas desde afuera, tenemos que indicarle que lo haga. Para esto vamos a redirigir conexiones a puertos específicos : Esto se llama hacer "port forwarding". Al final del camino, esta secuencia de conexiones externas se vería de la siguiente forma: En la que una computadora de afuera se conecta con nuestro router a un cierto puerto; nuestro router, al detectar que se conectó a ese puerto, redirige la conexión a la IP local de nuestro servidor. Hay dos cosas, entonces, que nos conviene hacer: Configurar nuestro router para exponer un puerto al exterior. Configurar nuestro router para que le de una IP local específica a nuestra computadora. Tutorial: Cómo configurar el router para exponer un puerto Cuando queremos exponer la conexión de una de nuestras computadoras hacia el exterior, tenemos que configurar nuestro router. Esto, a veces, se puede hacer directamente desde la página de nuestro proveedor de internet, pero muchas veces no es el caso. Por este motivo, este tutorial se va a centrar en cómo hacerlo a través de nuestro router directamente. Esta sección es una de las más complejas, ya que los distintos modelos de routers y gateways suelen tener sus propias convenciones de nombres. Intento ser lo más exhaustivo que puedo, pero es posible que tengas que googlear un poco sobre tu router y proveedor de internet específico. Acceder al router Lo primero que tenemos que hacer es acceder a la página de configuración de nuestro router. Para esto, necesitamos obtener la IP local del router. Por lo general esta puede ser alguna de estas tres: 192.168.0.1 192.168.1.1 10.0.01 Si no te funciona ninguna de ellas, podés usar los siguientes comandos: En Windows En el "Símbolo de sistema"(CMD) de widnows, escribí el siguiente comando: ipconfig , y buscando la ip al lado de "Default Gateway" En MacOS En la terminal de mac(la podés abrir desde el spotlight), con el comando netstat -nr | grep default En Linux En la terminal de Linux, con el comando netstat -r | grep default Login Este es un punto potencialmente complejo. Por lo general, la mayoría de los routers nos los instalan con las credenciales por defecto, por lo que cosas como: Usuario Contraseña admin admin admin admin ... suelen funcionar, o incluso no llenar ninguno de los dos campos. Sin embargo, en el mío, por ejemplo, el usuario por defecto era admin , pero la contraseña era cisco . Recomiendo googlear algo como "cuál es la contraseña por defecto del router ". El modelo por lo general lo pueden encontrar impreso en algún lugar del propio router. Por lo pronto, una vez que tengan esa información, pueden ingresar con su navegador a la página http:// . En mi caso, por ejemplo, cuando ingeso a http://192.168.0.1, entro a la siguiente página: Al ingresar la información de login vamos a poder ingresar al panel de control del router. En esta página, vamos a tener que buscar la sección de "Port Forwarding", que puede figurar de varias formas: En secciones como "Forwarding" o "Port Forwarding", a veces en subsecciones como "Virtual servers" En secciones como "Applications", o "Applications and gaming", ya que son cosas que se hacen normalmente cuando una persona quiere "hostear" un server de videojuegos. En el caso de mi router, el menú en el que encontramos esto es el de "Applications & Gaming". El submenú donde encontramos la opción se llama "Port range forwarding". Fíjense que no siempre son exactos los nombres: En este menú, podemos ver cómo le puedo indicar al router, cuando recibe una conexión externa en un puerto específico(en mi caso un rango de puertos), que la redirija a una IP local en particular. Al hacer esto, cuando alguien se quiera conectar a nuestra IP, y lo haga en un puerto en particular(todas las conexiones ocurren en un puerto), nuestro router la redirige a una ip, idealmente la de nuestro server. Por otro lado, también nos puede ser útil configurar nuestra computadora para que tenga una IP local específica, ya que si no, por defecto, cada vez que se vuelva a conectar a la red(cuando la reiniciemos, por ejemplo) nuestro router le va a asignar una nueva IP. Tutorial: Cómo configurar la computadora para tener una IP estática Este tutorial, por suerte, es mucho más simple, ya que se puede hacer desde la computadora misma: Simplemente tenés que ir a la configuración de tu red(que, por lo general, es la configuración de la conexión a la red que estás conectadx), buscar el menú de IPv4, seleccionar modo Manual, y agregar una ip que esté en el rango de tus ips locales(por ejemplo, si tu router está en 192.168.0.1 , cualquier ip entre '192.168.0.2 y 192.168.0.255` debería estar bien). Dejo un tutorial de cómo hacerlo en linux, pero por lo general esto es bastante simple. Si vas a googlear cómo hacerlo en linux , te recomiendo googlear cómo hacerlo en tu distribución en específico : Es mejor buscar "how to set local static ip address in ubuntu/mint" que "how to set local static ip address in linux". De todos modos, el proceso es bastante similar en casi todos los sistemas operativos. Adquisición y configuración de dominios En esta página voy a explicar el proceso de alquilar un dominio y de "apuntarlo" a nuestra IP pública para facilitar el acceso externo a nuestro servidor. Esta sección no fue escrita todavía Preparar el sistema operativo Esta página tiene como fin enseñar a instalar Linux en nuestro futuro servidor. Las guías se encuentran más abajo. Arriba, primero, un poco de contexto: Esta sección no fue terminada todavía. Qué es Linux? Linux (o, mejor dicho, GNU/Linux) es un sistema operativo. Esto significa que es una serie de "programas" y "herramientas" armadas para servirnos para interactuar con nuestra computadora. Un programa para copiar un archivo en otro lugar, un programa para crear un archivo, etc. No son "programas" como un navegador de internet. Un navegador de internet suele usar varios de estos "programas básicos" para cosas como: Conectarse con otra computadora, descargar la página web y escribirla en nuestro disco, leer el contenido de esa copia para poder visualizarlo. Un sistema operativo, esencialmente, es la capa que está entre el mundo digital de unos y ceros y el usuario, sobre el cual corren todos los programas que normalmente usamos en nuestro día a día. Cuando corremos, por ejemplo, un navegador de internet, el programa habla con el sistema operativo, y es este último el que actúa de intermediario y le dice a la computadora "qué hacer", qué cuentas hacer, qué píxeles de la pantalla prender, etc. GNU/Linux es un sistema operativo ya con muchos años que, a diferencia de Windows o MacOS, que son sistemas de "código cerrado", es de "código abierto": Esto significa que, por un lado, todo el mundo puede ver cómo fue armado, y por lo tanto se puede corroborar más allá de cualquier nivel de conifanza qué pasa "abajo del capó" cuando corre. Por el otro lado, también significa que estos proyectos son de índole colaborativa: Cualquiera a quien le interese puede "sumarse" y aportar código, sean funcionalidades nuevas, arreglo de bugs, o lo que sea. GNU/Linux suele venir en "distribuciones", o "distros", que son "paquetes" que se arman sobre esta base del sistema operativo con varios componentes extra comunmente usuados en el día a día, como un gestor de paquetes(app store, en resumen), un reproductor de vídeo, una interfaz visual para lx usuarix, etc. Estas distribuciones, estos "empaquetamientos" de linux, suelen mantener su filosofía de software libre, aunque no siempre es así, y no siempre lo hacen en la misma medida (Ubuntu, por ejemplo, a veces usa código "cerrado" en cosas como los drivers de placas de video, etc.). Varios distros conocidos y muy usados incluyen: Ubuntu Linux Mint Fedora Arch Cada uno con su propia idiosincracia, pero siempre con la "base de programas" de GNU/Linux (los mismos programas para copiar archivos, para moverlos, etc) Por qué linux? Quizás quienes lean esta guía estén acostumbradxs a utilizar en el día a día otros sistemas operativos como Windows o MacOS. Estos suelen ser una opción elegida con frecuencia por estar pensados para ser utilizados en computadoras de uso personal, y suelen ser los entornos que estamos acostumbradxs a usar en el día a día. Hay varios motivos por los que elegir Linux, como el hecho de que Windows recolecte por defecto un montón de información privada sobre cómo lo usás . En este caso, sin embargo, voy a enumerar un par de criterios, algunos de elección personal y otros más objetivos, por los que elijo escribir esta guía usando un entorno de Linux: Es gratis : Los sitemas operativos de Linux son gratuitos. Si bien esta es una guía de altamar, la connotación que esto tiene también es una práctica: Cuando Windows "se da cuenta" de que tenés instalada una versión "no oficial", puede ponerse bastante gede. Es libre : Esto no sólo significa que es gratis, sino que también es una alternativa creada colaborativamente, en la que el código, cómo está hecha cada cosa, es abierto. Esto implica que quien quiera pueda mirarlo y asegurarse de que no pasa anda raro, como que te roben datos o usen recursos de tu computadora para minar crypto. Esto no significa que sea infalible; pueden haber virus en cualquier sistema operativo, y en muchos casos las aplicaciones de código abierto no son lo suficientemente grandes como para que sean revisadas por suficiente gente como para que sean 100% seguras. Pero en muchos casos los proyectos son lo suficientemente grandes como para que esto pase, y además, considero ideológicamente que la filosofía del Software Libre es ampliamente mejor que la del software cerrado y con fines de lucro para la humanidad. Es mejor para los servers : Linux es el sistema operativo utilizado por la mayoría de los servers del mundo. Los programas que vamos a usar, como Docker, suelen funcionar mejor en Linux porque, en este caso, la máquina por defecto en la que se piensa cuando piensan estos programas corre Linux . Es mejor para nuestra alfabetización digital : Estar en contacto con las cosas que vamos a estar armando contribuye mucho a poder entender mejor qué pasa en las computadoras cada vez que usamos un servicio como Netflix, Whatsapp, o cualquier cosa. Creo que entrar en contacto con estos conceptos, y "por ósmosis" ir entendiendo lo que pasa detrás, contribuye a la soberanía que tenemos sobre nuestra información(además, obvio, de la soberanía que queremos tener sobre nuestros medios y cómo los consumimos). Guía: Preparación de nuestro server Linux Instalar Linux Instalar linux parece algo súper intimidante, pero la realidad es que es un proceso que se fue haciendo mucho más fácil en los últimos años de lo que creeríamos. Hay una cosa muy importante a tener en cuenta al hacerlo, que es que: Al instalar linux siguiendo estos pasos, vas a estar borrando por completo toda la información que tengas almacenada en la computadora que estés transformando en server, por lo que es muy importante que antes de hacerlo copies toda la información importante (fotos, videos, documentos) que no quieras perder en algún otro lado (como en tu computadora principal). Teniendo esto en cuenta, los pasos en sí son muy tranquilos y seguros. Repasemos cuáles son. Ante todo, vamos a necesitar: Una copia del sistema operativo Una memoria USB (donde entre dicha copia; la de ubuntu, por ejemplo, es de 3 GBs, así que con cualquier memoria más grande estamos bien) Una computadora a la que instalarle el sistema operativo :p Armar el "Live USB" Lo primero que vamos a tener que hacer va a ser conseguir una copia del sistema operativo que queramos instalar. En este caso, vamos a usar una distribución de Ubuntu. Ubuntu tiene algunas polémicas respecto a hacia adónde apunta la compañía en sí, y el hecho de querer usar bastante software propietario (no de código libre) en cosas como los drivers, pero a su vez es uno de los sistemas operativos más usados por lejos para armar un server, lo cual hace muy fácil googlear ante cualquier problema que tengamos. Ante todo, vamos a necesitar descargar la edición para servidores de Ubuntu, que encontramos aquí . Recomiendo bajar la última opción disponible, por lo general (la última que nos muestra por defecto es la última "LTS" (Long Term Support), es decir la última versión estable y con soporte activo de por lo menos 5 años (después de los cuales podemos seguir usando esa versión, sólo no va a ser soportada por Canonical , la empresa de Ubuntu. Las soluciones vendrían de otrxs usuarixs o unx mismx). Una vez que se termine la descarga, vamos a tener un archivo .iso , con un nombre similar a ubuntu-24.04.03-live-server-amd64.iso (los números pueden cambiar con distintas versiones, por ejemplo). Este archivo vamos a necesitar montarlo en un USB, de forma que la computadora entienda que es un "disco" desde el cual instalar el sistema operativo. En este tutorial vamos a usar un programa para esto llamado Balena Etcher , pero hay varias otras alternativas también. Si no te funciona el Balena, podés encontrar tutoriales con varios programas acá . El proceso es simple: Abrimos el programa y seleccionamos "Flash from file" Seleccionamos la memoria objetivo (en este caso, el USB) Prestá atención a que el tamaño del dispositivo que elijas sea en efecto el tamaño de la memoria que tenés, así te asegurás de quemar el .iso en el lugar correcto. Si por error eligieses el dispositivo donde está tu sistema operativo (tu disco rígido), podría traer muchos problemas! De todos modos, normalmente no están visibles estos dispositivos de entrada. Pero tené cuidado igual por las dudas. 3. Seleccionamos Flash! y esperamos a que termine. Una vez terminado, ya tenemos nuestro dispositivo USB listo para instalar linux. Instalar Linux en la computadora Preparación Para hacer esto, vamos a necesitar hacer un par de cosas antes de arrancar, idealmente ambas con la compu apagada: Enchufar el USB a la computadora Enchufar la computadora a la red. Si bien se puede hacer a través de wi-fi, es mucho más fácil y rápido tener la compu enchufada a nuestro router . Para el segundo ítem, fijate que tu router seguro tiene un par de enchufes para cables de LAN numerados (pueden ser sólo los números, tipo 1, 2, 3, 4, o pueden estar etiquetados como "Lan 1, Lan 2", etc, o "Local 1, Local 2"). Con enchufar el cable a cualquiera de esos puertos estás. Instalación - Acceder al BIOS Lo primero que vamos a tener que hacer es acceder al BIOS de la computadora. Este es como un "mini-sistema operativo" que todas las computadoras tienen, pensado específicamente para poder hacer cosas "por debajo" del sistema operativo que usamos siempre, como, por ejemplo, instalar otros sistemas operativos a la computadora. Para acceder al BIOS, por lo general, es necesario apretar una tecla en un momento apenas después de iniciar la computadora. Muchas veces la computadora tiene algún texto cuando aparece el logo de la marca que dice "Acceder al BIOS" o "Setup" o cosas por el estilo, y pide presionar alguna tecla (por lo general una de las "F", como "F2" que es de las más comunes, a veces "Esc" también puede ser). Si no encontrás este cartel, te recomiendo googlear el modelo de tu computadora en algo del estilo "How do I access the BIOS in ". Como teclas básicas para probar, te recomiendo F2, Esc, y F12, en ese orden. Por otro lado, como la ventana de tiempo para apretarlas es muy específica, recomiendo que las presiones repetidamente: Instalación - cambiar el orden de prioridad de booteo A la hora de iniciar la computadora (lo cual también se suele llamar "bootear", o "to boot" en inglés), el BIOS busca una instalación de algún sistema operativo para iniciar. Normalmente, esto lo hace primero buscando en el disco rígido, y si no encuentra ningún sistema operativo va viendo si hay algún dispositivo externo que tenga una instalación, como un pendrive o un CD. Para instalar el nuevo sistema operativo, vamos a tener que, desde el BIOS, poner como primer lugar a buscar el sistema operativo a los puertos USB, así detecta nuestro pendrive con el Live USB antes de la instalación que ya tenemos en el disco duro. Para hacer esto, vamos a tener que buscar en el BIOS de nuestra computadora una sección que suele ser llamada "Boot Sequence", o "Boot Setup", o algo por el estilo. Abajo incluyo un video, pero es importante acá tener en cuenta que los BIOS suelen tener pequeñas diferencias en sus nombres, así que vas a tener que buscar por tu cuenta la sección que señala de dónde "bootea" la computadora. Instalación - Instalar Linux Una vez que cambiamos el orden de prioridad de booteo, si apagamos y encendemos la computadora con el USB conectado, va a pasar directamente (después de mostrarnos varios mensajes del proceso de arranque) a un menú de selección de qué "sistema operativo" queremos lanzar: De ahí, seleccionamos con Enter la opción de instalar Ubuntu, lo cual nos lleva directamente a la primera pantalla de instalación de Ubuntu (luego de un poco de texto de mensajes de inicio): De ahora en más, es sólo seguir los pasos de la instalación, sin embargo, un par de consideraciones importantes. Luego de elegir el tipo de teclado, nos va a ofrecer instalar Ubuntu Server o Ubuntu Server(minimized). Dejamos esto como está, pero nos importa la opción de más abajo: Search for third-party drivers . Ya que no sabemos de entrada si nuestra computadora tiene componentes de hardware que son "propietarios", es decir, cuyos drivers no son de código abierto, nos conviene marcar esta opción por las dudas. La siguiente consideración importante llega en la sección de Network Configuration . Aquí vamos a querer hacer que nuestra computadora pida una IP estática a nuestra red. Si no, cada vez que la reiniciemos va a cambiar su dirección,y esto podría complicarnos las cosas. Para hacer esto seleccionamos los siguientes menúes: Una vez nos encontramos en el formulario, los datos son los siguientes: Tené cuidado, los datos pueden variar dependiendo de cómo está configurada tu red Para poder ingresar bien tus datos, lo ideal sería que averigües la IP de tu router. Una vez que la tenés, esencialmente, la configuración sería la siguiente, pensándola por ejemplo con una IP de router de 10.0.2.1: Subnet: 10.0.2.0/24 (fijate que cambié el último dígito por un 0 y agregué el "/24") Address: 10.0.2.x (en lugar de x, poné el número de IP que vas a querer usar para acceder al servidor) Gateway: 10.0.2.1 (la IP del router) Nameservers: 8.8.8.8,1.1.1.1 (esto lo dejamos igual) Luego, cuando nos pregunta si queremos usar un proxy, lo dejamos en blanco (a menos que sepas qué es esto y quieras usarlo, claro) . La siguiente pantalla también es una que tenemos que dejar como está si no sabemos del tema: En este caso, tenemos que esperar a que tengamos el mensaje que figura en la imagen de This mirror location passed tests. (que, obviamente, no va a estar disponible cuando recién lleguemos a la pantalla. En la siguiente pantalla, nos vamos a cerciorar de que estemos instalando el LVM (Live Volume Manager). Esta aplicación ahora mismo no la vamos a usar, pero si en el futuro queremos agregar más memoria a nuestro servidor (usando, por ejemplo, un disco rígido externo), nos va a venir bien. En la siguiente pantalla, vamos a poder configurar cuánto espacio de nuestra computadora le dedicamos a cada partición (segmento del disco rígido); por ahora podemos dejar las opciones como están y seguir. El siguiente lugar, la sección titulada SSH configuration , es muy importante En la siguiente sección, vamos a asegurarnos de que la opción de instalar el server OpenSSH (Install OpenSSH server) esté marcada . Luego de esta pantalla, vamos a tener un par más, incluyendo una en la que nos va a ofrecer instalar "snaps", un tipo de paquete ("paquetes" básicamente son apps) de Ubuntu, pero no le vamos a dar bola y no vamos a instalar nada. Finalmente, llegamos a la pantalla de instalación, donde nos va a aparecer mucho texto al que esencialmente no le tenemos que prestar atención. La instalación puede tomar un rato, dependiendo de la compu, así que es un buen momento para hacerse un mate o poner a lavar la ropa. Una vez finalizada la instalación ( nos va a figurar un mensaje del estilo "Instalation Complete" en la barra roja ), vamos a tener la opción de reiniciar (reboot) la computadora. Cuando lo hagamos, ya vamos a haber terminado la instalación! Al reiniciar, nos va a figurar un mensaje pidiéndonos que quitemos el USB desde el que instalamos el sistema operativo, y aprentemos Enter: Y listo! El sistema se va a reiniciar con Ubuntu. La primera vez que se inicie, nos va a aparecer mucho texto, y va a parecer que no inició; es cuestión de apretar "Enter" nada más. Ya estamos! Lo que sigue, ahora, sería ajustar un par de cosas en caso de ser una notebook , y luego, para la mayoría de los proyectos de esta página, al menos, instalar docker y docker compose . Felicitaciones, ahora sos un ñoñx de Linux! De ahora en más, podés guardar tu servidor en donde sea que lo vayas a tener guardado (si es una laptop, fijate de entrar al link de arriba porque cuando la cierres probablemente se suspenda y no puedas acceder desde afuera para usarla); todo el trabajo que hagamos en adelante lo podemos hacer a través de ssh . También, para una interfaz gráfica más cómoda para alguna gente, podemos instalar cockpit . De todos modos, aprender a manejar ssh sigue siendo algo importante para manejar tu servidor. Es importante que guardes tu server en algún lugar con espacio o, idealmente, fresco. Si tiene algún tipo de ventilación es ideal, ya que las computadoras pueden levantar temperatura y si el entorno no ventila un poco, puede traer problemas. Existen "cajas" para guardar servidores con venitladores, pero con guardarlo en algún espacio abierto o en algún estante grande está bien. Instalar python Afortunadamente, la mayoría de los distros de linux incluyen una versión de Python ya instalada. Podemos chequear si tenemos python usando el siguiente comando en la terminal: which python3 Si python ya está instalado, obtendremos un resultado del estilo: Es importante usar el comando python3 y no python a la hora de revisar esto. En caso de no obtener un resultado del estilo, significa que no tenemos una instalación de python en la computadora. De ser así, para instalarlo en Linux Mint, Debian o Ubuntu, podemos usar el comando `sudo apt update`y luego `sudo apt install python3`. Python ahora estará instalado. Además de python3, vamos a necesitar pip3, el gestor de paquetes de python(esencialmente la manera de descargar e "instalar" programas de python). La instalación es similar: Primero revisamos si lo tenemos con which pip3 . Si no obtenemos ningún mensaje en consecuencia de la índole de /usr/bin/pip3 , ejecutamos sudo apt update y sudo apt install python3-pip . Instalar docker y docker compose Esta sección es, esencialmente, una versión condensada de la [documentación oficial de Docker](https://docs.docker.com/engine/install/ubuntu/) respecto a la instalación del mismo en Ubuntu. Si querés, podés seguir las instrucciones oficiales de ahí, que van a ser más detalladas y completas. Para instalar docker, lo primero que vamos a tener que hacer va a ser verificar que no tengamos una versión de docker pre-instalada en nuestra distribución de Linux, ya que puede traer problemas de compatibilidad en el futuro. Para eso, debemos correr el siguiente comando: sudo apt remove $(dpkg --get-selections docker.io docker-compose docker-compose-v2 docker-doc podman-docker containerd runc | cut -f1) (Vale aclarar que es posible que apt , el programa que corremos con ese comando, nos indique que no desinstaló nada ya que no había una versión previa instalada) Una vez hecho esto, vamos a instalar docker usando apt también, así cada vez que actualizamos nuestros paquetes se actualiza a su vez docker. Para esto, primero vamos a tener que agregar el repositorio de docker a apt, copiando todos los siguientes comandos juntos, pegándolos en la consola, y apretando Enter : # Agrega la llave GPG oficial de Docker: sudo apt update sudo apt install ca-certificates curl sudo install -m 0755 -d /etc/apt/keyrings sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc sudo chmod a+r /etc/apt/keyrings/docker.asc # Agrega el repositorio a las fuentes de apt: sudo tee /etc/apt/sources.list.d/docker.sources < -n Como en todo lo que es linux, es importante prestar atención a las mayúsculas y minúsculas en lo que escribimos. La opción "-L" es con L mayúscula, mientras que la opción "-n" es con n minúscula. El nombre el vg lo podemos ver en lo que nos devolvió el vgdisplay más arriba: es "ubuntu-vg". Así que, con esto en mente, el comando que tendríamos que escribir es: sudo lvcreate -L 150G -n navidrome-lv ubuntu-vg Ya creado, podemos verlo usando el comando sudo lvs : Sin embargo, todavía no lo podemos usar; tenemos que formatearlo con un sistema de archivos y tenemos que montarlo en algún directorio. Para esto, necesitamos ver dónde está ubicado el disco; en Linux, todo es un archivo . Esto significa que la mayoría de las cosas (dispositivos como el teclado, discos rígidos, los logic volumes, o los mismos programas que corremos) figuran en el navegador como archivos (o, más bien, abstracciones de lo que representan a archivos). Para ubicar nuestro nuevo lv, vamos a buscar en el mapper , que son como "accesos directos" a los discos: ls /dev/mapper Esto nos va a mostrar los dispositivos de almacenamiento que tenemos disponibles en el server: En este caso, podemos ver que tenemos esas dos opciones: ubuntu--vg-navidrome--lv ubuntu--vg-ubuntu--lv Nos interesa formatear el lv de navidrome, así que vamos a utilizar su dirección: /dev/mapper/ubuntu--vg-navidrome--lv El comando que vamos a utilizar es mkfs, específicamente vamos a usar su variante que formatea el archivo a ext4; mkfs.ext4 : sudo mkfs.ext4 /dev/mapper/ubuntu--vg-navidrome--lv Una vez formateado el volumen, estamos listos para montarlo (sería asignarle un lugar en la jerarquía de directorios en donde estén las cosas que contiene; en Windows este proceso se hace automáticamente y figura como D:\\ o C:\\ , etc.), para esto, primero vamos a crear el directorio al que lo vamos a montar: sudo mkdir /mnt/musica Luego, vamos a usar el comando mount : sudo mount /dev/mapper/ubuntu--vg-navidrome--lv /mnt/musica Y listo! Ya tenemos nuestro volumen montado y listo para usar. Podemos corroborarlo usando el comando lsblk : Además de esto, podemos ver que figura entre los discos montados cuando usamos el comando para ver el espacio libre df (usamos el "flag" -h para ver el espacio que tienen disponible en unidades "de humanos", MBs y GBs): (Es el último elemento de la lista; a la izquierda vemos el dispositivo, el lv, y a la derecha vemos dónde está montado) Nos queda únicamente un último paso: Encargarnos de que se monte automáticamente cada vez que encendemos la compu. Para esto, vamos a usar un archivo llamado fstab , que está ubicado en /etc/fstab . Vamos a necesitar obtener el UUID del volumen a montar, y para esto vamos a usar el comando lsblk -f (la opción -f es importante acá): Podemos ver la UUID abajo (si la pantalla es grande, al lado) del volúmen que queremos agregar. Ahora que tenemos el UUID, lo sumamos al fstab; vamos a tener que abrir el archivo /etc/fstab con un editor de texto (como nano ), e instertar la siguiente línea: UUID= defaults 0 2 Nótese que el defaults 0 2 va a ser siempre igual; lo que cambia es lo de la izquierda. Para el ejemplo con el que venimos trabajando, sería: UUID=55c52d68-4199-41ae-99c1-d00102b3ecf1 /mnt/musica ext4 defaults 0 2 Con el comando sudo nano /etc/fstab se nos abre el editor: Como siempre, guardamos (en nano) con Ctrl+o y salimos con Ctrl+x . Una vez hechos los cambios, probamos si nuestro fstab funciona con el comando sudo mount -a , que monta todos los volúmenes que figuran en el fstab: Como suele pasar en Linux, la ausencia de mensaje se lee como ausencia de error: Todo funcionó bien. Y ahora sí! Ya tenemos nuestro nuevo volúmen montado y listo para ser utilizado de forma permanente :) Modificar el espacio de un Logical Volume Modificar el espacio del que dispone el volumen es simple; utilizamos el comando lvextend para ampliar el espacio, y lvreduce para achivarlo. Cuando reducimos el espacio de un volumen, hay que tener mucho cuidado; si lo reducimos a un tamaño menor al de los datos que tiene almacenados, es muy probable que perdamos esa información de forma irreversible. Reducir el espacio de un lv Para reducir el espacio, como mencionamos más arriba, vamos a usar el comando lvreduce . La sintaxis es muy similar a la de lvcreate que vimos más arriba: sudo lvreduce --resizefs -L En -L, podemos poner un tamaño absoluto, como puede ser 100G para 100 Gbs, o podemos poner un tamaño relativo, como -20G para restarle 20 Gbs al total del volúmen: Podemos ver cómo se redujo el tamaño del volúmen de 150 Gb a 130 Gb. Como podemos ver, para hacer esta operación el programa nos pide desmontar el volúmen. Esto significa que si queremos montarlo de nuevo, vamos a tener que volver a correr el comando mount como vimos más arriba (en la sección de crear un lv). Expandir el espacio de un lv Para expandir el espacio, el proceso va a ser similar al que vimos en cómo reducir el espacio; vamos a usar el comando lvextend : sudo lvextend --resizefs -L Como antes, la opción --resizefs se encarga de que además de cambiar le tamaño del volúmen cambie el tamaño de su sistema de archivos, y la opción -L tamaños absolutos como 50G o relativos como +20G: Eliminar un Logical Volume En algunos casos, también, podríamos llegar a querer eliminar un lv. El proceso para hacerlo es simple, pero siempre hay que tener mucho cuidado, ya que podemos perder permanentemente la data almacenada en ese volúmen . La única consideración es que, antes de eliminarlo, debemos desmontarlo con el comando umount (sí, no unmount , umount ) sudo umount /mnt/musica (nótese que usamos el lugar donde está montado, no la "dirección del volúmen") Hecho esto, vamos a usar el comando lvremove para eliminar el volúmen: Y listo, el volúmen ya no existe más. Como tuvimos que agregarlo al fstab cuando lo creamos, ahora deberíamos eliminarlo de la lista modificando nuevamente el archivo /etc/fstab , eliminando la línea que lo monta al encender la computadora. (Revisá la sección de cómo crear un Logical Volume para ver más info al respecto)