🚧Servidor hosting público

Para ubuntu server 22.04

Vamos a usar LEMP stack (Linux, nginx, MySQL, PHP)

cloudfare con tunel VPN

Webmin + Virtualmin como gestores

Dominio

El dominio es básico para comenzar con el servidor, es nuestro paso previo a trabajar de cara al "público" así que primero de todo regístrate con el plan gratuito a Cloudfare.

Para comprar dominio, te recomiendo el propio registro de cloudfare pero tienes mas en godaddy (donde son a veces más baratos) o en cdmon (más nacional). En cualquier caso, si ya tuvieras un dominio podrías transferirlo manualmente.

Como ves, yo ya tengo uno activo pero puedo transferirlo o registrar más si quisiera

Configuración DNS

Vamos con la parte interesante, la del DNS público.

Anteriormente hemos trabajado con nuestro propio DNS de BIND9 pero ahora con Cloudfare lo interesante es que este DNS es público por lo que podemos crear los registros que nos interese que se muestren de nuestro dominio.

Para empezar debemos acceder a DNS>Registros

Lo que ves ahí es el listado de registros (yo ya tengo uno del tunel cloudfare que está más adelante en la explicación.

En "servidores de nombres" aparecen los nombres de nuestros DNS públicos que deberemos añadir a nuestro servidor para que funcionen los registros, vamos a crear algunos:

Registro
Nombre
Dirección

A

@ (raiz)

IP local

MX

mail

example.org

Dejemoslo así por el momento...

Instalar webmin

Para instalar Webmin debemos seguir la documentación oficial que podemos encontrar aquí. Si has instalado mas servicios o aplicaciones en Linux (como puede ser un wordpress) verás que no tiene mucha complicación.

  1. Empieza por descargar el script de bash (si no tienes la utilidad curl instálala con sudo apt install):

curl -o webmin-setup-repos.sh https://raw.githubusercontent.com/webmin/webmin/master/webmin-setup-repos.sh
  1. Ejecuta el script descargado que añadirá webmin al repositorio de aplicaciones oficial:

sudo sh webmin-setup-repos.sh
#o bien:
sudo ./webmin-setup-repos.sh
  1. Instala webmin con apt:

apt-get install webmin --install-recommends
  1. Para acceder a Webmin es tan sencillo como ir al navegador y escribir https://<Your-Server-IP>:10000 . Revisa que tu firewall te permita conexiones a través del puerto 10000.

Por ahora verás que no tiene certificado SSL por lo que no tiene mucho sentido usar https pero funcionará igual. Para entrar usa el usuario y contraseña del propio servidor.

En caso de que quisieras parar el servicio es tan sencillo como systemctl stop webmin

Antes de instalar Virtualmin, debemos pasar a la parte de registro de dominio en nuestro servidor, para ello tenemos dos posibles metodos:

  • Con un DDNS que nos permita registrar la IP pública activa para que se vaya reenviando según cambie

  • Con un tunel VPN que conecte directamente con el dominio público

Enseñaré ambas:

Crear DDNS (dinámico) con docker

(Esto esta en construcción, tengo que mirar como hacerlo sin depender de docker)

Debemos crear la API key necesaria de cloudfare (perfil>API tokens), revisate el enlace de docker hub que te da mas información.

Debemos dar permisos, lanzar el docker que actualizará los registros, siempre que este activo el docker, funcionara el DDNS.

Túneles VPN con cloudfare

El método para conseguir un tunel VPN es a través de la aplicación zerotrust dentro de nuestra interfaz de Cloudfare que encontrarás en la columna izquierda.

Al entrar te pedirá crear un equipo, este nombre debe ser único, a continuación te harán elegir un plan, elige el gratuito que nos ofrece:

  • limite de 50 asientos

  • Controles de Zero Trust

  • Hasta 3 localizaciones de redes (para trabajos con DNS de oficina)

  • Reglas de filtrado de capa 7 (HTTP)

  • Soporte de Roaming para usuarios vía WARP

  • Hasta 24h de logs

Con esto veremos la siguiente pantalla:

Interfaz de trabajo de Zero trust

Desde aquí accedemos a Networks>Tunnels>Add tunnel

Seleccionamos "cloudfared" (tengo que investigar WARP por que parece una buena solución). Sigue los pasos ahora:

  1. Ponle un nombre para identificarlo (Por ejemplo galaxy-edge)

  2. Elegimos la plataforma de Debian (Ubuntu cof cof) de 64 bits

Interfaz de tunel

Ahí verás las instrucciones de lo que tienes que hacer, simplemente copia el comando de la izquierda y pégalo en tu terminal de Linux.

Recuerda que puedes comprobar tu versión de SO usando el comando uname:

uname -m
  • Si el resultado es x86_64, entonces tienes una versión de 64 bits.

  • Si el resultado es i386 o i686, entonces tienes una versión de 32 bits.

  1. Una vez ejecutado el comando correctamente, abajo deberia aparecer la nueva conexión creada con el token:

Conexión correcta!
  1. Continua con el proceso de autenticación de dominio:

Campos obligatorios

Rellena el formulario con los siguiente:

  • subdominio: www por ejemplo

  • dominio: el registrado previamente

  • path: por si quieres añadirle el acceso a un recurso o carpeta concreta

  • type: el tipo de túnel, en nuestro caso http pero luego crearemos un ssh también

  • URL: la IP local del servidor.

Instalar Virtualmin

Para instalar virtualmin tambien debemos recurrir a la documentación oficial, como siempre (RTFM!).

Recuerda que uno de los requisitos de uso de Virtualmin es tener un FQDN de nuestro servidor y que, a ser posible, no sea el mismo que el de la web (por ejemplo ns1.example.org y el de la web www.example.org) tal y como dice la documentación.

Sigue los pasos:

  1. Obtenemos el script de bash que es la forma más sencilla y fácil de hacerlo, para ello descargatelo con:

curl -fsSL https://software.virtualmin.com/gpl/scripts/virtualmin-install.sh -o virtualmin-install.sh
  1. Una vez descargado deberemos instalarlo ejecutando el script, en nuestro caso trabajaremos con la pila LEMP así que le especificaremos ese stack:

sh virtualmin-install.sh --bundle LEMP
  1. Nos pedirá una serie de requisitos

  • Espacio disponible de 2GB

  • Un FQDN (nuestro dominio www en este caso)

Aquí se está instalando el sistema

Y si todo ha ido bien ahora deberia mostrar el siguiente mensaje:

[SUCCESS] Installation Complete!
[SUCCESS] If there were no errors above, Virtualmin should be ready
[SUCCESS] to configure at https://www.example.org:10000 (or https://192.168.1.50:10000).

Y al acceder al enlace:

Fijate que ya funciona con https directamente

Ahora solo nos falta crear el host.

Creando el host web

🚧 Configuración de certificado SSL con cloudfare

🚧 Configuración de email con virtualmin


Referencias:

Última actualización