Convertir un PC Antiguo en Servidor Casero: Guía Evergreen Completa
1. Introducción y Contexto
Un servidor casero permite crear nube privada, servidor multimedia, juegos, seguridad de red y más reutilizando hardware antiguo o con un NAS dedicado. Con Linux, OpenMediaVault, TrueNAS o paquetes tipo WAMP/XAMPP puedes montar servicios de archivos, webs, bases de datos y copias de seguridad.
Importante: Esta guía explica opciones, no una receta universal. Elige según tu hardware, necesidades y conocimientos técnicos.
2. Prerrequisitos y Hardware
Requisitos Mínimos por Uso
| Uso | CPU | RAM | Almacenamiento | Red |
|---|---|---|---|---|
| NAS básico (OpenMediaVault) | Dual-core | 2 GB | 1 TB+ | Gigabit Ethernet |
| Multimedia (Plex/Jellyfin) | Quad-core | 4 GB | 2 TB+ | Gigabit Ethernet |
| Servidor Web/Dev | Dual-core | 4 GB | 500 GB SSD | Gigabit Ethernet |
| IA Local (LLM) | Quad-core+ | 16 GB+ | 2 TB NVMe | 10Gbps recomendado |
Limpieza del Hardware
- Desconecta el equipo y descarga a tierra antes de tocar componentes.
- Limpia ventiladores, disipadores y ranuras con aire comprimido.
- Cambia pasta térmica si tiene más de 5 años.
- Añade discos extra si la placa base tiene puertos SATA libres.
Nota: Si tu placa base es muy antigua o solo ofrece Fast Ethernet, una tarjeta PCIe gigabit barata es casi obligatoria.
3. Sistemas Operativos para Servidor Casero
OpenMediaVault (OMV)
Ideal para equipos modestos o muy antiguos. Con 1-2 GB de RAM y una CPU antigua puedes montar un NAS doméstico muy digno que ofrezca SMB, NFS, FTP, DLNA, copias de seguridad y más.
Instalación en Debian:
# Instalar systemd-resolved antes (obligatorio)
apt-get install --yes systemd-resolved psmisc
systemctl enable --now systemd-resolved.service
systemctl restart systemd-resolved.service
# Añadir repositorios OpenMediaVault
cat <<EOF > /etc/apt/sources.list.d/openmediavault.list
deb [signed-by=/usr/share/keyrings/openmediavault-archive-keyring.gpg] http://packages.openmediavault.org/public/ synchrony main
EOF
# Instalar OMV
export LANG=C.UTF-8 export DEBIAN_FRONTEND=noninteractive
apt-get update
apt-get --yes --auto-remove install openmediavault
# Población de la base de datos
omv-confdbadm populate
TrueNAS (ZFS)
Para equipos con buena RAM y discos que requieran protección contra corrupción. TrueNAS usa ZFS con soporte avanzado de RAID y snapshots.
Requisitos:
- Mínimo 8 GB RAM recomendado
- Dual-core o superior
- Discos con SMART soportado
Debian/Ubuntu Server
Para máxima flexibilidad y control. Instala solo lo que necesites: servidor web (Apache/Nginx), bases de datos (MySQL/MariaDB), Docker para contenerizar servicios.
# Ubuntu Server mínimo
apt install openssh-server docker.io docker-compose ufw fail2ban lynis
4. Docker para Contenerización
Docker mantiene el sistema limpio, facilita actualizaciones y permite clonar configuración entre máquinas.
Instalación Básica:
# Instalar Docker
curl -fsSL https://get.docker.com | bash
# Crear usuario en grupo docker
usermod -aG docker $USER
newgrp docker
# Verificar instalación
docker --version
Docker Compose para Pi-hole:
version: '3'
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "5053:5053/tcp"
- "80:80/tcp"
- "443:443/tcp"
environment:
- TZ=Europe/Madrid
- FTLCONF_Dnscrypt=no
- WEBPASSWORD="tu_password_seguro"
volumes:
- "/etc/pihole:/etc/pihole"
- "/etc/dnsmasq.d:/etc/dnsmasq.d"
cap_add:
- NET_ADMIN
network_mode: "host"
5. Hardening de Seguridad (Ubuntu/Debian)
Paso 1: Actualizar el sistema
sudo apt update && sudo apt full-upgrade -y
[ -f /var/run/reboot-required ] && sudo reboot
Paso 2: Crear usuario administrador
sudo adduser your_user
sudo usermod -aG sudo your_user
Paso 3: Configurar SSH con clave (sin password)
# Generar clave Ed25519
ssh-keygen -t ed25519 -C "tu_usuario@maquina"
# Copiar al servidor
ssh-copy-id your_user@your_server_ip
Paso 4: Endurecer SSH (/etc/ssh/sshd_config.d/00-hardening.conf)
PermitRootLogin no
PasswordAuthentication no
KbdInteractiveAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
LoginGraceTime 30
X11Forwarding no
AllowUsers your_user
Paso 5: Activar firewall con UFW
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw limit OpenSSH
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
Paso 6: Parches automáticos
sudo apt install unattended-upgrades
dpkg-reconfigure -plow unattended-upgrades
# Responde Yes en la pantalla que aparece
Paso 7: Revisar servicios expuestos
sudo ss -tulpn
systemctl list-unit-files --type=service --state=enabled
Paso 8: Ajustar parámetros del kernel
# /etc/sysctl.d/99-hardening.conf
net.ipv4.conf.all.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv4.tcp_syncookies = 1
kernel.kptr_restrict = 2
kernel.dmesg_restrict = 1
sudo sysctl --system
Paso 9: Registrar cambios con auditd
sudo apt install auditd
sudo nano /etc/audit/rules.d/50-hardening.rules
# Contenido:
-w /etc/passwd -p wa -k identidad
-w /etc/shadow -p wa -k identidad
-w /etc/group -p wa -k identidad
-w /etc/sudoers -p wa -k sudoers
-w /etc/ssh/sshd_config -p wa -k sshd
sudo augenrules --load
sudo auditctl -l
Paso 10: AppArmor y Fail2Ban
sudo aa-status | head -3
sudo apt install fail2ban
sudo fail2ban-client status sshd
Paso 11: Auditoría con Lynis
sudo apt install lynis
sudo lynis audit system
# Revisar /var/log/lynis-report.dat
6. Pi-hole: DNS Filtrado y Privacidad
Pi-hole actúa como servidor DNS filtrando publicidad, rastreadores y dominios no deseados antes de que lleguen a tus dispositivos.
Docker Compose para Pi-hole:
version: '3'
services:
pihole:
container_name: pihole
image: pihole/pihole:latest
ports:
- "53:53/tcp"
- "53:53/udp"
- "80:80/tcp"
- "443:443/tcp"
environment:
- TZ=Europe/Madrid
- FTLCONF_Dnscrypt=no
- WEBPASSWORD="tu_password_seguro"
volumes:
- "/etc/pihole:/etc/pihole"
- "/etc/dnsmasq.d:/etc/dnsmasq.d"
cap_add:
- NET_ADMIN
network_mode: "host"
Configurar Router:
# En router, establecer DNS primario como IP del Pi-hole
dns_primary = 192.168.1.100
dns_secondary = 8.8.8.8
Listas de Bloqueo Recomendadas:
- AdGuard DNS: https://dns.adguard.com/dns-block
- Firebog: https://firebog.net/
- StevenBlack: https://github.com/StevenBlack/hosts
7. Configuración de Almacenamiento (NAS)
OpenMediaVault - Carpetas Compartidas:
# Crear carpeta compartida
omv-firstaid create-share /mnt/data/misarchivos "Mis Archivos" 777
# Configurar permisos SMB
omv-firstaid set-share-permissions /mnt/data/misarchivos
TrueNAS - Crear Pool con RAID-Z:
# En interfaz web TrueNAS:
1. System → Storage → Pools → Create Pool
2. Selecciona discos y configura RAID-Z1 (mínimo 3 discos)
3. Crea dataset para compartir
SMART Monitoring:
# Verificar estado SMART de disco
smartctl -a /dev/sda
# Configurar monitorización automática
apt install smartmontools
systemctl enable --now smartd
8. Servidor Multimedia (Plex/Jellyfin)
Jellyfin (Recomendado - Libre):
version: '3'
services:
jellyfin:
container_name: jellyfin
image: jellyfin/jellyfin
ports:
- "8096:8096"
volumes:
- "/mnt/data/multimedia:/jellyfin/media"
Plex Media Server:
version: '3'
services:
plex:
container_name: plex
image: lscr.io/linuxserver/plex:latest
environment:
- PLEX_UID=1000
- PLEX_GID=1000
volumes:
- "/mnt/data/multimedia:/media"
9. Copias de Seguridad y Backup
Configurar Rsync para Backups:
# Crear tarea de rsync
omv-firstaid create-rsync-task \
--source /mnt/data/misarchivos \
--destination /mnt/backup/sincompresion \
--schedule "0 2 * * *"
TrueNAS - Replicación ZFS:
# En interfaz web TrueNAS:
1. System → Data Protection → Replication Tasks
2. Configurar réplica local o remota
3. Activar compresión y encriptación
Backup a la Nube:
# Rsync a S3 (AWS, Wasabi, etc.)
rclone config
rclone sync /mnt/data/misarchivos s3:mi-bucket --progress
10. Acceso Remoto Seguro
Opción 1: VPN Personal (Recomendado)
version: '3'
services:
wireguard:
container_name: wireguard
image: ghcr.io/wireguard/wireguard
ports:
- "51820:51820/udp"
volumes:
- "/etc/wireguard:/etc/wireguard"
Opción 2: Tailscale (Más Sencillo)
version: '3'
services:
tailscale:
container_name: tailscale
image: tailscale/tailscale:latest
environment:
- TS_AUTHKEY=tu_auth_key_aqui
volumes:
- "/var/run/tailscale:/var/run/tailscale"
Opción 3: SSH Tunneling
# Desde cliente a servidor
tunnel ssh -L 8080:localhost:80 tu_usuario@server_ip
11. Errores Habituales y Soluciones
| Error | Causa | Solución |
|---|---|---|
| No puedo acceder por SSH | Firewall bloqueando puerto 22 | sudo ufw allow 22/tcp |
| Pi-hole no resuelve DNS | systemd-resolved conflict | Configurar resolvectl dns antes de instalar OMV |
| Docker no arranca | Usuario no en grupo docker | usermod -aG docker $USER && newgrp docker |
| SMB lento | Fast Ethernet antiguo | Añadir tarjeta PCIe Gigabit |
| ZFS corrupto | Disk failure no detectado | smartctl -a /dev/sdX +S |
| SSH fuerza bruta | PasswordAuthentication enabled | Configurar sshd_config.d/00-hardening.conf |
12. FAQ - Preguntas Frecuentes
¿Cuánto consume un servidor casero?
Un PC antiguo bien optimizado consume entre 30-60W en reposo. Con OpenMediaVault y Docker, puedes reducirlo a menos de 40W. TrueNAS con ZFS añade 5-10W extra.
¿Puedo exponer mi servidor a internet?
Sí, pero no recomendado sin VPN o túneles seguros. Si lo haces: usa HTTPS (certificados Let's Encrypt), limita puertos, activa fail2ban y mantén todo actualizado.
¿Qué es mejor: OpenMediaVault o TrueNAS?
OpenMediaVault: Equipos modestos, 1-2 GB RAM, configuración manual.
TrueNAS: Equipos con 8+ GB RAM, discos que requieran ZFS/RAID-Z, interfaz más compleja.
¿Necesito una GPU para IA local?
Sí. Para LLMs significativos necesitas mínimo 6 GB VRAM (RTX 3060 o superior). Modelos pequeños pueden correr en CPU con 8+ GB RAM.
¿Cómo actualizo el sistema sin perder datos?
Siempre haz backup primero:
1. Rsync todo a disco externo
2. Aplica actualización
3. Verifica servicios funcionando
4. Si falla, restaura desde backup
¿Puedo usar Windows como servidor?
Sí, pero consume más recursos (4-8 GB RAM mínimo). Para desarrollo web usa WAMP/XAMPP. Para NAS, considera OpenMediaVault o TrueNAS.
13. Conclusión y Próximos Pasos
Tu servidor casero bien configurado puede ser: nube privada, Netflix particular, centro de juegos con amigos, guardián de contraseñas, filtro de seguridad de red y motor de IA local.
Próximos pasos recomendados:
- Semana 1: Instalar sistema operativo y hardening básico
- Semana 2: Configurar Docker con Pi-hole y Jellyfin
- Semana 3: Establecer copias de seguridad automáticas
- Semana 4: Configurar acceso remoto seguro (VPN/Tailscale)
Recuerda: El hardening no es una tarea única. Repítelo con cada servicio nuevo que instales.
Fuentes verificadas
- https://aventurauniversal.com/como-montar-un-servidor-casero-guia-completa-y-usos-reales/
- https://docs.openmediavault.org/en/stable/installation/on_debian.html
- https://www.truenas.com/docs/solutions/optimizations/security/
- https://cubepath.com/docs/seguridad-del-servidor/hardening-de-servidor-linux-guia-completa