# Configuraciones de Servidores Linux

Configuraciones de ubuntu y Recomendaciones

# Introduccion

### Esta sección solo se dedica a recopilar configuraciones de uso común en Ubuntu Server

[![image.png](https://wiki.tinyfox.ddns.me/uploads/images/gallery/2025-11/scaled-1680-/VIiimage.png)](https://wiki.tinyfox.ddns.me/uploads/images/gallery/2025-11/VIiimage.png)

# Manejo de Unidades de Almacenamiento

[  
![image.png](https://wiki.tinyfox.ddns.me/uploads/images/gallery/2025-11/scaled-1680-/UyIimage.png)](https://wiki.tinyfox.ddns.me/uploads/images/gallery/2025-11/UyIimage.png)

El formato de una unidad de almacenamiento es aquel que le indica a la unidad de almacenamiento el protocolo a seguir para almacenar cosas, tales como dejar celdas en blanco entre un archivo y otro, o distribuir un contenido sin importarle la continuidad en las celdas de la unidad de almacenamiento. un disco puede tener "particiones" que no es más que una división en el disco, estas divisiones se usan comúnmente por el sistema para tener distintos formatos dentro de una misma unidad de almacenamiento, aunque podrías tener muchas particiones con el mismo formato a elección del usuario.

Cuando compras una unidad de almacenamiento o intentas usar una unidad de almacenamiento que usabas en Windows este no podrá ser reconocida por Ubuntu server, ya sea porque no tiene un formato o porque tiene un formato no es compatible con sistemas Linux. En caso de que pases una unidad de almacenamiento de Windows a Linux con formato fat32 reconocerá la unidad de almacenamiento, pero yo recomiendo un **formato ext4** en caso de que quieras usarlo internamente en el sistema para almacenar cosas.

## Preparación

Antes de comenzar, asegúrese de que el disco esté disponible en el sistema. A veces, la presencia de un dispositivo en el BIOS no garantiza que el sistema operativo lo reconozca. Verifique las unidades disponibles con el comando:

```
sudo fdisk -l
```

![Check available discs using the command](https://serverspace.io/wp-content/uploads/2020/05/screenshot_1-1.png)

En nuestro caso hay 2 discos en el sistema: `vda` y `vdb`, uno de 50GiB y otro de 100GiB `vda` es el disco del sistema y no debemos modificarlo. Trabajaremos con el disco `vdb`.

**Advertencia:** Es crucial identificar correctamente el disco con el que se va a trabajar. Modificar el disco del sistema por error puede dañar el sistema operativo. Asegúrese de que el disco que va a utilizar no tenga particiones o datos importantes.

## Particionamiento del Disco

Para particionar el disco, utilizaremos la utilidad `fdisk`. Ejecute el siguiente comando, reemplazando `vdb` por el identificador de su disco:

```
sudo fdisk /dev/vdb
```

Al ejecutar el comando, se ingresará al menú interactivo de `fdisk`. Presione `m` y luego `Enter` para ver la lista de comandos disponibles.

## Referencia de Comandos de fdisk

- **DOS (MBR)**
    
    
    - `a`: alternar una bandera de arranque
    - `b`: editar etiqueta de disco BSD anidada
    - `c`: cambiar el indicador de compatibilidad con DOS
- **General**
    
    
    - `d`: eliminar una partición
    - `F`: listar espacio libre no particionado
    - `l`: listar los tipos de partición conocidos
    - `n`: añadir una nueva partición
    - `p`: mostrar la tabla de particiones
    - `t`: cambiar el tipo de partición
    - `v`: verificar la tabla de particiones
    - `i`: imprimir información sobre la partición
- **Misceláneos**
    
    
    - `m`: mostrar este menú
    - `u`: cambiar las unidades de visualización/entrada
    - `x`: funciones adicionales (solo para expertos)
- **Script**
    
    
    - `I`: cargar el diseño del disco desde un archivo de script sfdisk
    - `O`: volcar el diseño del disco a un archivo de script sfdisk
- **Guardar y Salir**
    
    
    - `w`: guardar la tabla en el disco y salir
    - `q`: salir sin guardar los cambios
- **Crear una nueva etiqueta**
    
    
    - `g`: crear una nueva tabla de particiones GPT vacía
    - `G`: crear una nueva tabla de particiones SGI vacía (IRIX)
    - `o`: crear una nueva tabla de particiones de DOS vacía
    - `s`: crear una nueva tabla de particiones de Sun vacía

## Eliminar una Partición

Presione `d` y seleccione el número de partición a eliminar.  
En caso de que no se le muestren las particiones puede buscar la tabla de particiones con `p` como se le indica en el menú.

## Crear una Partición

En este ejemplo, crearemos una partición primaria que ocupe todo el disco.

1. Presione `n` para crear una nueva partición.
2. Seleccione `p` para partición primaria.
3. Elija el número de partición: `1`.
4. Presione `Enter` para aceptar el primer sector por defecto.
5. Presione `Enter` para aceptar el último sector por defecto (usará todo el disco).

Si desea crear varias particiones, en el paso 5 en vez de solo presionar `Enter` ingrese primero el espacio que abarcara, por ejemplo, para una partición de 2 gigabytes, especifique `2G`, Las denominaciones de capacidad permitidas son de Kilo, Mega, Giga, Tera y Peta,

6. Presione `w` para guardar los cambios y salir.

## Formateo del Disco

Después del particionamiento, se crea el dispositivo `/dev/vdb1` (o el correspondiente a su disco y número de partición). Ahora formatee la partición con el sistema de archivos ext4 con el comando:

```bash
sudo mkfs.ext4 /dev/vdb1
```

<div class="md-code-block md-code-block-dark" id="bkmrk-linux-ofrece-varios-"><div class="md-code-block-banner-wrap"><div class="md-code-block-banner md-code-block-banner-lite"><div class="_121d384"><div class="d2a24f03">Linux ofrece varios sistemas de archivos, listo los más comunes a continuación:</div></div></div></div></div>- `mkfs.bfs`
- `mkfs.btrfs`
- `mkfs.cramfs`
- `mkfs.ext2`
- `mkfs.ext3`
- `mkfs.ext4`
- `mkfs.ext4dev`
- `mkfs.fat`
- `mkfs.minix`
- `mkfs.msdos`
- `mkfs.ntfs`
- `mkfs.vfat`
- `mkfs.xfs`

# Montar Unidades de Almacenamiento

## Introducción

[![image.png](https://wiki.tinyfox.ddns.me/uploads/images/gallery/2025-11/scaled-1680-/N33image.png)](https://wiki.tinyfox.ddns.me/uploads/images/gallery/2025-11/N33image.png)

Cuando tu conectas una USB en sistemas operativos con interfaz de usuario normalmente este se reconoce de inmediato y te permite navegar. Cuando conectas unidades externas en Ubuntu Server estas no se montan automáticamente, tú tienes que crear esta conexión. para esto se verá como hacerlo a continuación.

## Creación de punto de montaje

[![image.png](https://wiki.tinyfox.ddns.me/uploads/images/gallery/2025-11/scaled-1680-/2srimage.png)](https://wiki.tinyfox.ddns.me/uploads/images/gallery/2025-11/2srimage.png)

### 1.- Crear carpeta de montaje 

El primer paso es crear una carpeta donde se montarán o donde pondrás el contenido de la unidad de almacenamiento externa, en sistemas Linux, normalmente estas unidades externas se almacenan en **/mnt**

Crearemos la carpeta para el punto de montaje con el siguiente comando

```bash
sudo mkdir /mnt/punto-de-montaje
```

### 2.- Listar los dispositivos

Una vez ubicado veremos cual es la unidad que montaremos con el siguiente comando

```bash
sudo lsblk -f
```

 Obtendremos una salida como la siguiente

[![image.png](https://wiki.tinyfox.ddns.me/uploads/images/gallery/2025-11/scaled-1680-/pM5image.png)](https://wiki.tinyfox.ddns.me/uploads/images/gallery/2025-11/pM5image.png)

Como puedes apreciar en la imagen, se listan las unidades (como sda, mmcblk1p1 y nvme01) y sus particiones.   
Guardaremos el nombre de la partición que nos interese y su UUID para usarlo posteriormente.

### 3.- Montar el sistema de archivos

Para los siguientes comandos es necesario tomar en consideración que debes usar el punto de montaje de tu dispositivo como indique anteriormente, para fines prácticos usare sda1 como la partición con la que trabajaremos, pero cámbiala para todos los siguientes comandos según sea necesario.

Para montar la unidad usaremos el siguiente comando

```bash
sudo mount /dev/sda1 /mnt/punto-de-montaje
```

para verificar que el montaje se haya realizado correctamente puedes utilizar el siguiente comando

```bash
df -h | grep sda1
```

En caso de que este bien montada, podemos hacer este cambio permanente para que se conecte cuando arranque el sistema editando el siguiente archivo mediante el editor de texto nano

```bash
sudo nano /etc/fstab
```

Agregamos la siguiente línea

```bash
UUID=tuUUID /mnt/punto-de-montaje  ext4    defaults,nofail    0   2
```

Ahora es momento de comprobar que el auto montaje se haya echo correctamente con los siguientes comandos

Primero desmontaremos el disco

```bash
sudo umount /mnt/punto-de-montaje
```

y luego montaremos nuevamente como se hará en el proceso de arranque con el siguiente comando

```bash
sudo mount -a
```

Si todo termino satisfactoriamente no veras ningún error, si sucedió algo tendrás que atenderlo, por ejemplo si tienes el siguiente error

> *mount: (hint) your fstab has been modified, but systemd still uses the old version; use 'systemctl daemon-reload' to reload.*

tendrás que usar el comando que se te indica.

```bash
sudo systemctl daemon-reload
```

# Crons y Bash files

## Introducción

[![image.png](https://wiki.tinyfox.ddns.me/uploads/images/gallery/2025-11/scaled-1680-/M0rimage.png)](https://wiki.tinyfox.ddns.me/uploads/images/gallery/2025-11/M0rimage.png)

Los crons son acciones que puedes programar para que se ejecuten a cierte hora del día o de manera recurrente

### Crecion de Archivos Bash

puedes crear un archivo bash donde quieras pero te recomiendo que sea un lugar que no muevas de manera recurrente para evitar problemas futuros.

#### Ejemplo un bash file

Aquí un ejemplo de cómo crear un backup de la data de los contenedores de Docker

Abres el editor de código nano directamente en donde almacenaras archivo.sh

```bash
sudo nano /usr/local/bin/backup_dockerdata.sh 
```

Pegas el contenido en el interior y guardas

```bash
#!/bin/bash
SOURCE_DIR="/dockerData"
BACKUP_DIR="/mnt/wdstorage/docker/backup"
RUNNING_CONTAINERS=$(docker ps -q)
echo "Deteniendo contenedores Docker en ejecución..."
docker stop $RUNNING_CONTAINERS
sleep 5
mkdir -p "$BACKUP_DIR"
rsync -av --delete "$SOURCE_DIR/" "$BACKUP_DIR/"
echo "Reiniciando contenedores Docker que estaban en ejecución..."
if [ -n "$RUNNING_CONTAINERS" ]; then
    docker start $RUNNING_CONTAINERS
fi
```

le agregas la propiedad de "ejecutable" al archivo

```bash
sudo chmod +x /usr/local/bin/backup_dockerdata.sh
```

### Creación del cron

Ingresa el siguiente comando, si te pide seleccionar un editor de código eliges nano y le das en continuar (si quitas la palabra sudo, se creará un cron sin permisos de administrador)

```bash
sudo crontab -e
```

y agregas la siguiente línea hasta el final,

```
0 3 * * * /usr/local/bin/backup_dockerdata.sh
```

El significado de esta línea es cada

1. Minuto 0
2. Hora 3
3. Todos los días
4. Todos los meses
5. Todos los años

Ejecuta el archivo en esta ruta

# Cambiar la zona horaria

[![image.png](https://wiki.tinyfox.ddns.me/uploads/images/gallery/2025-11/scaled-1680-/5rAimage.png)](https://wiki.tinyfox.ddns.me/uploads/images/gallery/2025-11/5rAimage.png)


Para cambiar la zona horaria debes primero conocer el nombre de tu zona horaria, podrás ver la lista completa de zonas horarias si ingresas el siguiente comando

```bash
timedatectl list-timezones
```

Posteriormente cambias la zona horaria con el siguiente comando cambiando la zona horaria por la que te corresponda

```bash
sudo timedatectl set-timezone America/Mexico_City  
```

# Salud de las unidades de almacenamiento

[![image.png](https://wiki.tinyfox.ddns.me/uploads/images/gallery/2025-11/scaled-1680-/24Cimage.png)](https://wiki.tinyfox.ddns.me/uploads/images/gallery/2025-11/24Cimage.png)

Una de las cosas necesarias en el mantenimiento de servidores es checar la temperatura y salud general de los discos, la gran mayoría tienen un registro llamado SMART el cual podemos consultar de distintas formas.

### Unidades de almacenamiento USB

Para checar la salud de unidades de almacenamiento conectadas por USB instalaremos smartmontools

```bash
sudo apt install smartmontools
```

y para checar la información reducida pondremos el siguiente comando cambiando sdX por el numero de la unidad de almacenamiento como sda

```bash
sudo smartctl -A /dev/sdX
```

y para checar la información completa usaremos la propiedad -x en vez de -A

```bash
sudo smartctl -x /dev/sda
```

### Unidades de almacenamiento NVME

Para checar la salud de unidades de almacenamiento conectadas por PCI expess instalaremos nvme-cli

```bash
sudo apt install nvme-cli
```

y para checar la información reducida pondremos el siguiente comando cambiando nvme0nX por el numero de la unidad de almacenamiento

```bash
sudo nvme smart-log /dev/nvme0nX
```

como se muestra a continuación nvme0n1

```bash
sudo nvme smart-log /dev/nvme0n1
```

# Listar el peso de las carpetas

Para listar el peso de las carpetas puedes usar el siguiente comando

```bash
du
```

pero para organizarlo mejor es recomendable usarlo de la siguiente manera

```bash
sudo du -sh *
```

## Explicación de las opciones:

- `-l`: Formato largo (lista detallada)
- `-h`: Formato humano (tamaños legibles: KB, MB, GB)
- `-s`: Muestra el tamaño en bloques
- `-S`: Ordena por tamaño
- `-a`: Muestra archivos ocultos
- `--color=auto`: Colores para mejor legibilidad