0. Hardware
Ordenador reutilizado con placa madre china e Intel Xeon, Desglose del hardware (salida con comando inxi \-F):
- Machine:
- Type: Desktop Mobo: N/A model: Intel X79. Firmware: UEFI
- vendor: American Megatrends v: 4.6.5 date: 05/30/2019
- CPU:
- Info: 6-core model: Intel Xeon E5-2640 0 bits: 64 type: MT MCP cache: L2: 1.5 MiB
- Speed (MHz): avg: 1198 min/max: 1200/3000 cores
- Graphics: NVIDIA GM206 [GeForce GTX 960]
- Audio: Intel 7 Series/C216 Family High Definition Audio
- Network:
- Device-1: Realtek RTL8111/8168/8211/8411 PCI Express Gigabit Ethernet driver: r8169
- IF: enp7s0 state: up speed: 1000 Mbps
- Local Storage: total: 465.76 GiB
- Memory: total: 12 GiB available: 11.09 GiB
1. Descargar Ubuntu Server
Descargamos la ISO oficial de Ubuntu Server 24.04 LTS desde Canonical: https://ubuntu.com/download/server?utm_source=chatgpt.com
Necesitaramos:
- Un ordenador/servidor donde instalarlo.
- Un USB de 8 GB o más si es instalación física.
- La ISO de Ubuntu Server.
- Una conexión de red, preferiblemente Ethernet.
2. Crear el USB de instalación
Pasos:
- Conecta el USB.
- Abrimos Balena Etcher.
- Elegimos “Flash from file” y la ISO de Ubuntu Server.
- En “Select Target”, seleccionamos el USB donde crear el instalador.
- Pulsa “Flash!” y esperar a que el proceso termine
3. Arrancar el servidor desde USB
Primero debemos entrar en la BIOS/UEFI para seleccionar que arranque desde el USB
Boot:
Arrancamos el PC en el cual vamos a instalar y pulsamos la tecla “ESC”, con eso entramos en la BIOS.
Seleccionamos el USB como arranque. Y salimos
Proceso de instalación desde el USB:
Una vez el PC arranca desde el USB en el cual tenemos la imagen de Ubuntu Server, aparecerá el instalador de Ubuntu Server. Seleccionamos: Try or Install Ubuntu Server y pulsamos Enter.
4. Seleccionar idioma y teclado
Para un servidor normalmente se recomienda Inglés, entre otras cosas porque muchos tutoriales, mensajes de error y documentación utilizan ese idioma. Pero sobre todo por que el inglés es el idioma estándar en informática, ya sea programación, administración de sistemas, etc
En cambio para el teclado seleccionaremos Spanish si nuestro teclado es español. No debemos confundir el idioma del sistema con el idioma del teclado (periférico).
Ahora seleccionaremos el tipo de instalación:
Elegiremos la primera opción “Ubuntu Server” y “Search for third-party drivers”
5. Configuración de red
Entramos en el primer punto importante.
Podríamos dejar que la IP se seleccione de forma automática con DHCP (Dynamic Host Configuration Protocol o Protocolo de Configuración Dinámica de Host). De hecho, por defecto, Ubuntu intentará configurar automáticamente la red mediante DHCP:
eth0
DHCPv4: 192.168.1.132/24
Si aparece una dirección IP, como en la imagen, la red está funcionando.
Para un servidor doméstico esto nos vale para la instalación y posteriormente podemos configurar una IP fija.
Pero nosotros vamos a configurar una IP fija desde el inicio, ya que nuestro servidor va a estar conectado a internet desde el principio y además tenemos la intención de crear un servidor headless (un ordenador configurado para funcionar sin monitor, teclado ni ratón conectados físicamente).
Hago un pequeño alto en el camino para explicar por qué queremos establecer un servidor headless.
¿Cómo funciona un servidor headless?
- o tiene conectado teclado, ratón ni monitor
- Por lo general, ejecuta sistemas operativos basados puramente en línea de comandos (precisamente como Ubuntu Server), lo que ahorra recursos de hardware y espacio. El tema de espacio es la razón que he tomado para decantarme por esta modalidad
- Administración remota: Se controla por completo a través de la red mediante conexiones de texto como SSH (Secure Shell) o interfaces web.N
Las principales ventajas que podríamos enumerar son:
- el citado problema de espacio
- Ahorro de recursos: Al no gastar potencia gráfica en mostrar escritorios, toda la memoria RAM y el procesador se dedican a las tareas del servidor.
- Menor consumo eléctrico: Es ideal para equipos que deben estar encendidos las 24 horas del día
- Seguridad y estabilidad: Al tener menos paquetes instalados (sin entorno gráfico), se reduce la cantidad de fallos posibles y vulnerabilidades.
Una vez explicada la razón de por qué nos decantamos por el headless, volvamos a la instalación.
Nos habíamos quedado en la asignación automática de la IP mediante el Protocolo de Configuración Dinámica de Host (DHCP) y decidido establecer una dirección IP fija.
Configurar dirección IP fija.
Lo primero que debemos comprobar es cómo está configurada nuestra red y que IPs están en uso.
Hemos visto que nuestra IP dinámica es:
192.168.1.132/24
Esto nos dice que nuestra red es:
192.168.1.0/24
y normalmente las IP posibles dentro de esa red son 192.168.1.1 hasta 192.168.1.254.
Necesitamos saber qué IP usa el router como puerta de enlace y, si es posible, qué rango utiliza el DHCP.
En otro ordenador conectado a la misma red ejecutamos (nota, los comandos están para MacOS ya que es el ordenador que yo uso como principal):
route -n get default | grep gateway
Lo que nos devuelve:
gateway: 192.168.1.1
Esta 192.168.1.1 sería normalmente la dirección del router.
Averiguamos la IP de nuestro ordenador (Si estamos conectado por Wi-Fi, normalmente será en0):
ipconfig getifaddr en0
Me devuelve: 192.168.1.119
Entramos a nuestro router para ver qué direcciones de IP tiene asignadas: http://192.168.1.1/ y ponemos la contraseña para la administración del mismo
Cada router tiene su propio software de gestión, yo me basaré en uno de Movistar, pero en lo escencial esto nos orientará para cualquier otro router.
Navegamos hacia la sección de red local, y observamos qué rango de IP utiliza el DHCP del router. En nuestro caso el router reparte: de 192.168.1.33 a 192.168.1.199.
Así que podremos elegir una IP fuera de este rango, como 192.168.1.50
Seleccionamos manual y nos aparece esta ventana:
de acuerdo con nuestra pequeña investigación previa, ponemos estos valores:
| Campo | Valor | | :---- | :---- | | Subnet | 192.168.1.0/24 | | Address | 192.168.1.50 | | Gateway | 192.168.1.1 | | Name servers | 192.168.1.1 | | Search domains | lo dejamos vacío |
Hacemos click en “done”. Así el servidor quedará siempre en: 192.168.1.50 Y podemos conectarnos a él desde ssh con:
ssh usuario@192.168.1.50
Para comprobar que se ha establecido correctamente la IP fija, y antes de seguir con la instalación, podemos comprobarlo haciendo ping a la misma:
ping \-c 2 192.168.1.50
6. Configurar proxy
Este valor lo dejamos vacío. Y pulsamos Done.
7. Configurar el mirror de Ubuntu
Dejamos el valor predeterminado: http://archive.ubuntu.com/ubuntu. Pulsamos Done.
8. Configurar el almacenamiento
Esta es una de las partes más importantes.
Vamos a hacer una instalación limpia, en nuestro caso el disco duro no es nuevo, pero no nos importa perder su datos y formatearlo, de hecho es lo que queremos.
Seleccionamos “Use entire disk” y “Set up this disk as an LVM group”.
Configurar un disco como un grupo LVM (Volume Group) significa agrupar uno o varios discos o particiones físicas para crear un espacio de almacenamiento común y flexible en Linux. Esto nos facilita posteriormente ciertas operaciones de gestión del almacenamiento.
¿Qué es LVM y el Grupo de Volúmenes?
- LVM (Logical Volume Manager): Es un sistema que administra el almacenamiento de forma flexible, separado de las particiones fijas de antes.
- Volumen Físico (PV): El disco duro o partición preparado para LVM.
- Grupo de Volúmenes (VG): La unión de uno o varios volúmenes físicos que forma un pool de almacenamiento.
- Volumen Lógico (LV): Las particiones virtuales que creamos dentro del grupo para usarlas en nuestro sistema.
¿Para qué sirve?
- Cambiar tamaño con facilidad: Para agrandar o achicar el espacio de tus particiones mientras el equipo está funcionando sin reiniciar.
- Unir varios discos: Podemos sumar discos distintos para que funcionen como si fueran uno solo y de mayor tamaño
- Copias de seguridad rápidas: Permite crear capturas instantáneas (snapshots) de los datos
Hacemos clic en Done y revisamos:
Confirmamos y seguimos. Nos avisará de que si continuamos, se perderán todos los datos que hubiera en el disco duro, pero como hemos comentado, es lo que queremos.
9. Crear usuario
Ubuntu nos pide ahora los datos del administrador y del servidor:
En el caso de mi servidor pondré estos datos:
- Nombre: Alberto Fortes (este campo no es crítico y podemos poner nuestro nombre real)
- Nombre del servidor: wopr (un guiño a la película Juegos de Guerra, de 1983)
- Nombre de usuario: mengano. El usuario admin está reservado
- Contraseña: aquí debemos usar una contraseña fuerte (y no joshua como en la película)
10. Configurar SSH
Marcaremos “Install OpenSSH server”, lo que permitirá administrar el servidor remotamente desde otro ordenador:
ssh mengano@192.168.1.50
11. Instalar controladores de hardware
Si marcamos anteriormente “Search for third-party drivers” nos aparecerá una pantalla para instalarlos. En mi caso encontró una GPU NVDIA y se instalaron los drivers.
En caso de instalación, nos pedirá reiniciar. Habrá que quitar el USB de instalación antes.
12. Featured Server Snaps
Ubuntu puede ofrecerte algunos paquetes adicionales, como Docker, Nextcloud, etc
No seleccionaremos ninguno para realizar solo una instalación básica.
13. Instalación
Ahora es cuando empieza a instalarse Ubuntu. Tardará bastante poco en comparación con otros SSOO.
Una vez terminado es posible que pida reiniciar.
Una vez reiniciado, deberás poner tu nombre de usuario y contraseña y ya estás dentro.
Comprobaremos la IP:
ip addr
Y comprobaremos internet:
ping -c 4 google.com
También podemos comprobar si funciona la conexión ssh:
ssh mengano@192.168.1.50
Si todo ha ido bien, podrás conectarte sin problemas tras introducir la password, y verás algo como:
mengano@wopr:~$
Ahora solo quedaría establecer una IP pública para acceder desde fuera de la red local.
14. Red pública para acceder fuera de la red local
Para acceder desde fuera de tu red local, no usaríamos 192.168.1.50. Esa es una IP privada y solo funciona dentro de tu LAN.
Necesitamos la IP pública de tu conexión a Internet:
curl ifconfig.me
Por ejemplo, si tu router tiene:
IP pública: 85.xxx.xxx.xxx
desde fuera podrías conectarte mediante:
ssh usuario@85.xxx.xxx.xxx
Pero hay un paso importante: el router debe redirigir el puerto SSH hacia tu servidor 192.168.1.50.
Por ejemplo:
Internet -> IP pública: 85.xxx.xxx.xxx -> puerto 22 -> Router 192.168.1.1 -> Ubuntu 192.168.1.50:22
Pero abrir el puerto 22 no es la forma más segura. Antes de hacerlo, podemos configurarlo de forma bastante más segura, por ejemplo:
- SSH con claves, no contraseña.
- Firewall ufw.
- Cambiar el puerto externo.
- Desactivar el acceso SSH por contraseña.
- Opcionalmente usar VPN/WireGuard, que es aún mejor para acceder a tu red desde fuera.
Nosotros vamos a configurar el router Movistar Smart WiFi HGU GPT-2541GNAC, el cual permite configurar reglas de NAT/port forwarding.
Para acceder desde fuera, te recomiendo hacerlo en este orden:
- Comprobar si tienes IP pública accesible desde Internet.
- Configurar el router para dirigir el tráfico hacia 192.168.1.50.
- Configurar SSH de forma segura en Ubuntu.
- Probar desde una red externa, por ejemplo usando los datos móviles del móvil.
15. Habilitar SSH para IP pública en router Movistar
Una vez tenemos el SSH funcionando en la red local, necesitamos poder acceder desde fuera de la misma, mediante nuestra IP pública. Para ello debemos abrir puertos en el router, habilitar puertos en Ubuntu server; habilitar el Firewall, etc
Abrimos puertos en el router
Entramos en el router: http:192.168.1.1 y ponemos la password que nos da el propio router en la pegatina del dorso. En nuestro caso se trata de un router Movistar HGU GPT-2541GNAC, así que vamos al menú, configuración avanzada > NAT > Virtual Servers.
El router tiene el puerto 22 reservado para el SSH, y para dar una pequeña capa más de seguridad vamos a establecer el puerto 2222 para el SHH.
seleccionamos “custom service” y hacemos click en añadir y rellenamos los campos:
| Custom Service: | SSH-Ubuntu | | :---- | :---- | | Server IP Address: | 192.168.1.50 | | External Port Start | 2222 | | External Port End | 2222 | | Protocol | TCP | | Internal Port Start | 2222 | | Internal Port End | 2222 |
Con esto no es suficiente, el router te pide también abrir el puerto fuera de la configuración avanzada:
Añadimos la misma:
| Nombre regla de puertos | SSH-Ubuntu | | :---- | :---- | | Dirección IP | 192.168.1.50 | | Protocolo | TCP | | Abrir Puerto/Rango Externo (WAN) | 2222 | | Abrir Puerto/Rango Interno (LAN) | 2222 |
Cambiar SSH en Ubuntu
En Ubuntu ejecutamos:
sudo nano /etc/ssh/sshd_config
Buscamos la línea que empieza por #Port 22 y la cambiamos por Port 2222:
Permitir el puerto en UFW
Permitir un puerto en UFW (Uncomplicated Firewall) significa abrir una vía de comunicación en el cortafuegos para que el tráfico de red externo o local pueda entrar a tu ordenador o servidor a través de un número de puerto y protocolo específicos.
¿Cómo funciona UFW por defecto?
- Bloqueo total: Por defecto, UFW bloquea todas las conexiones que intentan entrar desde el exterior.
- Tráfico saliente: Permite que tu equipo se conecte libremente a internet.
- La excepción: Cuando ejecutas un comando para permitir un puerto (por ejemplo, sudo ufw allow 80/tcp), le dices al sistema que haga una excepción a esa regla de bloqueo y acepte las peticiones que lleguen a ese servicio.
Por tanto ejecutamos:
sudo ufw allow 2222/tcp
Y comprobamos:
sudo ufw status
El resultado debe ser algo como:
Ahora habría que reiniciar el SSH pero antes comprobamos que no tiene errores, al ejecutar: sudo sshd -t no debe devolvernos nada, significa que no hay errores.
Reiniciamos:
sudo systemctl restart ssh
Comprobamos:
sudo ss -tlnp | grep 2222
Nos debe devolver algo así como:
LISTEN ... 0.0.0.0:2222
Ahora ya deberíamos poder acceder al servidor Ubuntu desde fuera de la red local:
ssh -p 2222 mengano@<IP_PUBLICA>
