Blog personal de Anibal Copitan usuario Linux, creador de software y contenido sobre IA & Programación
¿Listo para aprender más? Contáctame por WhatsApp
miércoles, 14 de mayo de 2025
Configura tu servidor de juegos Nintendo Switch con Ownfoil y DNS dinámico
Automatiza tu subdominio con IP dinámica usando Cloudflare y mantén tu servidor Ownfoil siempre disponible desde cualquier lugar.
Objetivo
Configurar foil.nintendomagica.com
para que se actualice
automáticamente con tu IP pública dinámica desde casa (ideal para
Raspberry Pi o servidores caseros).

🔧 Paso 1: Mover la gestión DNS a Cloudflare
Problema: SiteGround no ofrece DNS dinámico, lo que impide actualizar la IP automáticamente.
✅ Solución: Usar Cloudflare para la gestión DNS
- Regístrate gratis en Cloudflare
- Agrega tu dominio
nintendomagica.com
- Verifica que
foil.nintendomagica.com
esté en los registros DNS. Si no, agrégalo manualmente. - Cambia los nameservers en SiteGround por los que te
da Cloudflare (por ejemplo:
lisa.ns.cloudflare.com
,matt.ns.cloudflare.com
)
📊 Nota: Esto transfiere todo el DNS a Cloudflare. Tu sitio puede seguir alojado en SiteGround, solo los DNS serán gestionados desde Cloudflare.
SiteGround no soporta DNS dinámico

🔺 Paso 2: Configurar Cloudflare como servidor DNS
- Agrega tu dominio (ej.
nintendomagica.com
) a Cloudflare. - Verifica que se reconozca tu subdominio (ej.
foil.nintendomagica.com
). Si no está, agrégalo.

Cambiar el Server Name

⏳ Esto puede tardar hasta 24 horas en activarse totalmente. Ten paciencia.
🔐 Paso 3: Obtener tu API Token de Cloudflare
- Ve a Perfil de API Tokens
- Crea un nuevo token con permisos:
Zone.Zone
: ReadZone.DNS
: Edit
- Apóyalo a la zona:
nintendomagica.com
📄 Paso 4: Script para actualizar la IP en tu Raspberry
Este script bash actualiza la IP en Cloudflare solo si ha cambiado:
#!/bin/bash
# -----------------------------------------
# Script para actualizar IP pública en DNS
# Autor: Aníbal Copitán
# Blog: https://blog.anibalcopitan.com
# Fecha: 2025-05-12
# -----------------------------------------
# CONFIGURACIÓN INICIAL
API_TOKEN="TU_TOKEN"
ZONE_NAME="nintendomagica.com"
RECORD_NAME="foil.nintendomagica.com"
IP_FILE="/tmp/last_ip.txt"
# Obtener IP pública actual
CURRENT_IP=$(curl -s http://ipv4.icanhazip.com)
# Verificar si la IP cambió
if [ -f "$IP_FILE" ]; then
LAST_IP=$(cat "$IP_FILE")
if [ "$CURRENT_IP" == "$LAST_IP" ]; then
echo "La IP no ha cambiado: $CURRENT_IP"
exit 0
fi
fi
# Guardar nueva IP
echo "$CURRENT_IP" > "$IP_FILE"
# Obtener ZONE ID
ZONE_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones?name=$ZONE_NAME" \
-H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" | jq -r '.result[0].id')
# Obtener RECORD ID
RECORD_ID=$(curl -s -X GET "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records?name=$RECORD_NAME" \
-H "Authorization: Bearer $API_TOKEN" -H "Content-Type: application/json" | jq -r '.result[0].id')
# Actualizar el registro A
curl -s -X PUT "https://api.cloudflare.com/client/v4/zones/$ZONE_ID/dns_records/$RECORD_ID" \
-H "Authorization: Bearer $API_TOKEN" \
-H "Content-Type: application/json" \
--data "{\"type\":\"A\",\"name\":\"$RECORD_NAME\",\"content\":\"$CURRENT_IP\",\"ttl\":120,\"proxied\":false}" > /dev/null
echo "IP actualizada a $CURRENT_IP"
⏰ Paso 5: Automatizar con
crontab
Edita tu crontab
:
crontab -e
Agrega esta línea:
*/5 * * * * /home/pi/custom-ownfoil/script.sh
Este cron ejecuta el script cada 5 minutos, actualizando tu subdominio solo si la IP ha cambiado.
✅ Resultado final
Tu subdominio foil.nintendomagica.com
siempre estará
actualizado con tu IP pública dinámica. Ideal para jugar en red o
acceder a tu servidor desde cualquier lugar.
🚀 Deploy de Ownfoil con Docker
Usamos el repositorio custom-ownfoil para:
- Iniciar Ownfoil automáticamente con Docker
- Migrar fácilmente datos usando volúmenes
- Evitar dependencias del sistema (sin venv o Python local)
Pasos:
git clone git@github.com:enlacee/custom-ownfoil.git
cd custom-ownfoil
docker-compose up -d
Asegúrate de tener Docker y Docker Compose instalados.
🛍️ HTTPS fácil con Caddy
Paso 1: Abre los puertos 80 (http) y 443 (https)
Caddy usará el puerto 80 para generar certificados SSL automáticamente.
Paso 2: Instala Caddy
Mucho más simple que configurar Nginx, Caddy permite proxy reverso y SSL automático con mínima configuración.
Paso
3: Crea un archivo Caddyfile
en la raíz del proyecto
Configurar el archivo con el siguiente comando:
#:80 {
# root * /usr/share/caddy
# file_server
#}
foil.nintendomagica.com {
reverse_proxy localhost:8465 {
header_up X-Forwarded-Proto {scheme}
}
}
# Para asegurarte de que nadie entre por HTTP (sin cifrar), añade redirección automática:
http://foil.nintendomagica.com {
redir https://foil.nintendomagica.com{uri}
}
Este archivo le dice a Caddy que reciba las peticiones HTTPS en
foil.nintendomagica.com
y las redirija al puerto 8465 local, donde corre Ownfoil.
Paso 4: Corre Caddy como servicio
Verificar que Caddy funciona correctamente
El resultado sera el siguiente:
Ver resumen en video
📌 Conclusión
Este proyecto fue una gran experiencia para aprender sobre servidores DNS dinámicos y configuración avanzada en casa. Aunque SiteGround no permite DNS dinámico, Cloudflare y su API nos brindan una alternativa poderosa y flexible. Gracias al uso de bash, Docker y Caddy:
- Aprendí a automatizar la actualización de IP pública.
- Configuré múltiples servicios usando subdominios en mi Raspberry Pi.
- Descubrí cómo aprovechar Caddy como proxy inverso y generador automático de certificados HTTPS.
Este conocimiento me abre puertas para proyectos futuros, como servidores PHP, Node.js, Ruby, Django y más, todo desde casa, sin pagar servicios externos. ¡Linux y Raspberry Pi al poder!
Referencias:
Soy Aníbal 🐧💻. ¿Tienes una gran Idea/Proyecto?
¿Tienes un proyecto en mente o necesitas resolver un desafío técnico? Estoy aquí para ayudarte a encontrar la mejor solución. 🚀
Hablemos sobre tu proyecto
No hay comentarios:
Publicar un comentario