Cómo crear un Servidor Web en casa

Vamos a ver cómo crear un servidor Web en tu casa (un servidor Web publico sin IP fija, o como se conoce comúnmente, un servidor web casero) para alojar una pagina web en servidor propio.

 

 
cómo crear un servidor web en casa
 

Nos valdremos de un servicio gratuito para DNS dinámico, como el que nos facilita NO IP.
 


Con NO-IP y sus servicios de DNS dinámico y dominio gratuito, podremos montar un servidor Web en casa.

 

 

1. Explicación del funcionamiento de un Servidor Web publico casero | ¿Y por qué un Servidor Web casero con NOIP?

 

  1. Primero registramos un nombre de dominio gratis en NOIP, y configuraremos el Hostname.

Servidor Web casero con NO IP
 


NO IP nos ayuda en el caso de no tener una IP estática (algo bastante común a no ser que lo tengamos contratado); no-ip.com nos proporciona servicios de DNS dinámico.
 


La IP fija es algo necesario para asociar una IP a un nombre de dominio… por tanto, si tenemos una IP pública dinámica (va cambiando), y no usamos NOIP, cada vez que nuestro proveedor de servicios de Internet renueve la IP pública a través de la cual navegamos por Internet, el servidor web creado sobre el nombre de dominio que hayamos elegido, no funcionará (puesto que nuestra IP de casa, y por tanto la IP del servidor Web casero, habrá cambiado).
 

 
2. El servidor Web lo podremos montar con Xampp en el caso de utilizar Windows. Xampp nos proporciona servicios como Apache y Bases de Datos MySQL, aunque actualmente soporta MariaDB (MariaDB es una continuación de MySQL, ofrece más rendimiento y más funcionalidades). 

–> Si usamos Linux, podremos crear un servidor web Apache en Linux.

 

 
3. Después habremos de revisar un par de configuraciones en el router para poder recibir y enviar tráfico al puerto por el que esté funcionando el servidor web (Redireccionar puertos y crear una DMZ si fuera necesario).
 

 
4. Y crear reglas en el firewall del equipo para que permita el tráfico en los puertos que utilizará el Servidor Web.

 

 

En este artículo:

 

 

 

 

 

 

1. Tras la pequeña explicación anterior, vamos a ponernos manos a la obra con nuestro Servidor Web local publico sin IP fija (con NOIP) :

 

1.1 Primero nos registramos y validamos nuestra cuenta gratuita en No iP:

 
NO IP dynamic ip DNS
 

Cuando ya tengamos una cuenta gratuita en NO IP, entramos y comenzamos con los siguientes pasos:

 

 

  • 1.2. Creamos dominio gratuito en NOIP;

 

por ejemplo: midominio.sytes.net (podemos elegir entre varios sufijos diferentes)

(se trata de un dominio de ejemplo. También disponemos de varias terminaciones de dominio diferentes. Cada uno que elija la que más le guste)
 
noip nuevo host dominio gratis

 

 

  • 1.3. configuramos el Host en No IP:

     

    • El Hostname será midominio.sytes.net
    • Host Type: Port 80 Redirect ; ya que deseamos redireccionar las peticiones que se realicen al puerto 80, para que vayan al 81.
      • Si no deseamos redireccionar las peticiones, elegiríamos la opción DNS Host (Registro A).

 

noip configurar host redireccion a puerto
 

 

  • 1.4. Redireccionar dominio a nuestra IP:

     

    • Host Type: Port 80 Redirect ; NOIP no permite puerto 80, así que ponemos el 81 (tendremos que cambiar el puerto de funcionamiento de XAMPP también). Lo veremos más adelante.

 

 

  • 1.5 Instalamos el programa DUC NOIP

 
Podemos descargar el programa DUC-NOIP en este enlace: http://www.noip.com/download?page=win
 
instalar DUC NOIP

 

 

1.5.1 ¿Qué es DUC NOIP?

 
DUC NOIP es un cliente de actualización de DNS dinámico, que comprueba continuamente los cambios de dirección IP y actualiza automáticamente el DNS de un nombre de dominio en No-IP cada vez que cambia.

 

Abrimos el programa, hacemos login con nuestra cuenta de NOIP,  y vamos a la sección Edit Groups/Hosts, y después Manage Existing Hosts.

 

Entonces veremos que aparece el nombre de dominio que hemos creado en NO-IP:

edit hosts duc noip
 

 

Vemos la sección Tools de DUC NOIP:

Podemos ver que hay opciones interesantes como la posibilidad de refrescar el DNS (Flush Local DNS) y algunas otras opciones interesantes como Open Port Check Tool, o los Logs.

 

tools duc noip

 

En este punto ya tenemos un nombre de dominio asociado a nuestra IP, que gracias al programa DUC NOIP, se mantendrá estable aunque cambie nuestra IP pública.

Ahora vamos a instalar un servidor web en nuestro equipo gracias a Xampp. Sigamos:

 

 

2. INSTALAR SERVIDOR WEB EN LOCAL (Servidor local Xampp publico)

 
Usaremos Xampp, un conocido, sencillo y útil programa que nos permitirá habilitar rápidamente un servidor Web en nuestro equipo.
 

  • 2.1 Activamos los servicios necesarios en Xampp.

    • Hemos de activar el servicio Apache para levantar los servicios de Servidor Web.
    • Si usamos una base de datos para el sitio web que estamos construyendo, activaremos también el servicio MySQL.

activar servicios xampp servidor web publico
 

 

2.2 Pequeñas modificaciones en Xampp si nuestro Web Server va a escuchar por un puerto diferente al 80:

 
Modificamos el puerto por el que actúa el servidor Web Apache en Xampp, que por defecto es el 80, porque NOIP no nos deja redireccionar a puerto 80, así que para comprobar que funciona el host trabajaremos con otro puerto, por ejemplo el 81.
 

Entramos en Xampp, en la Configuration of Control Panel, y después en Service and Port Settings.

 

xampp servidor publico service and port settings
 

 

  • 2.2.1 Retocamos la configuración Xampp. Donde pone Apache Main Port, cambiamos el 80 por el puerto 81.

     

    • El puerto 443, perteneciente a la navegación segura, no lo cambiaremos a no ser que nuestro servidor web utilice un certificado SSL para navegar por https.

 
modificar puerto xampp servidor web publico
 

 

  • 2.2.2 Modificamos también el archivo xampp/apache/conf/httpd.conf

     

Modificaremos entonces también el archivo xampp/apache/conf/httpd.conf, perteneciente a la configuración de Apache dentro de Xampp; y en lugar de escuchar en el puerto 80, cambiar a 81:
 

Listen 81

 
(El archivo httpd.conf ha sido sustituido en posteriores versiones de Apache en Linux por otros archivos, como el archivo /etc/apache2/apache2.conf, el archivo /etc/apache2/sites-enabled/default.conf o el archivo /etc/apache2/ports.conf )
 
servidor publico xampp https.conf
 

 

  • 2.3 Modificamos también el DocumentRoot y otras líneas y directivas

     

En este punto vamos a modificar también el Document Root, para que el Web Server funcione sirviendo los archivos de un subdirectorio en lugar de los archivos de /htdocs (en cuyo caso cargaría la página de inicio de Xampp).
 
El DocumentRoot es el directorio desde el cual el servidor Web casero servirá los documentos y archivos.
 
server publico local | modificar Document Root
 
Una forma más elegante de conseguir que Xampp utilice un DocumentRoot concreto sería con Virtualhosts.
 

 

*** Puedes revisar los artículos de El Taller del Bit sobre VirtualHosts

 

  • Y modificamos la linea 219, y ponemos el puerto adecuado (recordemos que en este ejercicio estamos usando el 81 en lugar del 80):
ServerName localhost:81

 

  • Para evitar el mensaje de error 403 forbidden, también comentamos la linea 269:
Require all granted

 

  • También comentaremos las lineas: 226 a 229
<Directory>
AllowOverride none
Require all denied
</Directory>

 

 
servidor web local servername localhost httpd.conf
 

Podemos ver que en este caso estamos utilizando el puerto 81

 

 

  • 2.4 Permitir peticiones externas y evitar error 403 Forbidden: Modificamos también el archivo apache/conf/extra/httpd-xampp.conf

En el archivo apache/conf/extra/httpd-xampp.conf, comentamos:

Require local

 
Pues sino no atenderá peticiones externas (peticiones originadas desde fuera de la red local) y arrojará el mensaje de

403 Acceso prohibido!
 
servidor web httpd xampp
 

 

2.5 Detener y reiniciar servicio Web Apache

 

Después de realizar los cambios mencionados, detenemos el servicio Apache y lo reiniciamos.

Si quieres revisar algunos aspectos sobre seguridad en Xampp, revisa este enlace.

 

 

3.1 CONFIGURAR DMZ en ROUTER en la IP del Web Server Local

 
Para que nuestro Server pueda salir al exterior y a la vez recibir peticiones desde el exterior, hemos de crear ciertas reglas en nuestro router que permitan ese tráfico entrante y saliente.
 
Lo más fácil (aunque no excesivamente seguro) es configurar una DMZ en nuestro router, hacia la IP del equipo que hará de Servidor Web en nuestra red local.
 

  • Crear DMZ en nuestro router, para el equipo local donde se ejecuta el servidor que será público:

 
servidor web publico dmz router

 

 

En el caso de estar en una máquina virtual, la IP ha de ser la del server en la máquina virtual, no la de la máquina anfitrión.
 

 

3.2 REDIRECCIÓN DE PUERTOS

 
Ya que nuestro servidor Web va a actuar sobre el puerto 81 en lugar del 80, hemos de redireccionar al puerto 81 todas las peticiones que se realicen al puerto 80.

  • Hacemos redirección de puertos en el Router hacia la máquina Server, y añadimos DMZ para la máquina Server para que firewall de router no actúe (lo hemos hecho en el paso anterior).

 
servidor web publico redireccion puertos router
 
Dependiendo del router, tendremos más o menos opciones. Aquí vemos otro router con opciones más limitadas para hacer redirección de puertos:
 
servidor web redireccionar puertos router

 

 

 

4. REGLAS DE FIREWALL

 
Suponiendo que todo lo anterior funciona correctamente, ahora solo nos queda configurar las excepciones y reglas del Firewall en el equipo donde se encuentra instalado el Servidor Web:
 

  • Creamos regla excepción en Firewall, permitiendo las peticiones externas
    • Creamos Regla de entrada y una regla de salida

 

4.1 Regla de entrada (permitiendo la entrada de tráfico al puerto 81)

 
servidor web publico regla entrada firewall

 

servidor web publico | permitir cruce seguro del perimetro
 

 

4.2 Regla de salida (Abrir los puertos del router, permitiendo la salida de tráfico desde el puerto 81)

 
servidor web publico regla salida firewall

 

 

5. Comprobación de funcionamiento de nuestro Servidor Web propio

 

Prueba desde red externa de que el servidor publico local está funcionando

(podemos probar a navegar desde el móvil por ejemplo, pero sin utilizar la red wifi, sino la red de datos móviles, que será otra red diferente a la red wifi claro.. ):

 
test servidor web en casa

 

 
Y de esta forma, podemos ver que nuestro servidor web en casa funciona ! Ahora nuestro servidor web publico creado con Xampp, es accesible a través de un nombre de dominio, incluso aunque cambiemos de IP pública para navegar (cuando reiniciemos el router o nuestro ISP la cambie), gracias a NOIP   🙂
 

Categorías Web