Cómo montar un servidor para con Debian en un portátil viejo
Cómo montar un servidor para con Debian en un portátil viejo
Llevo tiempo queriendo probar más LLMs de una manera sencilla y cómoda para mí y, de paso, permitir que en casa puedan empezar a trastear.
Por eso, cuando conseguí un día libre (es decir, 100% sin compromisos y solo para mí), “secuestré” a mi colega José (que también tenía interés) y pillé un portátil de gaming que tengo muriéndose de risa en un rincón para montar un servidor que soporte modelos de lenguaje grande (LLMs) utilizando Debian como sistema operativo y Ollama para la gestión de los modelos.
He dividido el proceso en 2 artículos, para centrarme en lo importante de cada fase:
- tener un servidor con Debian en un portátil viejo,
- montar un servidor de modelos grandes de lenguaje (LLMs) con acceso desde la red local,
Creo que cualquiera puede imaginar lo que es tener un portátil abierto y encendido en casa solo para usarlo desde la red local… así que decidí configurar Debian sin entorno gráfico, con la hibernación de sistema apagada para poder tener el portátil en un soporte para mantenerlo cerrado, en vertical y con bastante buena ventilación.
Te cuento cómo.
1. Instalación de Debian sin entorno gráfico
Comienza instalando Debian sin entorno gráfico y asegúrate de habilitar el servidor SSH durante la instalación. Esto permitirá que administremos el servidor de manera remota sin necesidad de un entorno de escritorio.
2. Configuración general del sistema
Accede como usuario root
para realizar la configuración general del sistema. Ten en cuenta que algunas configuraciones y la instalación de software deben realizarse como usuario root
para tener los permisos necesarios. Usaremos el siguiente comando para cambiar a root
:
su -
Después usa el siguiente script para configurar las fuentes de software de Debian:
#!/bin/bash
mv /etc/apt/sources.list.d/contrib.list /etc/apt/sources.list.d/contrib.list.bak
DIST=$(lsb_release -c -s)
echo "deb http://deb.debian.org/debian ${DIST} main contrib non-free-firmware non-free" >> /etc/apt/sources.list
echo "deb-src http://deb.debian.org/debian ${DIST} main contrib non-free-firmware non-free" >> /etc/apt/sources.list
echo "deb http://deb.debian.org/debian-security/ ${DIST}-security main contrib non-free-firmware non-free" >> /etc/apt/sources.list
echo "deb-src http://deb.debian.org/debian-security/ ${DIST}-security main contrib non-free-firmware non-free" >> /etc/apt/sources.list
echo "deb http://deb.debian.org/debian ${DIST}-updates main contrib non-free-firmware non-free" >> /etc/apt/sources.list
echo "deb-src http://deb.debian.org/debian ${DIST}-updates main contrib non-free-firmware non-free" >> /etc/apt/sources.list
apt -qy update
[!question] ¿Por qué usamos un script?
Si te fijas, el script tiene una línea que pone:
DIST=${lsb_release -c -s}
Esa línea recoge la versión de Debian que hemos instalado y personaliza las fuentes de software para la instalación que estamos configurando.
Con las fuentes de software ya configuradas, instalamos sudo
para facilitar las acciones que requieran permisos de superusuario ya que podremos hacerlas desde nuestro usuario sin privilegios de manera atómica (solo para el comando al que acompañe).
Para instalar sudo
usamos el siguiente comando:
apt -qy install sudo
Y, por supuesto, nos toca asignarlo a nuestro usuario con:
usermod -aG sudo <user>
donde <user>
se sustituye por nuestro usuario.
Con todo esto, ya podemos “cerrar” la sesión de root
con:
exit
3. Configuración de una IP fija en la red local
Como todo esto lo estamos haciendo para poder acceder a Ollama en remoto… necesitamos que la IP del portátil sea fija así que… vamos a configurarla.
La IP se configura en el archivo /etc/network/interfaces
y, solo por lo que pudiera pasar, vamos a hacer una copia de seguridad del archivo con:
sudo cp /etc/network/interfaces /etc/network/interfaces.bak
Ahora ya podemos ser unos manazas, quiero decir, que ya podemos meter mano, quiero decir, que ya podemos modificar el archivo.
Para ello, lo abrimos con nano
(aunque si prefieres vim
asegúrate de saber salir después):
sudo nano /etc/network/interfaces
Busca la interfaz de red que te interese. Será una de las líneas en las que pone:
iface ... dhcp
Cambia dhcp
por static
y debajo (e identado, ¡ojo!), escribe lo siguiente:
address 192.168.1.100 # o la IP que prefieras
netmask 255.255.255.0
gateway 192.168.1.1 # o la que corresponda a la IP que hayas puesto
Como pequeño extra, puedes cambiar los DNSs por defecto por los de CloudFlare (1.1.1.2 y 1.1.1.1) y/o los de Google (8.8.8.8 y 8.8.4.4). Esto se hace en el archivo /etc/resolv.conf
y puedes resolverlo (pun intended) con el siguiente comando:
sudo cp /etc/resolv.conf /etc/resolv.conf.bak && sudo echo -e "nameserver 1.1.1.2\nnameserver 1.1.1.1\nnameserver 8.8.8.8\nnameserver 8.8.4.4" > /etc/resolv.conf
[!question] ¿Por qué cambiar los DNS que vienen por defecto?
Modificar los servidores DNS nos permite usar servicios de resolución de nombres más rápidos y seguros que los predeterminados por el proveedor de servicios de internet (ISP). Esto puede mejorar la velocidad de navegación y ofrecer una capa adicional de privacidad al utilizar servidores DNS públicos como los de Cloudflare (1.1.1.1) y Google (8.8.8.8).
En cualquier caso, para que los cambios entren en funcionamiento, necesitas reiniciar el servicio de red con:
sudo systemctl restart networking
4. Deshabilita la hibernación del sistema
Como he comentado, quiero usar el portátil como servidor en la red local. No quiero que ocupe mucho espacio así que lo voy a tener cerrado y en vertical en un soporte para portátiles.
Por defecto, los portátiles entran en hibernación cuando los cerramos, así que toca deshabilitar la hibernación del sistema para que siga en funcionamiento aunque esté cerrado.
Para ello, lo primero es, como siempre, ¡copia de seguridad! En este caso, del archivo /etc/systemd/sleep.conf
:
sudo cp /etc/systemd/sleep.conf /etc/systemd/sleep.conf.bak
Después abre el archivo:
sudo nano /etc/systemd/sleep.conf
Busca la línea en la que pone [Sleep]
y, justo debajo, añade las siguientes líneas:
AllowSuspend=no
AllowHibernation=no
AllowSuspendThenHibernate=no
AllowHybridSleep=no
Puede que las líneas existan ya, bien comentadas o bien con los valores a yes
. Lo importante es que el archivo quede con las líneas como te las he puesto.
Con esto ya tenemos un servidor con Debian en un portátil viejo y podremos instalar cualquier tipo de servicio. En nuestro caso, un servicio con Ollama e interfaz web.
Pero eso, como suele decirse, es otra historia.