Saltar al contenido
Volver a proyectos

Servidores VPS

Servidores VPS

Resumen

Caso de estudio de infraestructura: de dos VPS limpios a una base de despliegue para todo el ecosistema. La separación es deliberada: un servidor concentra las herramientas internas y su base de datos; el otro sirve solo la web pública de Growork y el portal, con su propia base de datos e IP, para que las tareas internas pesadas (scraping, IA, automatizaciones) no afecten al rendimiento de cara al usuario final. Incluye endurecimiento del acceso, firewall con UFW, despliegues con Docker y Dokploy, enrutado con Traefik, DNS/proxy con Cloudflare, red privada con Tailscale y protección de herramientas internas con Cloudflare Zero Trust.

2
Servidores: interno y público
2
Bases de datos e IPs separadas
Zero Trust
Servicios internos protegidos

El Problema

Los proyectos del portfolio necesitaban algo más serio que demos aisladas: un entorno propio donde publicar apps, proteger las herramientas internas, gestionar dominios y separar secretos. Además, las herramientas internas (n8n, scraper, web interna, IA) consumen recursos de forma irregular, y no quería que un trabajo pesado interno ralentizara la web pública de Growork. El reto era convertir unos VPS vacíos en una base operativa segura, repetible y con el tráfico público aislado del interno.

La Solución

Monté la infraestructura sobre dos servidores separados: uno aloja las herramientas internas (con su propia base de datos) y otro está dedicado a la web pública de Growork y el portal de clientes (con su propia base de datos e IP), de modo que la carga interna nunca degrada la experiencia pública. Ambos corren Ubuntu con SSH endurecido, usuario no root, UFW, Docker, Dokploy, Traefik, Tailscale y Cloudflare con Zero Trust para los servicios internos.

Infraestructura real

Paneles, dominios y accesos de los VPS

Estas capturas conectan la explicación con configuraciones reales: panel de despliegues, subdominios DNS apuntando a los VPS, acceso privado, variables por proyecto y Zero Trust.

01

Panel de Dokploy con proyectos desplegados

La captura muestra Dokploy como centro de operaciones: varios proyectos, servicios internos y apps publicadas desde el mismo servidor. Es la prueba visual más clara de que el VPS no es teórico, sino un entorno donde conviven despliegues reales.

02

DNS y subdominios en Cloudflare

Aquí se ven los registros DNS de growork.es. Varios subdominios apuntan a la IP del servidor correspondiente y están proxied por Cloudflare, lo que permite enrutar cada herramienta o app desde un dominio propio sin exponer la infraestructura directamente.

03

Cloudflare Zero Trust

Zero Trust entra como capa de identidad para las herramientas internas. La idea es que no baste con conocer la URL: antes de llegar al servicio se exige autenticación, políticas de acceso y verificación.

04

Variables de entorno por proyecto

En Dokploy cada aplicación mantiene sus propias variables sensibles: claves de API, tokens, URLs y credenciales. Esto evita quemar secretos en el código y permite separar la configuración por servicio.

05

Tailscale para red privada

Tailscale permite que los servidores y mis dispositivos estén en una red privada. Lo uso para tener acceso interno sin abrir cada servicio a internet y para separar la administración privada de las webs públicas.

06

Terminal del VPS de Contabo

La terminal demuestra acceso real al servidor: información del sistema, carga, uso de disco, memoria, IP y sesión SSH. Es la parte más básica, pero también la que confirma que se administra una máquina Linux real.

07

Vista general del dominio en Cloudflare

La vista general del dominio ayuda a contextualizar que Cloudflare no solo gestiona DNS: también aporta proxy, analítica, reglas y controles alrededor del tráfico web.

Herramientas

Qué utilicé y por qué

El foco no era montar una infraestructura enterprise, sino entender y aplicar las piezas esenciales para publicar proyectos propios con una seguridad razonable, un mantenimiento sencillo y el tráfico público aislado del interno.

Dos VPS de Contabo

Dos servidores propios: uno para las herramientas internas y otro dedicado a la web pública. Separar las máquinas evita que un trabajo interno pesado afecte al rendimiento que ve el usuario.

SSH

Acceso remoto para administrar los servidores desde la terminal. Lo uso como vía principal de gestión porque es estándar, seguro con claves y mucho más controlable que un panel gráfico.

UFW

Firewall simple sobre iptables para permitir solo los puertos necesarios (SSH, HTTP y HTTPS) y reducir la superficie expuesta de cada servidor.

Dokploy

Panel de despliegue sobre Docker para publicar y gestionar proyectos, contenedores, dominios, logs y variables de entorno sin escribir toda la operativa a mano cada vez.

Traefik

Reverse proxy que enruta cada dominio hacia su contenedor, gestiona HTTPS y evita tener que configurar Nginx a mano para cada servicio nuevo.

Cloudflare y Zero Trust

DNS, proxy, protección perimetral y control de acceso para las herramientas internas. Zero Trust permite exigir identidad antes de llegar a los servicios sensibles.

Funcionalidades

Qué incluye el producto

El proyecto demuestra que sé gestionar servidores a nivel práctico: acceso, red, despliegues, dominios, certificados, variables, separación de cargas y protección de servicios internos.

01

Separación de público e interno

Un servidor sirve solo la web pública de Growork y el portal; el otro aloja las herramientas internas y su base de datos. Así el tráfico de clientes no compite por recursos con el trabajo interno.

02

Acceso SSH con usuario no root

Configuré los servidores para trabajar con un usuario propio y evitar usar root como cuenta diaria, dejando los privilegios elevados solo para lo que realmente lo necesita.

03

Firewall con UFW

Definí reglas de firewall para permitir un conjunto mínimo de puertos: administración por SSH y tráfico web por HTTP/HTTPS, cerrando el resto por defecto.

04

Dokploy como capa de despliegue

Instalé Dokploy en cada servidor para gestionar proyectos Docker, revisar logs, conectar repositorios, asignar dominios y mantener las variables de entorno por aplicación.

05

Traefik para rutas y certificados

Uso Traefik como proxy inverso para mandar cada dominio o subdominio al contenedor correcto y simplificar la gestión de HTTPS.

06

Tailscale para acceso privado

Tailscale crea una red privada entre mis dispositivos y los servidores, útil para acceder a servicios internos o a la administración sin abrirlo todo a internet.

07

Variables por proyecto

Cada proyecto en Dokploy mantiene sus propias variables sensibles: claves de API, URLs, tokens, credenciales de base de datos y configuración de entorno.

08

Cloudflare Zero Trust

Las herramientas internas quedan detrás de políticas de acceso, login y verificación antes de que el usuario llegue al servicio real.

Proceso

Cómo lo construí

El proceso fue incremental: primero asegurar el acceso mínimo a cada servidor, después abrir solo lo necesario y, por último, montar la capa de despliegue, los dominios y la separación de cargas.

01

Contraté los VPS

Elegí dos VPS para tener un entorno real donde desplegar proyectos, aprender administración de servidor y, sobre todo, separar la web pública de las herramientas internas.

02

Preparé el acceso por SSH

Entré a los servidores por terminal, usé un usuario no root para el trabajo diario y dejé el acceso administrativo más controlado.

03

Apliqué reglas de UFW

Activé el firewall y limité la exposición a los puertos necesarios. La prioridad fue no dejar servicios abiertos por accidente.

04

Instalé Docker y Dokploy

Con Docker como base, Dokploy se convirtió en el panel para desplegar aplicaciones, conectar dominios, revisar logs y gestionar variables en cada servidor.

05

Configuré los dominios con Cloudflare

Usé Cloudflare para DNS, proxy y gestión de subdominios. Cada app o herramienta vive en su propio subdominio, apuntando al servidor que le corresponde.

06

Protegí los servicios internos

Para las herramientas privadas combiné Tailscale y Cloudflare Zero Trust según el caso: red privada para la administración y políticas de acceso para los servicios web.

Dudas y decisiones

Problemas que tuve que resolver

Las decisiones importantes estuvieron en separar cargas sin sobrecomplicar la infraestructura, y en no dejarla abierta ni difícil de mantener.

Aislar el tráfico público del interno

Un trabajo interno pesado (scraping, IA, un import grande) no debería ralentizar la web pública. Separar en dos servidores con sus propias bases de datos resuelve ese acoplamiento de raíz.

No trabajar como root por costumbre

Root es cómodo, pero también peligroso. Separar el usuario diario de los privilegios administrativos reduce los errores graves y mejora el control.

Abrir solo lo necesario

Un VPS en internet recibe intentos de acceso constantemente. UFW ayuda a mantener una política simple: permitir lo imprescindible y denegar el resto.

Elegir Dokploy en vez de hacerlo todo a mano

Podría configurar cada contenedor y proxy manualmente, pero Dokploy acelera los despliegues y hace más visible el estado de cada proyecto.

Separar público y privado

No todo lo desplegado debe estar abierto. Tailscale y Zero Trust permiten distinguir entre webs públicas, herramientas internas y administración.

Gestionar secretos sin quemarlos en el código

Las variables de entorno por proyecto evitan subir credenciales al repositorio y facilitan mover la configuración entre entornos.

Arquitectura

Cómo está construido

La arquitectura combina dos VPS como base, Docker/Dokploy para ejecutar proyectos, Traefik para enrutar el tráfico y Cloudflare/Tailscale para proteger los accesos. La separación en dos nodos aísla la carga pública de la interna.

1

El servidor interno aloja las herramientas internas (n8n, scraper, web interna, finanzas, CRM, base de datos, Dokploy, Project Flow) con su propia base de datos.

2

El servidor público está dedicado a la web de Growork y al portal de clientes, con su propia base de datos e IP, para que el tráfico de clientes no compita con el trabajo interno.

3

SSH es la vía de administración remota; el uso diario se hace con un usuario no root y privilegios elevados solo cuando hace falta.

4

UFW limita la exposición de cada servidor a puertos concretos, normalmente SSH, HTTP y HTTPS.

5

Dokploy orquesta los proyectos Docker, los dominios, los logs, las variables de entorno y los despliegues desde una interfaz operativa.

6

Traefik recibe el tráfico web y lo enruta al contenedor correcto según el dominio o subdominio, gestionando también HTTPS.

7

Cloudflare gestiona DNS, proxy y protección perimetral de los dominios; Zero Trust protege las herramientas internas con políticas de identidad.

8

Tailscale crea una red privada para acceder a los recursos que no necesitan estar expuestos públicamente.

Stack Tecnológico

Tecnologías utilizadas

Contabo VPSUbuntuSSHUFWDockerDokployTraefikTailscaleCloudflareCloudflare Zero TrustVariables de entorno

¿Tienes un proyecto similar?

Puedo ayudarte a diseñar, construir y desplegar productos digitales claros, seguros y preparados para operar en producción.