Aloja Map Blueprint en un servidor en la nube

Pon tu instancia en un servidor siempre encendido, una computadora que funciona en un centro de datos las 24 horas, para que compañeros remotos puedan alcanzarla desde cualquier lugar, con tu propia dirección web y HTTPS gratuito (el candado que cifra la conexión). Esta guía usa el nivel siempre gratuito de Oracle Cloud, que puede ejecutar Map Blueprint sin coste mensual, pero los mismos pasos funcionan en cualquier servidor en la nube con Ubuntu.

Con lo que acabarás: un pequeño servidor Linux ejecutando Map Blueprint a todas horas, accesible en algo como https://maps.yourdomain.com, protegido por la contraseña de tu equipo y que se reinicia solo tras los reinicios del sistema. Calcula unos 20–30 minutos. Donde veas YOUR_… abajo, reemplázalo por tu propio valor.

¿Prefieres simplemente ejecutarlo en tu propio portátil? Consulta la guía de alojamiento local.

Unas cuantas palabras que encontrarás: un servidor es una computadora que funciona todo el tiempo para que otros puedan conectarse; SSH es una forma segura de escribir comandos en esa computadora remota desde la tuya; un dominio es tu dirección web (como yourdomain.com); DNS es la guía de direcciones de internet que apunta un dominio a un servidor; HTTPS es la versión cifrada y con candado de una dirección web; un proxy inverso y un túnel son dos formas de poner HTTPS por delante de la app. No te preocupes, cada paso de abajo te dice exactamente qué hacer.

Paso 1, Crea un servidor gratuito

  1. Regístrate en Oracle Cloud Free Tier e inicia sesión en la consola (el sitio web de Oracle para gestionar tus servidores).
  2. Ve a Compute → Instances → Create instance. Una "instancia" es simplemente la palabra de Oracle para un servidor.
  3. Elige una forma elegible para el nivel siempre gratuito (el tamaño del servidor, "shape" es la palabra de Oracle para ello). Cualquiera sirve: VM.Standard.E2.1.Micro o una forma Arm Ampere (que tiene más memoria). Mantén la imagen Ubuntu por defecto, Ubuntu es la versión de Linux que usa esta guía.
  4. En Add SSH keys, elige Generate a key pair for me y descarga la clave privada, este pequeño archivo es lo que demuestra que eres tú al iniciar sesión, así que guárdalo en un lugar seguro. (¿Ya tienes tu propia clave? Pega su mitad pública en su lugar.)
  5. Haz clic en Create. Cuando el servidor esté en marcha, copia su dirección IP pública (el número del servidor en internet), esta guía la llama YOUR_SERVER_IP.

Paso 2, Abre el firewall

Un firewall bloquea conexiones de red inesperadas. Oracle bloquea el tráfico web entrante por defecto, así que necesitas permitirlo en los dos puertos web estándar, 80 (web normal) y 443 (web segura):

  1. Abre tu instancia → haz clic en su Virtual Cloud Network / subnetSecurity Lists → la lista por defecto. (Este es el firewall de Oracle.)
  2. Añade Ingress Rules ("ingress" solo significa entrante) que permitan TCP desde 0.0.0.0/0 (es decir, "desde cualquier lugar") hacia los puertos 80 y 443.
Ubuntu en Oracle también tiene su propio firewall local. Después de conectarte en el Paso 3, permite los mismos dos puertos pegando estas tres líneas (cada línea es un comando; la tercera guarda la regla para que sobreviva a los reinicios):
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 80 -j ACCEPT
sudo iptables -I INPUT 6 -m state --state NEW -p tcp --dport 443 -j ACCEPT
sudo netfilter-persistent save
Si usas la opción de Cloudflare Tunnel del Paso 5, puedes saltarte por completo la apertura de los puertos 80/443.

Paso 3, Conéctate al servidor

Ahora iniciarás sesión en el servidor y escribirás comandos en él desde tu propia computadora, usando SSH. Abre una terminal (en Windows, usa PowerShell, ya incluye ssh) y ejecuta esto, apuntando -i al archivo de clave privada que descargaste:

ssh -i /path/to/YOUR_PRIVATE_KEY ubuntu@YOUR_SERVER_IP

En Mac o Linux, si recibes un error de "permissions are too open" sobre la clave, ejecuta primero chmod 600 /path/to/YOUR_PRIVATE_KEY, eso restringe el archivo para que solo tú puedas leerlo, lo cual SSH requiere.

Una vez conectado (tu línea de comandos muestra ahora el servidor), instala las últimas actualizaciones del sistema:

sudo apt update && sudo apt upgrade -y

sudo significa "ejecuta esto como administrador"; apt es el instalador de apps integrado de Ubuntu.

Paso 4, Sube e inicia Map Blueprint

No hay nada que instalar en el servidor, sin Docker, sin Node, sin .env. Es un único programa autónomo. Desde tu propia computadora (una nueva ventana de terminal, no la sesión SSH), ejecuta esto desde la carpeta donde descomprimiste la descarga para copiar el programa de Linux al servidor. scp es "copia segura", envía un archivo a través de la misma conexión SSH segura:

scp -i /path/to/YOUR_PRIVATE_KEY ./map-blueprint-linux ubuntu@YOUR_SERVER_IP:~/

De vuelta en la sesión SSH, haz el programa ejecutable e inícialo. HOST=0.0.0.0 le indica que acepte conexiones desde fuera, para que el paso de HTTPS siguiente pueda alcanzarlo:

chmod +x ~/map-blueprint-linux
HOST=0.0.0.0 ~/map-blueprint-linux

Ahora está escuchando en el puerto 8080. Definirás la contraseña de tu equipo desde el navegador una vez que HTTPS esté en su lugar (siguiente paso). Por ahora, pulsa Ctrl-C para detenerlo, el Paso 6 lo convierte en un servicio que funciona las 24 horas.

config.json y tus mapas en data/ se crean justo al lado del programa en tu carpeta de inicio (~/). Todos los ajustes viven en la página de Ajustes dentro de la app, no hay archivos que editar.

Paso 5, Añade tu dominio y HTTPS gratuito

La app habla HTTP normal y está diseñada para situarse detrás de algo que añada HTTPS (el candado cifrado). Elige uno de estos dos enfoques, la Opción A es la más fácil de asegurar.

Opción A, Cloudflare Tunnel (sin puertos abiertos, la más fácil de asegurar)

Un túnel conecta tu servidor hacia fuera con Cloudflare, de modo que los visitantes alcanzan la app a través de Cloudflare sin que haya ningún puerto abierto en tu servidor.

  1. Añade tu dominio a una cuenta gratuita de Cloudflare.
  2. En el servidor, instala cloudflared (la herramienta de túnel de Cloudflare) e inicia sesión:
    curl -fsSL https://pkg.cloudflare.com/install.sh | sudo bash
    sudo apt install -y cloudflared
    cloudflared tunnel login
  3. Crea un túnel y apunta la dirección web que elijas al puerto local de la app:
    cloudflared tunnel create mapblueprint
    cloudflared tunnel route dns mapblueprint maps.YOURDOMAIN.com
  4. Indica al túnel que envíe el tráfico a http://localhost:8080 en su configuración, luego instálalo como servicio en segundo plano para que siempre funcione:
    sudo cloudflared service install

Cloudflare crea y renueva el certificado HTTPS por ti automáticamente, y nada en tu servidor queda expuesto directamente, puedes dejar los puertos 80/443 cerrados.

Opción B, Proxy inverso Caddy (certificado automático)

Caddy es un diminuto servidor web que se sitúa por delante de la app, añade HTTPS y reenvía los visitantes hacia ella, eso es lo que hace un proxy inverso.

  1. Apunta un registro A de DNS para maps.YOURDOMAIN.com a YOUR_SERVER_IP. (Un "registro A" es la entrada de DNS que asocia un nombre a la IP de un servidor, configúralo en tu registrador de dominios o proveedor de DNS.)
  2. Instala Caddy en el servidor.
  3. Pon esto en el archivo /etc/caddy/Caddyfile (le indica a Caddy: sirve esta dirección y reenvía los visitantes a la app en el puerto 8080):
    maps.YOURDOMAIN.com {
        reverse_proxy localhost:8080
    }
  4. Recarga Caddy para que recoja el cambio:
    sudo systemctl reload caddy

Caddy obtiene y renueva un certificado gratuito de Let's Encrypt por ti automáticamente. Esta opción necesita los puertos 80 y 443 abiertos (Paso 2).

Map Blueprint marca automáticamente su cookie de inicio de sesión como Secure en cuanto las solicitudes llegan por HTTPS (lee la cabecera X-Forwarded-Proto que ambas opciones de arriba establecen), así que los inicios de sesión quedan protegidos sin configuración adicional.

Visita https://maps.YOURDOMAIN.com, deberías ver la página de inicio de sesión. Inicia sesión y comparte ese enlace con tu equipo.


Opcional, protégelo con Cloudflare Zero Trust

¿Quieres un segundo candado, más fuerte? El "Access" de Cloudflare Zero Trust pone una pantalla de inicio de sesión por delante de tu app, de modo que los desconocidos ni siquiera llegan a Map Blueprint, Cloudflare comprueba primero quién eres. Funciona mejor con la Opción A (el Cloudflare Tunnel) de arriba, y te permite conceder acceso persona por persona mediante correo electrónico en lugar de compartir una sola contraseña. Es gratuito para equipos pequeños.

  1. En el panel de Cloudflare, abre Zero Trust (configura el plan gratuito si es tu primera vez).
  2. Ve a Access → Applications → Add an application → Self-hosted.
  3. Pon el dominio de la aplicación en la misma dirección web que sirve el túnel (maps.YOURDOMAIN.com).
  4. Añade una política de Access que permita solo las direcciones de correo de tus compañeros (o un dominio de correo entero como @yourstudio.com), luego guarda.
  5. Ahora, al visitar el sitio, se muestra un inicio de sesión de Cloudflare que envía por correo un código PIN de un solo uso (o usa el inicio de sesión de Google / GitHub). Solo las personas aprobadas llegan a la app.

Este es el mismo tipo de control de identidad que los creadores de Map Blueprint usan en su propio mapa interno. Aunque alguien averigüe tu URL, no puede cargar la app sin pasar la comprobación de identidad, ideal para un mapa de estudio privado.


Paso 6, Mantenlo en marcha tras los reinicios

Por último, convierte la app en un servicio para que se inicie al arrancar y se reinicie solo si alguna vez se detiene. (Un "servicio" es un programa que Linux cuida en segundo plano.) Guarda el texto de abajo como el archivo /etc/systemd/system/map-blueprint.service:

[Unit]
Description=Map Blueprint
After=network.target

[Service]
WorkingDirectory=/home/ubuntu
Environment=HOST=0.0.0.0
ExecStart=/home/ubuntu/map-blueprint-linux
Restart=always
User=ubuntu

[Install]
WantedBy=multi-user.target

Luego actívalo, recarga la lista de servicios, habilítalo e inícialo, y comprueba que está en marcha:

sudo systemctl daemon-reload
sudo systemctl enable --now map-blueprint.service
sudo systemctl status map-blueprint.service

WorkingDirectory=/home/ubuntu mantiene config.json y tus mapas en data/ en la carpeta de inicio, junto al programa. Ahora abre https://maps.YOURDOMAIN.com, completa la pantalla de Configuración inicial de la primera ejecución y define la contraseña de tu equipo de inmediato. (¿Prefieres definirla por adelantado? Añade Environment=APP_PASSWORD=YOUR_PASSWORD al archivo del servicio.)


Lista de verificación de seguridad

Actualizar a una versión nueva

Cuando recibas un programa actualizado, detén el servicio, reemplaza el archivo del programa e inícialo de nuevo, tu config.json y tus mapas en data/ se dejan intactos. Sube el nuevo map-blueprint-linux desde tu computadora (con scp, como en el Paso 4), luego en el servidor ejecuta:

sudo systemctl stop map-blueprint.service
chmod +x ~/map-blueprint-linux
sudo systemctl start map-blueprint.service