Guía de despliegue

Desplegar una aplicación Go (Gin) en un VPS

Desplegar en un VPS Cloud →

Tutorial

Desplegar una aplicación Go (Gin) en un VPS

Desarrollo4 min de lectura6 pasos

Go compila en un único binario estático sin dependencias: es el lenguaje ideal para el self-hosting. Una API Gin cabe en unos pocos megabytes de RAM y arranca al instante. Veamos cómo ponerla en producción en un VPS, del binario al certificado SSL.

Contenido· Por qué autoalojar una API Go en un VPS1/5
  1. 01Por qué autoalojar una API Go en un VPS
  2. 02Beneficios concretos
  3. 03Requisitos de hardware y software
  4. 04Despliegue paso a paso
  5. 05Desplegar Go (Gin) en un clic desde el Marketplace ServOrbit

Por qué autoalojar una API Go en un VPS

A diferencia de Java o Node, una aplicación Go (con el framework Gin) se compila en un único binario estático que no necesita ni intérprete, ni runtime, ni biblioteca compartida. Puede literalmente dejar el binario en un VPS y ejecutarlo. Esta ligereza lo cambia todo para el autoalojamiento: una API Gin funciona con 15 a 30 MB de RAM y arranca en unos milisegundos; el rendimiento que sostiene depende de lo que haga su handler, y se mide sobre su propia carga. En un VPS, aprovecha al máximo esta eficiencia: un servidor de gama de entrada basta para servir una carga que los lenguajes interpretados exigirían en una máquina mucho más grande. También evita la complejidad de las imágenes Docker voluminosas: una imagen scratch de 10 MB es suficiente.

Beneficios concretos

  • Binario estático único: ningún runtime que instalar, despliegue mediante una simple copia de archivo
  • Huella de memoria mínima (15-30 MB) que permite saturar de peticiones un VPS pequeño
  • Imagen Docker scratch o distroless de 10-15 MB: builds y pulls casi instantáneos
  • Arranque en milisegundos: redespliegues y reinicios sin interrupción perceptible
  • Concurrencia nativa mediante goroutines: un solo vCPU gestiona miles de conexiones simultáneas
  • Superficie de ataque reducida: sin intérprete ni paquetes de sistema que parchear

Requisitos de hardware y software

Aquí es donde Go brilla: una API Gin sin base de datos cabe en un VPS de 1 vCPU y 1 GB de RAM, y se mantiene holgada. Con PostgreSQL en la misma máquina, apunte a 2 GB para estar cómodo. Ni siquiera necesita Go en el servidor si compila en CI o mediante compilación cruzada local (GOOS=linux GOARCH=amd64 go build). Instale Docker si lo contenedoriza, o nada en absoluto si lanza el binario directamente bajo systemd. Apunte un dominio api.mondomaine.com a la IP del VPS mediante un registro A. 5 GB de disco bastan de sobra.

Despliegue paso a paso

  1. Compilar el binario para Linux (compilación cruzada)

    Desde su equipo, ejecute CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o app .. El flag CGO_ENABLED=0 garantiza un binario 100 % estático, imprescindible para una imagen scratch. Obtiene un ejecutable app listo para funcionar en cualquier Linux.

  2. Construir una imagen Docker mínima

    Redacte un Dockerfile multi-stage: una etapa golang:1.22-alpine para compilar, y después FROM scratch, que copia únicamente el binario y los certificados CA (COPY --from=builder /etc/ssl/certs ...). La imagen final pesa una decena de MB. Exponga el puerto 8080.

  3. Configurar Gin para producción

    Ponga Gin en modo release con gin.SetMode(gin.ReleaseMode) o la variable GIN_MODE=release para desactivar los registros detallados de depuración. Lea el puerto y los secretos desde el entorno (os.Getenv), nunca escritos en duro en el código.

  4. Lanzar el contenedor

    Arranque con docker run -d --restart unless-stopped -p 127.0.0.1:8080:8080 -e GIN_MODE=release monapp:latest. Al enlazar en 127.0.0.1, solo expone Gin al reverse proxy local, no directamente a Internet.

  5. Poner Nginx o Caddy como frontal

    Configure un reverse proxy hacia http://127.0.0.1:8080. Caddy resulta especialmente adecuado aquí: con una simple directiva reverse_proxy localhost:8080, provisiona automáticamente el certificado HTTPS sin Certbot.

  6. Asegurar con TLS

    Con Caddy, el HTTPS es automático en cuanto el dominio apunta al VPS. Con Nginx, ejecute certbot --nginx -d api.mondomaine.com. Compruebe después la cadena TLS con curl -I https://api.mondomaine.com.

Active el profiling pprof de Go detrás de un endpoint protegido: import _ "net/http/pprof" expuesto en un puerto interno accesible únicamente mediante un túnel SSH. Obtiene flame graphs de CPU y de memoria en producción real sin sobrecarga apreciable. Piense también en compilar con -ldflags="-s -w" para reducir un 30 % el tamaño del binario eliminando las tablas de depuración.

Desplegar Go (Gin) en un clic desde el Marketplace ServOrbit

El Marketplace ServOrbit ofrece una plantilla Go (Gin) Stack preconfigurada: Go 1.22+ desde el binario oficial go.dev, Nginx y PostgreSQL 16 se instalan automáticamente en su VPS desde el pedido. Sin sesión SSH para la instalación de base — llega directamente a la etapa de compilar su proyecto y subir el binario. La ficha del marketplace contiene las especificaciones exactas, los casos de uso y una guía de primera conexión.

Despliegue su Go (Gin) Stack en unos minutos

La plantilla Go (Gin) Stack de ServOrbit instala Go 1.22+, Nginx y PostgreSQL 16 en su VPS. Haga la compilación cruzada de su proyecto y despliegue el binario de inmediato.

¿Necesita ayuda?

Consulte nuestro centro de ayuda y nuestra FAQ, o contacte con nuestro equipo: llamada, WhatsApp o correo electrónico. Soporte en francés, inglés y árabe.

Escribir por WhatsAppse abre en una pestaña nueva