Loading repository data…
Loading repository data…
Jaolmos / repository
Servidor self-hosting Raspberry Pi 5 como laboratorio de desarrollo Python. Hardware, Nginx, Docker, Cloudflare Tunnel y seguridad. Sin puertos expuestos, SSL automático.
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
Nota: Este documento muestra la evolución del proyecto. La primera parte describe la configuración inicial. Las secciones de actualización (Diciembre 2025, Febrero 2026) muestran los cambios realizados. La configuración actual se encuentra al final del documento.
Estado actual del servidor: Raspberry Pi 5 en carcasa Pironman 5 Max
Servidor self-hosting (autoalojado) usando una Raspberry Pi 5, diseñado como laboratorio de desarrollo y pruebas. El proyecto combina hardware optimizado (SSD, refrigeración activa) con una arquitectura de software moderna y segura (Nginx, Docker, Cloudflare Tunnel), creando una infraestructura flexible para alojar aplicaciones web Python tanto para acceso público (vía Internet) como privado (red local).
Características principales:
Esta configuración proporciona un entorno de self-hosting completo, escalable y seguro para desarrollar, probar y desplegar aplicaciones web desde casa, con la flexibilidad de ejecutar servicios tanto públicos como privados según las necesidades.
Raspberry Pi 5 (8GB RAM)
Sistema de refrigeración
Almacenamiento
Carcasa protectora
Alimentación
La placa base de la Raspberry Pi 5 antes del montaje
Raspberry Pi 5 con el disipador y ventilador instalados para mantener temperaturas óptimas durante cargas prolongadas
Raspberry Pi 5 instalada en la carcasa con acceso a los componentes internos
Montaje finalizado con la carcasa cerrada, lista para funcionar como servidor
ping raspberrypi.local -4
Nota: Este comando nos mostrará la IP dinámica asignada por DHCP (en nuestro caso fue 192.168.1.118). Alternativamente, podemos usar aplicaciones como IP Scanner para Windows.
ssh [TU-USUARIO]@192.168.1.118
Nota: En la primera conexión nos pedirá confirmar la autenticidad del host (escribimos 'yes') y luego introducimos nuestra contraseña. Una vez conectados, tendremos acceso remoto a la terminal de la Raspberry Pi desde nuestro ordenador.
sudo raspi-config
sudo nmtui
Nota: El /24 indica que usamos una máscara de subred 255.255.255.0, lo que permite 254 dispositivos en nuestra red local
sudo reboot
ping 192.168.1.20
ssh [TU-USUARIO]@192.168.1.20
sudo apt update
sudo apt full-upgrade
sudo apt install nginx
sudo systemctl status nginx
sudo apt install ufw
sudo ufw default deny incoming
sudo ufw default allow outgoing
sudo ufw allow ssh
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
sudo ufw enable
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
Editar el archivo con la siguiente configuración:
[DEFAULT]
bantime = 1h
findtime = 10m
maxretry = 5
[sshd]
enabled = true
Activar el servicio:
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
Nota: Con la cuenta gratuita:
- Puedes usar dominios gratuitos como
.ddns.net,.hopto.org,.sytes.net, etc.- Tienes un límite de 3 hostnames activos
- Debes confirmar cada hostname cada 30 días para mantenerlos activos
- Los dominios personalizados requieren una suscripción de pago
cd /usr/local/src
sudo wget http://www.no-ip.com/client/linux/noip-duc-linux.tar.gz
sudo tar xzf noip-duc-linux.tar.gz
cd noip-*
sudo make
sudo make install
Durante la instalación configuramos las credenciales de la cuenta No-IP
sudo nano /etc/systemd/system/noip2.service
Contenido del archivo:
[Unit]
Description=No-IP Dynamic DNS Update Client
After=network.target
[Service]
Type=forking
ExecStart=/usr/local/bin/noip2
Restart=always
[Install]
WantedBy=multi-user.target
Activar el servicio:
sudo systemctl daemon-reload
sudo systemctl enable noip2
sudo systemctl start noip2
Verificamos que el servidor es accesible desde Internet visitando:
# Instalación de Certbot y el plugin para Nginx
sudo apt install certbot python3-certbot-nginx
# Obtención del certificado SSL y configuración automática de Nginx
sudo certbot --nginx -d [TU-DOMINIO].ddns.net
Durante el proceso de configuración:
Para comprobar la configuración de renovación automática:
sudo certbot renew --dry-run
Esta configuración proporciona un servidor web básico con Nginx. En futuros documentos o actualizaciones se detallará cómo:
Esta primera fase se centra en tener un servidor web funcional y seguro con capacidad de servir contenido estático.
sudo apt install unattended-upgrades
sudo dpkg-reconfigure unattended-upgrades
Almacenamiento: microSD 256GB → SSD Lexar SL300 1TB (USB 3.0)
Raspberry Pi 5 con SSD Lexar SL300 1TB conectado vía USB 3.0
ANTES:
Internet → Router (puertos 80/443 abiertos) → No-IP → Nginx
AHORA:
Internet → Cloudflare Tunnel (cifrado) → Nginx → Docker
| Aspecto | Antes | Ahora |
|---|---|---|
| Almacenamiento | microSD 256GB | SSD Lexar 1TB |
| Dominio | No-IP (gratis) | Dominio propio |
| Puertos abiertos | 80, 443 | Ninguno |
| SSL | Let's Encrypt manual | Automático (Cloudflare) |
| Contenedores | No | Docker + Compose |
| Protección DDoS | No | Sí (Cloudflare) |
Acceso SSH: ssh [TU-USUARIO]@192.168.1.20
Servicios activos:
Referencia: Documentación oficial Pironman 5 Max
Caja Pironman 5 Max junto al SSD NVMe Silicon Power
Vista frontal con pantalla OLED mostrando uso de CPU, temperatura, RAM y almacenamiento
Vista lateral
Vista interior con ventiladores RGB, LEDs y SSD NVMe montado
| Aspecto | Antes | Ahora |
|---|---|---|
| Carcasa | Básica (plástico) | Pironman 5 Max (alumi |